AstraSurge / gpteams

GPTeams is a third-party client tailored for ChatGPT, based on the OpenAI API, designed to provide users with team collaboration features not covered by the official OPEN AI ChatGPT website.
https://GPTeams.AstraSurge.com
MIT License
105 stars 34 forks source link

虚拟机部署文档 #16

Open Pinkpiglet opened 1 year ago

Pinkpiglet commented 1 year ago

环境变量

前端以下变量是可选设置的: VITE_APP_NAME:应用名称,你可以将其更改为你想要的名称。修改后,名称会在各个地方(例如 HTML 标题、登录界面等)显示。

后端以下变量是必需设置的: GOOGLE_APPLICATION_CREDENTIALS_JSON:JSON 字符串格式的私钥文件, 必需。请查看 Firebase 获取该信息。 示例: '{"type": "service_account", "project_id": "xxx", "private_key_id": "xxx", "private_key": "xxx", "client_email": "xxx", "client_id": "xxx", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "xxx"}' ROOT_ACCOUNT: 系统管理员账号 如果你通过 google 登录,那这里填 google 账号对应的邮箱。注意,如果你通过电话号码登录,这里需要填写你的国家呼叫代码+电话号码,如 +8613498888888。 Firebase 中获取 Firebase 项目中获取配置信息: VITE_FIREBASE_API_KEY VITE_FIREBASE_AUTH_DOMAIN VITE_FIREBASE_PROJECT_ID VITE_FIREBASE_STORAGE_BUCKET VITE_FIREBASE_MESSAGING_SENDER_ID VITE_FIREBASE_APP_ID VITE_FIREBASE_MEASUREMENT_ID 开通相应的服务 Cloud Firestore AP申请:https://console.developers.google.com/apis/api/firestore.googleapis.com/overview?project=填写自己的messagingSenderId Datastore 申请连接:https://console.cloud.google.com/datastore/setup?project=填写自己的projectId 其他变量请参阅 chatgpt-web 原项目的 README。 注意:最好不要使用其他变量,其他变量不受 GPTeams 保护,且可能在未来的版本删除。

前端 下载nginx稳定版 将下载的安装包上传至服务器 解压压缩包tar -zxvf nginx-xx.xx.xx.tar.gz 进入解压的目录赋予执行权限chmod +x configure

安装nginx依赖yum -y install gcc gcc-c++ autoconf automake make pcre pcre-devel zlib zlib-devel install pcre pcre-devel zlib zlib-devel openssl openssl-devel 编译nginx ./configure --prefix=安装路径 --with-openssl=/usr/bin/openssl --with-http_stub_status_module --with-http_ssl_module 安装nginx make && make install 进入安装目录,打开nginx.conf,增加include /www/vhost/nginx/*.conf;

进入安装目录,打开nginx.conf,增加include /www/vhost/nginx/*.conf; 在目录中新增nginx配置文件后上传编译后的前端包并重启nginx server { listen 80; server_name 域名; index index.php index.html index.htm default.php default.htm default.html; root 前端地址;

PROXY-START/

location /api { proxy_pass http://127.0.0.1:3002/api; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_http_version 1.1;

proxy_hide_header Upgrade;

add_header X-Cache $upstream_cache_status;
    #Set Nginx Cache
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
    expires 1m;
}
proxy_ignore_headers Set-Cookie Cache-Control expires;
proxy_cache cache_one;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 301 302 1m;

}

PROXY-END/

#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
{
    return 404;
}

#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
    allow all;
}

#禁止在证书验证目录放入敏感文件
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
    return 403;
}

access_log  /www/wwwlogs/域名.log;
error_log  /www/wwwlogs/域名.error.log;

} 后端 node.js 版本<=16、17、18。 安装执行curl -fsSL https://rpm.nodesource.com/setup_lts.x | bash - && yum install -y nodejs 查看安装版本node -v 进入后端路径,安装依赖 npm install 执行npm run dev 启动开发模式 测试后端是否正常工作,执行telnet localhost 3002

suikodev commented 1 year ago

感谢你的贡献,条理很清晰,我之后会参考你的文档撰写 node.js 部署的 wiki。

这里有几点可以改良一下:

  1. 服务端安装 node 环境时使用 nvm 好一点。
  2. 后端的服务直接使用 npm run dev 启动是不太合适的。正确来讲应该至少用 pm2,当然,这里是我的问题,我没有在后端的 package.json 里提供 node.js 生产环境部署脚本。
Pinkpiglet commented 1 year ago

@suikodev 大佬补充 提供的大概部署方法