GEO 源码部署搭建详细操作教程(2026 最新版)

本教程以云罗 GEO 3.0 / 抖去推 GEO (主流 GEO 优化系统)为例,提供从环境准备到生产上线的完整部署流程,包含Docker 容器化部署 (推荐)和宝塔面板快速部署两种方案,兼顾新手与企业级需求。


一、部署前准备

1.1 硬件配置要求

表格

环境类型 CPU 内存 硬盘 网络 备注
测试环境 2 核 4GB 20GB SSD 100Mbps 最低配置,仅用于功能测试
生产环境 4 核 + 8GB+ 50GB+ SSD 1Gbps 推荐配置,支持高并发访问
大规模部署 8 核 + 16GB+ 100GB+ SSD 阵列 10Gbps 适配大数据量与高并发场景
1.2 软件环境要求

表格

组件 版本要求 用途
操作系统 CentOS 7/8、Ubuntu 20.04+/24.04 LTS 推荐 Linux 系统,兼容性更优
Docker 20.10+ 容器化部署核心工具
Docker Compose 2.10+ 多容器编排管理
Git 2.30+ 源码拉取工具
MySQL 8.0+ 主数据库(存储业务数据)
Redis 6.2+ 缓存数据库(支持 GEO 数据类型)
Nginx 1.21+ 反向代理与负载均衡
1.3 必备资源
  1. 服务器(公网 IP,开放 80/443/3306/6379 端口)
  2. 已备案域名(生产环境必需)
  3. GEO 源码包(官方授权获取)
  4. HTTPS 证书(Let's Encrypt 免费证书或商业证书)

二、Docker 容器化部署方案(推荐)

2.1 安装 Docker 与 Docker Compose

bash

运行

复制代码
# 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 [arch=amd64] 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 --version
2.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.yml
2.3 配置系统参数(关键步骤)
  1. 修改.env 文件(核心配置):

    bash

    运行

    复制代码
    vi .env

    ini

    复制代码
    # 基础配置
    APP_NAME=YunLuoGeo
    APP_ENV=production  # 生产环境设为production,测试环境设为local
    APP_KEY=base64:your_application_key  # 执行php artisan key:generate生成
    APP_DEBUG=false  # 生产环境设为false
    APP_URL=https://yourdomain.com  # 替换为你的域名
    
    # 数据库配置
    DB_CONNECTION=mysql
    DB_HOST=mysql
    DB_PORT=3306
    DB_DATABASE=yunluogeo
    DB_USERNAME=geo_user
    DB_PASSWORD=your_secure_password  # 自定义强密码
    
    # Redis配置
    REDIS_HOST=redis
    REDIS_PASSWORD=null
    REDIS_PORT=6379
    
    # GEO核心配置
    GEO_API_KEY=your_geo_api_key  # 官方授权密钥
    GEO_MAX_DISTANCE=100  # 最大搜索距离(公里)
    GEO_DEFAULT_RADIUS=5  # 默认搜索半径(公里)
  2. 修改 docker-compose.yml

    bash

    运行

    复制代码
    vi docker-compose.yml

    yaml

    复制代码
    version: '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: always
2.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. 或使用Let's 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.pem
2.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 --class=GeoSeed
php artisan geo:import:geoip
php artisan geo:import:keywords

# 7. 清除缓存
php artisan cache:clear
php artisan config:clear
php artisan route:clear

# 8. 退出容器
exit
2.6 访问系统与验证功能
  1. 打开浏览器访问:https://yourdomain.com
  2. 输入管理员账号密码(默认 admin/admin123,建议立即修改)
  3. 验证核心功能:
    • 位置搜索测试
    • 数据导入导出
    • API 接口调用测试(https://yourdomain.com/api/geo/search?lat=39.90&lng=116.40&radius=5

三、宝塔面板快速部署方案(适合新手)

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 配置服务器环境
  1. 登录宝塔面板,安装 LNMP 环境:

    • Nginx 1.21+
    • MySQL 8.0+
    • PHP 8.1+(需安装 fileinfo、redis 扩展)
    • Redis 6.2+
  2. 开放端口:在面板安全设置中开放 80、443、3306、6379 端口

3.3 上传源码与配置站点
  1. 新建站点

    • 域名:填写已备案域名
    • 数据库:创建 MySQL 数据库(记录账号密码)
    • PHP 版本:选择 8.1+
  2. 上传源码

    • 将 GEO 源码包上传到站点根目录
    • 解压源码,设置运行目录为public
  3. 配置伪静态:选择 ThinkPHP 规则并保存

3.4 系统安装与初始化
  1. 访问域名进入安装向导
  2. 填写数据库信息(宝塔创建的数据库账号密码)
  3. 设置管理员账号密码(建议强密码)
  4. 完成 GeoIP 地域数据库、关键词库导入
  5. 登录系统,验证功能正常

四、生产环境优化与安全加固

4.1 性能优化
  1. 数据库优化

    • 开启 MySQL 慢查询日志,优化 SQL 语句
    • 为地理位置字段添加空间索引
    • 配置 MySQL 主从复制,实现读写分离
  2. Redis 优化

    • 设置最大内存策略(maxmemory-policy allkeys-lru
    • 开启持久化(RDB+AOF 混合模式)
    • 配置连接池参数,提升并发性能
  3. Nginx 优化

    • 开启 gzip 压缩
    • 配置缓存策略
    • 启用 HTTP/2 协议
4.2 安全加固
  1. 修改默认端口

    • MySQL 端口改为非 3306
    • Redis 端口改为非 6379,并设置密码
  2. 权限控制

    • 限制数据库用户仅能访问指定数据库
    • 设置网站目录权限为 755,文件权限为 644
    • 禁用 PHP 危险函数(exec、system 等)
  3. 数据备份

    • 配置定时备份脚本,每日备份数据库
    • 备份文件异地存储
    • 定期测试恢复流程

五、常见问题与避坑指南

  1. 编译错误undefined reference to xxx

    • 原因:依赖库版本不兼容
    • 解决:核对 GEO 源码文档中的依赖版本要求,重新安装对应版本的库
  2. 连接数据库失败

    • 原因:数据库配置错误、网络不通、权限问题
    • 解决:
      • 检查.env 文件中的数据库配置
      • 确保数据库容器正常运行
      • 验证数据库用户权限
  3. GEO 搜索功能异常

    • 原因:GeoIP 数据库未导入、Redis 未启用 GEO 功能
    • 解决:
      • 执行php artisan geo:import:geoip导入 GeoIP 数据库
      • 确保 Redis 版本≥6.2,且配置正确
  4. 性能问题

    • 原因:服务器配置不足、缓存未启用、SQL 语句未优化
    • 解决:
      • 升级服务器配置
      • 启用 Redis 缓存
      • 优化慢查询 SQL 语句

六、总结与下一步

本教程提供了两种主流的 GEO 源码部署方案,Docker 容器化部署适合企业级生产环境,宝塔面板部署适合新手快速上手。部署完成后,建议:

  1. 进行全面的功能测试和压力测试
  2. 配置监控系统(如 Prometheus+Grafana),实时监控服务状态
  3. 定期更新系统和依赖库,修复安全漏洞
  4. 参考官方文档,深入学习 GEO 系统的高级功能和 API 接口
相关推荐
Teable任意门互动2 小时前
多维表格本地化部署实践解析,企业如何实现数据自主可控路径
数据库·低代码·信息可视化·开源·数据库开发
铭keny2 小时前
开源工业组态 FUXA 实战:嵌入第三方系统 + 缩放拖动 + 隐藏菜单后找回编辑页
开源
墨染天姬2 小时前
【AI】2026年4月开源模型排行榜
人工智能·开源
Cosolar3 小时前
文生图竞技场变局:GPT-Image-2 以 1512 分登顶,多模态格局重塑
人工智能·开源·全栈
博.闻广见3 小时前
AI_线性代数-6.PCA降维详解
人工智能·线性代数
EasyDSS3 小时前
私有化视频会议系统/视频直播点播EasyDSS一体化音视频平台打造全链路企业培训解决方案
音视频
果汁华3 小时前
Dify:让AI应用开发像搭积木一样简单的开源平台
人工智能·开源
lularible3 小时前
PTP协议精讲(2.17):追踪光速的脚步——White Rabbit与亚纳秒同步
网络·网络协议·开源·嵌入式·ptp
特立独行的猫a3 小时前
HarmonyOS鸿蒙PC开源QT软件移植:移植开源文本编辑器 NotePad--(Ndd)到鸿蒙 PC实践总结
qt·开源·notepad++·harmonyos·notepad--·鸿蒙pc