Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

虚拟机部署文档 #16

Open
Pinkpiglet opened this issue Mar 27, 2023 · 2 comments
Open

虚拟机部署文档 #16

Pinkpiglet opened this issue Mar 27, 2023 · 2 comments
Labels
documentation Improvements or additions to documentation

Comments

@Pinkpiglet
Copy link

Pinkpiglet commented Mar 27, 2023

环境变量

前端以下变量是可选设置的:
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

@Pinkpiglet Pinkpiglet changed the title 虚拟部署文档 虚拟机部署文档 Mar 27, 2023
@suikodev suikodev added the documentation Improvements or additions to documentation label Mar 27, 2023
@suikodev
Copy link
Collaborator

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

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

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

@Pinkpiglet
Copy link
Author

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

suikodev pushed a commit that referenced this issue Mar 27, 2023
fix: 上下文按钮失效
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

2 participants