文章目录
部署服务器选型及服务器初始化
我这边选的是腾讯云海外服务器
必须为海外服务器,因为我们需要直调国外的API,当然你也可以通过nginx代理chatgpt的api,然后购买国内服务器
来到这里!往下滑
选择服务器
一般2核2g或者2核4g已经足够撑起当前网站的运行了
系统选择 CentOS Stream 8
跳转到控制台
这就是刚刚购买的那台服务器
密码重置
点击更多
重置完成后,开始用Xshell工具连接刚刚的服务器
连接成功
输入账户root
密码为刚刚重置的那个
开始安装JDK
这边使用openjdk,一键安装,为了方便快速
命令:yum -y list java*
安装JDK1.8
命令:yum install -y java-1.8.0-openjdk.x86_64
查看jdk版本
java -version
显示版本号,说明安装成功了
安装宝塔
命令:yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
后续操作(y/n)? 输入y即可
安装成功
输入BT命令,调起面板
输入:bt
这边我一般只修改3个东西,面板端口,用户名,和登录密码
修改用户名
输入对应的账号
修改密码
输入对应的密码
更改端口
我这边更改端口为5000
注意!更改为5000端口后,我们需要去腾讯云服务器控制台的防火墙放开当前这个端口号
点击它
选择防火墙
添加规则
添加5000端口
打开Xshell
命令:bt default
复制这个外网面板地址,在浏览器打开
在浏览器打开
点击高级
点击继续
输入刚刚的账号密码
登录成功
有账号则绑定,没账号注册
宝塔开始安装必要的软件
选择商店
安装redis
点击安装
安装nginx
安装mysql
等待安装完成
大概过程需要15分钟左右
调整为首页展示
开启首页展示
放行3306端口
腾讯云服务器端口放行3306
重置root数据库密码
提交
初始化Plum-GPT数据库
打开后端工程下面的默认SQL
修改SQL,配置请求key
注意这个key已经过期了,用不了,需要你们自己拿自己的key配上去,
如果你没有key,请加作者微信:typsusan(key是120额度,速度快,收费,不贵)
我不卖,但是你需要,我可以给你去买
添加数据库
添加数据库
这个账号密码需要记住哦!
放到chatgpt-template工程的application.yml文件
导入数据库
导入刚刚那个SQL文件
上传后,点击导入
导入成功
配置服务器文件地址
创建图片默认文件夹
命令:mkdir -p /data/chat
命令:mkdir -p /data/chat/identify
命令:mkdir -p /data/chat/default
创建完成
上传默认的头像
/data/chat/default 下面是用户的默认头像 jpg结尾格式,名称为0~51的图片
nginx配置https
选购域名
https://buy.cloud.tencent.com/domain
搜索你想要的名称
域名一般都是购买期限为1年,价格为10~60价格不等,还有免费的ssl
购买完成后
域名开始解析服务器ip
快速解析
选择刚刚购买的那台服务器
开始配置nginx配置
以下是全部的配置,部分需要根据你实际情况修改
user www www;
worker_processes auto;
error_log /www/wwwlogs/nginx_error.log crit;
pid /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;
stream {
log_format tcp_format '$time_local|$remote_addr|$protocol|$status|$bytes_sent|$bytes_received|$session_time|$upstream_addr|$upstream_bytes_sent|$upstream_bytes_received|$upstream_connect_time';
access_log /www/wwwlogs/tcp-access.log tcp_format;
error_log /www/wwwlogs/tcp-error.log;
include /www/server/panel/vhost/nginx/tcp/*.conf;
}
events
{
use epoll;
worker_connections 51200;
multi_accept on;
}
http
{
include mime.types;
#include luawaf.conf;
include proxy.conf;
default_type application/octet-stream;
server_names_hash_bucket_size 512;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 50m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
server_tokens off;
access_log off;
server
{
listen 80;
server_name www.plumgpt.com plumgpt.com;
index index.html index.htm index.php;
add_header Content-Security-Policy upgrade-insecure-requests;
#error_page 404 /404.html;
include enable-php.conf;
if ($http_host ~ "^www.plumgpt.com$") {
rewrite ^(.*) https://plumgpt.com$1 permanent;
}
if ($http_host ~ "^http://plumgpt.com/#/chat$") {
rewrite ^(.*) https://plumgpt.com$1 permanent;
}
if ($http_host ~ "^plumgpt.com/#/chat$") {
rewrite ^(.*) https://plumgpt.com$1 permanent;
}
location / {
root /www/wwwroot/dist;
if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" ) {
root /www/wwwroot/h5;
}
}
location /request/open {
proxy_pass http://你服务器的ip:8099;
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_connect_timeout 30s;
proxy_read_timeout 86400s;
proxy_send_timeout 30s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
add_header Cache-Control no-cache;
add_header Cache-Control private;
if ($http_user_agent ~* "Scrapy|Sogou web spider|Baiduspider") {
return 403;
}
if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" )
{
return 403;
}
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") {
return 404;
}
if ($proxy_add_x_forwarded_for != $remote_addr){
return 444;
}
expires -1s;
}
location /webSocket/ {
proxy_pass http://你服务器的ip:8099;
proxy_http_version 1.1;
proxy_read_timeout 3600s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
if ($http_user_agent ~* "Scrapy|Sogou web spider|Baiduspider") {
return 403;
}
if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" )
{
return 403;
}
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") {
return 404;
}
if ($proxy_add_x_forwarded_for != $remote_addr){
return 444;
}
}
rewrite ^(.*) https://$server_name$request_uri permanent;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.
{
deny all;
}
access_log /www/wwwlogs/access.log;
}
server
{
listen 80;
listen 443 ssl http2;
server_name www.plumgpt.com plumgpt.com;
index index.html index.htm index.php;
add_header Content-Security-Policy upgrade-insecure-requests;
if ($http_host ~ "^www.plumgpt.com$") {
rewrite ^(.*) https://plumgpt.com$1 permanent;
}
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
ssl_certificate /www/wwwroot/plumgpt.com_nginx/plumgpt.com_bundle.pem;
ssl_certificate_key /www/wwwroot/plumgpt.com_nginx/plumgpt.com.key;
ssl_session_timeout 10m;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
#error_page 404 /404.html;
include enable-php.conf;
location / {
root /www/wwwroot/dist;
if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" ) {
root /www/wwwroot/h5;
}
}
location /request/open {
proxy_pass http://你服务器的ip:8099;
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_connect_timeout 30s;
proxy_read_timeout 86400s;
proxy_send_timeout 30s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
add_header Cache-Control no-cache;
add_header Cache-Control private;
if ($http_user_agent ~* "Scrapy|Sogou web spider|Baiduspider") {
return 403;
}
if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" )
{
return 403;
}
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") {
return 404;
}
if ($proxy_add_x_forwarded_for != $remote_addr){
return 444;
}
expires -1s;
}
location /chat {
rewrite ^/chat/(.*)$ /$1 break;
root /data/chat;
}
location /webSocket/ {
proxy_pass http://你服务器的ip:8099;
proxy_http_version 1.1;
proxy_read_timeout 3600s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
if ($http_user_agent ~* "Scrapy|Sogou web spider|Baiduspider") {
return 403;
}
if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" )
{
return 403;
}
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") {
return 404;
}
if ($proxy_add_x_forwarded_for != $remote_addr){
return 444;
}
}
access_log /www/wwwlogs/access.log;
}
include /www/server/panel/vhost/nginx/*.conf;
}
修改nginx配置 替换你服务器ip
所以的地方都替换
可以自己检索一下文字 “你的服务器的ip”
域名替换
注意所以的地方都需要替换
1,黄色框框替换为你自己购买的域名
2,蓝色框框是PC前端vue打包好后存放的地址
3,绿色框框是手机端打包好后存放的地址
域名证书
这个地方替换为你域名证书存放的地址
写入到nginx
更改配置
将刚刚配置好的全部替换到这里面来
如果对以上步骤有疑惑,不懂的可以加博主vx:typsusan