GeekAI 部署与运维指南

GeekAI 部署与运维指南

【免费下载链接】geekai AI 助手全套开源解决方案,自带运营管理后台,采用 Go + Vue3 + element-plus 实现。开箱即用。集成了 OpenGPT, Azure, ChatGLM,讯飞星火,文心一言等多个平台的大语言模型。支持 MJ AI 绘画,Stable Diffusion AI 绘画,微博热搜等插件工具。后续还将支持Ai生成PPT/Ai生成数字人视频/Ai生成风格视频/Ai生成万字长篇写作等实用功能 【免费下载链接】geekai 项目地址: https://gitcode.com/yangjian102621/geekai

本文详细介绍了GeekAI的Docker部署方案、Nginx负载均衡配置、数据库初始化与迁移以及日志与监控方案。涵盖了从环境准备、服务配置到高可用性设计的全流程,帮助开发者快速完成GeekAI的部署与运维工作。

Docker 部署与配置

GeekAI 提供了基于 Docker 的部署方案,通过 docker-compose.yaml 文件快速启动和管理服务。本节将详细介绍如何配置和运行 GeekAI 的 Docker 环境。

1. 准备工作

在开始之前,请确保已安装以下工具:

  • Docker Engine(版本 20.10.0 或更高)
  • Docker Compose(版本 2.0.0 或更高)

2. 项目结构

GeekAI 的 Docker 部署目录结构如下:

deploy/
├── conf/
│   ├── config.toml
│   ├── mysql/
│   ├── nginx/
│   └── xxl-job/
├── data/
│   └── mysql/
└── docker-compose.yaml

3. 核心服务配置

以下是 docker-compose.yaml 中定义的核心服务及其配置:

3.1 MySQL 服务
geekai-mysql:
  image: registry.cn-shenzhen.aliyuncs.com/geekmaster/mysql:8.0.33
  ports:
    - '3307:3306'
  volumes:
    - ./conf/mysql/my.cnf:/etc/mysql/my.cnf
    - ./data/mysql/data:/var/lib/mysql
  environment:
    - MYSQL_ROOT_PASSWORD=your_secure_password
3.2 Redis 服务
geekai-redis:
  image: registry.cn-shenzhen.aliyuncs.com/geekmaster/redis:6.0.6
  ports:
    - '6380:6379'
  command: redis-server --requirepass your_secure_password
3.3 后端 API 服务
geekai-api:
  image: registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-api:v4.1.8-amd64
  ports:
    - '5678:5678'
    - '9999:9999'
  volumes:
    - ./conf/config.toml:/var/www/app/config.toml
  depends_on:
    - geekai-mysql
    - geekai-redis
3.4 前端 Web 服务
geekai-web:
  image: registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-web:v4.1.8-amd64
  ports:
    - '8080:8080'
  volumes:
    - ./conf/nginx/nginx.conf:/etc/nginx/nginx.conf

4. 配置文件详解

4.1 config.toml
MysqlDns = "root:your_secure_password@tcp(geekai-mysql:3306)/geekai_plus?charset=utf8mb4&collation=utf8mb4_unicode_ci&parseTime=True&loc=Local"
Redis.Host = "geekai-redis"
Redis.Password = "your_secure_password"
4.2 nginx.conf
client_max_body_size 100M;
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

5. 启动服务

运行以下命令启动所有服务:

docker-compose up -d

6. 验证服务

  • MySQL: 检查端口 3307 是否开放。
  • Redis: 检查端口 6380 是否开放。
  • API: 访问 http://localhost:5678
  • Web: 访问 http://localhost:8080

7. 服务依赖关系

mermaid

通过以上步骤,您可以快速完成 GeekAI 的 Docker 部署与配置。

Nginx 与负载均衡设置

在 GeekAI 的部署架构中,Nginx 作为反向代理和负载均衡的核心组件,承担了请求分发、静态资源服务和 SSL 终端等重要职责。本节将详细介绍如何配置 Nginx 以实现高效的负载均衡和请求路由。

Nginx 基础配置

GeekAI 的 Nginx 基础配置文件位于 deploy/conf/nginx/nginx.conf,其主要功能包括:

  • 定义全局配置(如工作进程数、日志路径等)。
  • 配置 HTTP 模块的基本参数(如 sendfilegzip 等)。
  • 引入子配置文件(如 conf.d/*.conf)。

以下是核心配置的示例:

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 768;
}

http {
    sendfile on;
    tcp_nopush on;
    client_max_body_size 100M;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    gzip on;
    gzip_min_length 1k;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    include /etc/nginx/conf.d/*.conf;
}

负载均衡配置

GeekAI 的负载均衡通过 Nginx 的 upstream 模块实现,支持多台后端服务器的请求分发。以下是一个典型的负载均衡配置示例:

upstream geekai_api {
    server geekai-api:5678;
    server backup-api:5678 backup;
}

server {
    listen 80;
    server_name api.geekai.com;

    location / {
        proxy_pass http://geekai_api;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
负载均衡策略

Nginx 支持多种负载均衡策略,GeekAI 默认使用轮询(Round Robin)策略。其他可选策略包括:

  • 权重轮询:通过 weight 参数分配请求比例。
  • IP 哈希:通过 ip_hash 确保同一客户端的请求始终转发到同一后端。
  • 最少连接:通过 least_conn 选择当前连接数最少的后端。

静态资源服务

Nginx 还负责提供前端静态资源(如 HTML、CSS、JS 文件)。以下是一个静态资源服务的配置示例:

server {
    listen 8080;
    server_name geekai.com;

    location / {
        root /var/www/geekai-web;
        index index.html;
    }

    location /static/ {
        alias /var/www/app/static/;
    }
}

高可用与健康检查

为确保服务的高可用性,Nginx 支持对后端服务进行健康检查。GeekAI 的 Docker Compose 文件中已配置了健康检查逻辑:

healthcheck:
  test: ['CMD', 'curl', '-f', 'http://localhost:5678/health']
  interval: 5s
  timeout: 10s
  retries: 3

性能优化建议

  1. 启用缓存:通过 proxy_cache 缓存动态内容,减少后端压力。
  2. 调整超时:根据实际业务需求设置 proxy_connect_timeoutproxy_read_timeout
  3. 日志分割:使用 logrotate 定期分割日志文件,避免日志文件过大。

通过以上配置,GeekAI 的 Nginx 能够高效地处理请求分发和静态资源服务,确保系统的稳定性和可扩展性。

数据库初始化与迁移

GeekAI 的数据库初始化与迁移是项目部署过程中的关键步骤。本节将详细介绍如何完成数据库的初始化、表结构创建以及数据迁移,确保系统能够正常运行。

数据库初始化

GeekAI 使用 MySQL 作为主要数据库,所有表结构和初始数据都通过 SQL 脚本完成初始化。以下是数据库初始化的步骤:

  1. 准备数据库环境
    确保已安装 MySQL 服务器,并创建了一个空数据库用于 GeekAI。例如:

    CREATE DATABASE geekai CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
  2. 执行初始化脚本
    项目提供了多个版本的 SQL 初始化脚本,位于 database/ 目录下。选择最新版本的脚本执行:

    mysql -u username -p geekai < database/geekai_plus-v4.1.8.sql
    
  3. 验证表结构
    执行完成后,检查数据库中是否成功创建了所有表:

    USE geekai;
    SHOW TABLES;
    

数据迁移

当项目升级或需要从旧版本迁移数据时,可以使用以下方法:

  1. 增量迁移脚本
    项目提供了增量迁移脚本,位于 database/update-*.sql 文件中。例如,从 v4.1.7 升级到 v4.1.8

    mysql -u username -p geekai < database/update-v4.1.8.sql
    
  2. 手动迁移
    如果需要自定义迁移,可以编写 SQL 脚本或使用 ORM 工具(如 GORM)完成数据迁移。以下是一个示例:

    // 使用 GORM 迁移数据
    db.AutoMigrate(&models.User{}, &models.Session{}, &models.Order{})
    

数据库表结构示例

以下是部分核心表的结构说明:

表名描述关键字段
users用户信息表id, username, email
sessions会话记录表id, user_id, content
orders订单信息表id, user_id, amount

流程图:数据库初始化流程

mermaid

注意事项

  1. 备份数据
    在执行迁移或初始化前,务必备份现有数据库,防止数据丢失。

  2. 版本兼容性
    确保迁移脚本与当前项目版本兼容,避免因版本不匹配导致的问题。

  3. 性能优化
    对于大型数据库,建议在低峰期执行迁移操作,减少对系统性能的影响。

日志与监控方案

GeekAI 作为一个功能丰富的 AI 助手解决方案,其日志与监控方案是确保系统稳定性和可维护性的关键部分。通过合理的日志记录和监控机制,可以快速定位问题、优化性能,并为运维提供数据支持。以下将详细介绍 GeekAI 的日志与监控实现方案。

日志系统设计

GeekAI 的日志系统基于 zap 高性能日志库实现,支持多级别日志记录(如 InfoDebugError 等),并提供了灵活的日志输出配置。日志文件默认存储在 logs/app.log 中,同时支持通过环境变量 LOG_LEVEL 动态调整日志级别。

日志级别与输出

日志级别从低到高分为:

  • Debug:用于调试信息,记录详细的运行状态。
  • Info:记录常规操作信息,如服务启动、任务处理等。
  • Error:记录错误信息,如 API 调用失败、数据库操作异常等。

日志输出格式为 JSON,便于后续分析和处理。以下是一个日志记录的代码示例:

logger.Infof("http://%s", s.Config.Listen)
logger.Errorf("register install info failed: %v", err)
日志文件管理

日志文件按天分割,避免单个文件过大。可以通过配置调整日志文件的存储路径和分割策略。例如:

Filename:   "logs/app.log",

监控方案

GeekAI 的监控方案主要通过以下方式实现:

  1. 关键指标记录:如用户登录时间、IP 地址、API 调用频率等。
  2. 任务状态监控:记录 AI 任务(如 DALL-E 绘画、MJ 任务等)的执行状态和耗时。
  3. 异常告警:通过日志系统捕获错误信息,并结合第三方工具(如 Prometheus)实现告警。
用户行为监控

用户登录行为会被记录到数据库中,包括登录时间、IP 地址和地理位置信息。例如:

LastLoginAt int64    `json:"last_login_at"` // 最后登录时间
LastLoginIp string   `json:"last_login_ip"` // 最后登录 IP
任务监控

AI 任务的执行状态和结果会被详细记录。例如,DALL-E 任务的日志如下:

logger.Infof("add a new DALL-E task to the task list: %+v", task)
logger.Errorf("error with image task: %v", err)

日志与监控流程图

以下是一个简化的日志与监控流程的流程图: mermaid

总结

GeekAI 的日志与监控方案通过高性能日志库和灵活的监控机制,确保了系统的可观测性和稳定性。开发者可以根据实际需求扩展日志记录和监控功能,进一步提升系统的运维效率。

【免费下载链接】geekai AI 助手全套开源解决方案,自带运营管理后台,采用 Go + Vue3 + element-plus 实现。开箱即用。集成了 OpenGPT, Azure, ChatGLM,讯飞星火,文心一言等多个平台的大语言模型。支持 MJ AI 绘画,Stable Diffusion AI 绘画,微博热搜等插件工具。后续还将支持Ai生成PPT/Ai生成数字人视频/Ai生成风格视频/Ai生成万字长篇写作等实用功能 【免费下载链接】geekai 项目地址: https://gitcode.com/yangjian102621/geekai

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值