From 3ef6d3fe63cba267d877d444506efcfea4d9f934 Mon Sep 17 00:00:00 2001 From: archer <545436317@qq.com> Date: Mon, 8 May 2023 10:25:17 +0800 Subject: [PATCH] deploy docs --- README.md | 89 +++++++++++++++++++++-------------- deploy/docker-compose/init.sh | 1 + src/pages/chat/index.tsx | 30 ++++++------ 3 files changed, 71 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 6b043b01d..9950e34b4 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ Fast GPT 允许你使用自己的 openai API KEY 来快速的调用 openai 接 ## 开发 +**第一次开发,请先看下方部署,需要部署数据库.开发的环境变量和部署的环境变量几乎相同,仅 IP 地址不一样.所以部署好后,直接把部署文件的环境变量复制过来,改下 Ip 就 OK 了。** + **配置环境变量** 复制.env.template 文件,生成一个.env.local 环境变量文件夹,修改.env.local 内容,参考下方: @@ -18,31 +20,24 @@ AXIOS_PROXY_PORT=7890 # openai 中转连接(可选) OPENAI_BASE_URL=https://api.openai.com/v1 OPENAI_BASE_URL_AUTH=可选的安全凭证 -# 是否开启队列任务。 1-开启,0-关闭(请求 parentUrl 去执行任务,单机时直接填1) queueTask=1 parentUrl=https://hostname/api/openapi/startEvents -# 发送邮箱验证码配置。参考 nodeMail 获取参数,自行百度。 MY_MAIL=xxx@qq.com MAILE_CODE=xxx -# 阿里短信服务(邮箱和短信至少二选一) aliAccessKeyId=xxx aliAccessKeySecret=xxx aliSignName=xxx aliTemplateCode=SMS_xxx -# token(随便填,作为登录凭证) TOKEN_KEY=xxx -# openai key OPENAIKEY=sk-xxx -# mongo连接地址 -MONGODB_URI=mongodb://username:password@0.0.0.0:27017/test?authSource=admin -# mongo数据库名称 +# 和mongo镜像的username,password对应 +MONGODB_URI=mongodb://username:password@服务器IP:27017/test?authSource=admin MONGODB_NAME=xxx -# pg 数据库相关内容,和 docker-compose pg 部分对上 -PG_HOST=0.0.0.0 -PG_PORT=8102 -PG_USER=fastgpt -PG_PASSWORD=1234 -PG_DB_NAME=fastgpt +PG_HOST=服务器IP +PG_PORT=8100 +PG_USER=fastgpt # POSTGRES_USER +PG_PASSWORD=1234 # POSTGRES_PASSWORD +PG_DB_NAME=fastgpt # POSTGRES_DB ``` **运行** @@ -55,13 +50,21 @@ pnpm dev ### 代理环境(国外服务器可忽略) +选择一个即可。 + 1. [clash 方案](./docs/proxy/clash.md) - 仅需一台服务器(需要有 clash) 2. [nginx 方案](./docs/proxy/nginx.md) - 需要一台国外服务器 3. [cloudflare 方案](./docs/proxy/cloudflare.md) - 需要有域名(每日免费 10w 次代理请求) ### docker 部署 -#### 1. 安装 docker 和 docker-compose +#### 1. 准备 + +> 1. 服务器开通 80 端口。用代理的话,对应的代理端口也需要打开。 +> 2. QQ 邮箱 Code:进入 QQ 邮箱 -> 账号 -> 申请 SMTP 账号 +> 3. 有域名的准备好 SSL 证书 + +#### 2. 安装 docker 和 docker-compose 这个不同系统略有区别,百度安装下。验证安装成功后进行下一步。下面给出一个例子: @@ -75,13 +78,14 @@ sudo chmod +x /usr/local/bin/docker-compose # 验证安装 docker -v docker-compose -v +# 如果docker-compose运行不了,可以把 deploy/docker-compose 文件复制到服务器,然后在 docker-compose 文件夹里执行 sh init.sh。会把docker-compose文件复制到对应目录。 ``` #### 2. 创建 3 个初始化文件 手动创建或者直接把 deploy 里内容复制过去 -**/root/fast-gpt/pg/init.sql** +**/root/fastgpt/pg/init.sql PG 数据库初始化** ```sql set -e @@ -105,7 +109,7 @@ CREATE INDEX modelData_modelId_index ON modelData USING HASH (model_id); EOSQL ``` -**/root/fast-gpt/nginx/nginx.conf** +**/root/fastgpt/nginx/nginx.conf Nginx 配置** ```conf user nginx; @@ -147,6 +151,7 @@ http { server { listen 443 ssl; + # 改成自己的域名和证书 server_name docgpt.ahapocket.cn; ssl_certificate /ssl/docgpt.pem; ssl_certificate_key /ssl/docgpt.key; @@ -167,7 +172,7 @@ http { } ``` -**/root/fast-gpt/docker-compose.yml** +**/root/fastgpt/docker-compose.yml 核心部署文件** ```yml version: '3.3' @@ -178,26 +183,35 @@ services: restart: always container_name: fast-gpt environment: - # - AXIOS_PROXY_HOST=127.0.0.1 - # - AXIOS_PROXY_PORT=7890 - # - OPENAI_BASE_URL=https://api.openai.com/v1 - # - OPENAI_BASE_URL_AUTH=可选的安全凭证 + # proxy(可选) + - AXIOS_PROXY_HOST=127.0.0.1 + - AXIOS_PROXY_PORT=7890 + # openai 中转连接(可选) + - OPENAI_BASE_URL=https://api.openai.com/v1 + - OPENAI_BASE_URL_AUTH=可选的安全凭证 + # 是否开启队列任务。 1-开启,0-关闭(请求 parentUrl 去执行任务,单机时直接填1) + - queueTask=1 + - parentUrl=https://hostname/api/openapi/startEvents + # 发送邮箱验证码配置。用的是QQ邮箱。参考 nodeMail 获取MAILE_CODE,自行百度。 - MY_MAIL=xxxx@qq.com - MAILE_CODE=xxxx + # 阿里短信服务(邮箱和短信至少二选一) - aliAccessKeyId=xxxx - aliAccessKeySecret=xxxx - aliSignName=xxxxx - aliTemplateCode=SMS_xxxx + # token加密凭证(随便填,作为登录凭证) - TOKEN_KEY=xxxx - - queueTask=1 - - parentUrl=https://hostname/api/openapi/startEvents + # 和下方mongo镜像的username,password对应 - MONGODB_URI=mongodb://username:passsword@0.0.0.0:27017/?authSource=admin - MONGODB_NAME=xxx - PG_HOST=0.0.0.0 - PG_PORT=8100 - - PG_USER=fastgpt - - PG_PASSWORD=1234 - - PG_DB_NAME=fastgpt + # 和下方PG镜像对应. + - PG_USER=fastgpt # POSTGRES_USER + - PG_PASSWORD=1234 # POSTGRES_PASSWORD + - PG_DB_NAME=fastgpt # POSTGRES_DB + # openai api key - OPENAIKEY=sk-xxxxx nginx: image: nginx:alpine3.17 @@ -205,10 +219,12 @@ services: restart: always network_mode: host volumes: - - /root/fast-gpt/nginx/nginx.conf:/etc/nginx/nginx.conf:ro - - /root/fast-gpt/nginx/logs:/var/log/nginx - - /root/fast-gpt/nginx/ssl/docgpt.key:/ssl/docgpt.key - - /root/fast-gpt/nginx/ssl/docgpt.pem:/ssl/docgpt.pem + # 刚创建的文件 + - /root/fastgpt/nginx/nginx.conf:/etc/nginx/nginx.conf:ro + - /root/fastgpt/nginx/logs:/var/log/nginx + # https证书,没有的话不填,对应的nginx.conf也要修改 + - /root/fastgpt/nginx/ssl/docgpt.key:/ssl/docgpt.key + - /root/fastgpt/nginx/ssl/docgpt.pem:/ssl/docgpt.pem pg: image: ankane/pgvector container_name: pg @@ -216,12 +232,14 @@ services: ports: - 8100:5432 environment: + # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果 - POSTGRES_USER=fastgpt - POSTGRES_PASSWORD=1234 - POSTGRES_DB=fastgpt volumes: - - /root/fast-gpt/pg/data:/var/lib/postgresql/data - - /root/fast-gpt/pg/init.sql:/docker-entrypoint-initdb.d/init.sh + # 刚创建的文件 + - /root/fastgpt/pg/init.sql:/docker-entrypoint-initdb.d/init.sh + - /root/fastgpt/pg/data:/var/lib/postgresql/data - /etc/localtime:/etc/localtime:ro mongodb: image: mongo:6.0.4 @@ -230,11 +248,12 @@ services: ports: - 27017:27017 environment: + # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果 - MONGO_INITDB_ROOT_USERNAME=username - MONGO_INITDB_ROOT_PASSWORD=password volumes: - - /root/fast-gpt/mongo/data:/data/db - - /root/fast-gpt/mongo/logs:/var/log/mongodb + - /root/fastgpt/mongo/data:/data/db + - /root/fastgpt/mongo/logs:/var/log/mongodb - /etc/localtime:/etc/localtime:ro ``` diff --git a/deploy/docker-compose/init.sh b/deploy/docker-compose/init.sh index 6894fe388..d3111257b 100644 --- a/deploy/docker-compose/init.sh +++ b/deploy/docker-compose/init.sh @@ -1 +1,2 @@ +cp ./docker-compose /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose \ No newline at end of file diff --git a/src/pages/chat/index.tsx b/src/pages/chat/index.tsx index 6790116d8..203d9f5bf 100644 --- a/src/pages/chat/index.tsx +++ b/src/pages/chat/index.tsx @@ -563,20 +563,22 @@ const Chat = ({ router.replace(`/chat?modelId=${modelId}`)}> 新对话 - { - try { - setIsLoading(true); - await onclickDelHistory(chatData.chatId); - router.replace(`/chat`); - } catch (err) { - console.log(err); - } - setIsLoading(false); - }} - > - 删除记录 - + {chatId && ( + { + try { + setIsLoading(true); + await onclickDelHistory(chatData.chatId); + router.replace(`/chat`); + } catch (err) { + console.log(err); + } + setIsLoading(false); + }} + > + 删除记录 + + )} onclickExportChat('html')}>导出HTML格式 onclickExportChat('pdf')}>导出PDF格式 onclickExportChat('md')}>导出Markdown格式