本教程以云罗 GEO 3.0 / 抖去推 GEO主流 GEO 优化系统为例提供从环境准备到生产上线的完整部署流程包含Docker 容器化部署推荐和宝塔面板快速部署两种方案兼顾新手与企业级需求。一、部署前准备1.1 硬件配置要求表格环境类型CPU内存硬盘网络备注测试环境2 核4GB20GB SSD100Mbps最低配置仅用于功能测试生产环境4 核 8GB50GB SSD1Gbps推荐配置支持高并发访问大规模部署8 核 16GB100GB SSD 阵列10Gbps适配大数据量与高并发场景1.2 软件环境要求表格组件版本要求用途操作系统CentOS 7/8、Ubuntu 20.04/24.04 LTS推荐 Linux 系统兼容性更优Docker20.10容器化部署核心工具Docker Compose2.10多容器编排管理Git2.30源码拉取工具MySQL8.0主数据库存储业务数据Redis6.2缓存数据库支持 GEO 数据类型Nginx1.21反向代理与负载均衡1.3 必备资源服务器公网 IP开放 80/443/3306/6379 端口已备案域名生产环境必需GEO 源码包官方授权获取HTTPS 证书Lets Encrypt 免费证书或商业证书二、Docker 容器化部署方案推荐2.1 安装 Docker 与 Docker Composebash运行# 1. 安装依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # CentOS sudo apt update sudo apt install -y apt-transport-https ca-certificates curl software-properties-common # Ubuntu # 2. 添加Docker源 curl -fsSL https://download.docker.com/linux/centos/docker-ce.repo | sudo tee /etc/yum.repos.d/docker-ce.repo # CentOS curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg # Ubuntu sudo add-apt-repository deb [archamd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable # Ubuntu # 3. 安装Docker sudo yum install -y docker-ce docker-ce-cli containerd.io # CentOS sudo apt install -y docker-ce docker-ce-cli containerd.io # Ubuntu # 4. 启动Docker并设置开机自启 sudo systemctl start docker sudo systemctl enable docker # 5. 安装Docker Compose sudo curl -L https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose # 6. 验证安装 docker --version docker-compose --version2.2 拉取 GEO 源码与配置文件bash运行# 1. 创建项目目录 mkdir -p /data/geo cd /data/geo # 2. 克隆源码替换为实际仓库地址 git clone https://github.com/yunluogeo/geo-core-3.0.git . # 3. 复制配置文件模板 cp .env.example .env cp docker-compose.example.yml docker-compose.yml2.3 配置系统参数关键步骤修改.env 文件核心配置bash运行vi .envini# 基础配置 APP_NAMEYunLuoGeo APP_ENVproduction # 生产环境设为production测试环境设为local APP_KEYbase64:your_application_key # 执行php artisan key:generate生成 APP_DEBUGfalse # 生产环境设为false APP_URLhttps://yourdomain.com # 替换为你的域名 # 数据库配置 DB_CONNECTIONmysql DB_HOSTmysql DB_PORT3306 DB_DATABASEyunluogeo DB_USERNAMEgeo_user DB_PASSWORDyour_secure_password # 自定义强密码 # Redis配置 REDIS_HOSTredis REDIS_PASSWORDnull REDIS_PORT6379 # GEO核心配置 GEO_API_KEYyour_geo_api_key # 官方授权密钥 GEO_MAX_DISTANCE100 # 最大搜索距离公里 GEO_DEFAULT_RADIUS5 # 默认搜索半径公里修改 docker-compose.ymlbash运行vi docker-compose.ymlyamlversion: 3.8 services: web: build: . ports: - 80:80 - 443:443 volumes: - ./nginx/ssl:/etc/nginx/ssl # 挂载HTTPS证书 - ./storage:/var/www/html/storage depends_on: - mysql - redis restart: always mysql: image: mysql:8.0 volumes: - ./mysql/data:/var/lib/mysql - ./mysql/conf:/etc/mysql/conf.d environment: MYSQL_ROOT_PASSWORD: your_root_password MYSQL_DATABASE: yunluogeo MYSQL_USER: geo_user MYSQL_PASSWORD: your_secure_password restart: always redis: image: redis:6.2-alpine volumes: - ./redis/data:/data command: redis-server --appendonly yes restart: always2.4 部署 HTTPS 证书bash运行# 1. 创建证书目录 mkdir -p /data/geo/nginx/ssl # 2. 复制证书文件替换为你的证书路径 cp /path/to/your/cert.pem /data/geo/nginx/ssl/ cp /path/to/your/key.pem /data/geo/nginx/ssl/ # 3. 或使用Lets Encrypt生成免费证书 sudo apt install -y certbot # Ubuntu sudo yum install -y certbot # CentOS certbot certonly --standalone -d yourdomain.com cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem /data/geo/nginx/ssl/cert.pem cp /etc/letsencrypt/live/yourdomain.com/privkey.pem /data/geo/nginx/ssl/key.pem2.5 启动服务与初始化系统bash运行# 1. 构建并启动容器 docker-compose up -d --build # 2. 验证容器状态确保所有服务为Up状态 docker-compose ps # 3. 进入Web容器执行初始化 docker-compose exec web bash # 4. 生成应用密钥 php artisan key:generate # 5. 数据库迁移创建表结构 php artisan migrate --seed # 6. 导入初始数据行业关键词库、GeoIP数据库 php artisan db:seed --classGeoSeed php artisan geo:import:geoip php artisan geo:import:keywords # 7. 清除缓存 php artisan cache:clear php artisan config:clear php artisan route:clear # 8. 退出容器 exit2.6 访问系统与验证功能打开浏览器访问https://yourdomain.com输入管理员账号密码默认 admin/admin123建议立即修改验证核心功能位置搜索测试数据导入导出API 接口调用测试https://yourdomain.com/api/geo/search?lat39.90lng116.40radius5三、宝塔面板快速部署方案适合新手3.1 安装宝塔面板bash运行# CentOS系统 yum install -y wget wget -O install.sh http://download.bt.cn/install/install_6.0.sh sh install.sh # Ubuntu/Debian系统 wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh sudo bash install.sh安装完成后记录面板地址、用户名和密码。3.2 配置服务器环境登录宝塔面板安装 LNMP 环境Nginx 1.21MySQL 8.0PHP 8.1需安装 fileinfo、redis 扩展Redis 6.2开放端口在面板安全设置中开放 80、443、3306、6379 端口3.3 上传源码与配置站点新建站点域名填写已备案域名数据库创建 MySQL 数据库记录账号密码PHP 版本选择 8.1上传源码将 GEO 源码包上传到站点根目录解压源码设置运行目录为public配置伪静态选择 ThinkPHP 规则并保存3.4 系统安装与初始化访问域名进入安装向导填写数据库信息宝塔创建的数据库账号密码设置管理员账号密码建议强密码完成 GeoIP 地域数据库、关键词库导入登录系统验证功能正常四、生产环境优化与安全加固4.1 性能优化数据库优化开启 MySQL 慢查询日志优化 SQL 语句为地理位置字段添加空间索引配置 MySQL 主从复制实现读写分离Redis 优化设置最大内存策略maxmemory-policy allkeys-lru开启持久化RDBAOF 混合模式配置连接池参数提升并发性能Nginx 优化开启 gzip 压缩配置缓存策略启用 HTTP/2 协议4.2 安全加固修改默认端口MySQL 端口改为非 3306Redis 端口改为非 6379并设置密码权限控制限制数据库用户仅能访问指定数据库设置网站目录权限为 755文件权限为 644禁用 PHP 危险函数exec、system 等数据备份配置定时备份脚本每日备份数据库备份文件异地存储定期测试恢复流程五、常见问题与避坑指南编译错误undefined reference to xxx原因依赖库版本不兼容解决核对 GEO 源码文档中的依赖版本要求重新安装对应版本的库连接数据库失败原因数据库配置错误、网络不通、权限问题解决检查.env 文件中的数据库配置确保数据库容器正常运行验证数据库用户权限GEO 搜索功能异常原因GeoIP 数据库未导入、Redis 未启用 GEO 功能解决执行php artisan geo:import:geoip导入 GeoIP 数据库确保 Redis 版本≥6.2且配置正确性能问题原因服务器配置不足、缓存未启用、SQL 语句未优化解决升级服务器配置启用 Redis 缓存优化慢查询 SQL 语句六、总结与下一步本教程提供了两种主流的 GEO 源码部署方案Docker 容器化部署适合企业级生产环境宝塔面板部署适合新手快速上手。部署完成后建议进行全面的功能测试和压力测试配置监控系统如 PrometheusGrafana实时监控服务状态定期更新系统和依赖库修复安全漏洞参考官方文档深入学习 GEO 系统的高级功能和 API 接口