同个宝塔下部署多个不同站点
不管你有几套站点,你都当成一套全新的项目部署,重点是 端口、PM2名称、数据库、Nginx 反代都要独立
1.新建网站目录和数据库
把前端 dist 文件上传到:
/www/wwwroot/site-b.com/把后端目录上传到:
/www/wwwroot/site-b.com/spring-admin2.修改ecosystem.config.cjs文件
文件路径:
/www/wwwroot/site-b.com/spring-admin/ecosystem.config.cjs修改name,PORT这两个配置
name名称可以改成:'nextspring1'
POR端口可以改成: 1689module.exports = {
apps: [
{
name: 'nextspring',
cwd: __dirname,
script: 'src/index.js',
instances: 1,
exec_mode: 'fork',
env: {
NODE_ENV: 'production',
PORT: 1688,
},
},
],
}3. 配置第二个站点的 .env
进入:
cd /www/wwwroot/site-b.com/spring-admin
cp .env.example .env编辑 .env,第二个站点建议这样:
修改4个位置
1.PORT这里的端口一定要和ecosystem.config.cjs修改的一致
2.配置数据库信息
3.替换成你的机场后端地址
4.Nginx里的站点目录换成你的
PORT=1689
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=数据库名
DB_USER=数据库用户名
DB_PASSWORD=你的数据库密码
DB_TABLE_PREFIX=SiteB_
UPSTREAM_BASE_URL=https://第二个站点机场后端地址
ADMIN_USERNAME=spring
ADMIN_PASSWORD=spring1688
ADMIN_PATH=
NGINX_BLACKLIST_FILE=/www/wwwroot/替换成你的站点/.nginx/theme-ip-blacklist.conf
NGINX_BLACKLIST_AUTO_RELOAD=1
NGINX_BIN=/www/server/nginx/sbin/nginx4.为管理后台安装依赖
进入管理后台路径
cd /www/wwwroot/site-b.com/spring-admin安装依赖
npm install初始化数据库
npm run migrate生成nginx黑名单
npm run nginx:blacklist:sync看到下面内容就说明数据库初始化成功:
spring-admin migrations completednpm run nginx:blacklist:sync 会生成 Nginx 黑名单文件。这个文件必须存在,否则后面 Nginx 配置里的 include 会检测失败。
5.启动后端服务
进入管理后台路径
cd /www/wwwroot/site-b.com/spring-admin启动后台
pm2 start ecosystem.config.cjs保存当前进程列表
pm2 save查看后台登录地址和默认账号:
pm2 logs nextspring1 --lines 80日志里会出现类似:
Admin URL path: /#/admin/admin-xxxxxxxx
Username: spring
Password: spring1688完整后台访问路径:https://你的站点/#/admin/admin-xxxxxx
访问后台(先不要进后台,完成第7步的Nginx步骤再进入):
https://your-domain.com/#/admin/admin-xxxxxxxx首次登录后必须修改帐号和密码。
后台默认帐号:spring
后台默认密码:spring1688
登录后台后,可以进入“面板接口”页面修改你的面板类型。
6、配置 Nginx
端口号一定要和ecosystem.config.cjs文件一致,这里用的是1689
网站没开cf的用这个配置:
替换下方配置里的站点目录为你的站点目录
在宝塔网站的 Nginx 配置里,大概在第9行,找到 root 在后面加入下面内容。
include /www/wwwroot/你的站点目录/.nginx/theme-ip-blacklist.conf;
location ^~ /.nginx/ {
return 404;
}
location ^~ /api/ {
proxy_pass http://127.0.0.1:1689;
proxy_http_version 1.1;
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 X-Forwarded-Proto $scheme;
}
# 如果你修改了订阅路径,请替换下方的/s/为你的实际订阅路径
location ^~ /s/ {
proxy_pass http://127.0.0.1:1689;
proxy_http_version 1.1;
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 X-Forwarded-Proto $scheme;
}如果你的网站开启了 Cloudflare CDN,请用这个配置。
替换下方配置里的站点目录为你的站点目录
在宝塔网站的 Nginx 配置里,大概在第9行,找到 root 在后面加入下面内容。
real_ip_header CF-Connecting-IP;
real_ip_recursive on;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2a06:98c0::/29;
set_real_ip_from 2c0f:f248::/32;
include /www/wwwroot/你的站点目录/.nginx/theme-ip-blacklist.conf;
location ^~ /.nginx/ {
return 404;
}
location ^~ /api/ {
proxy_pass http://127.0.0.1:1689;
proxy_http_version 1.1;
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 X-Forwarded-Proto $scheme;
}
# 如果你修改了订阅路径,请替换下方的/s/为你的实际订阅路径
location ^~ /s/ {
proxy_pass http://127.0.0.1:1689;
proxy_http_version 1.1;
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 X-Forwarded-Proto $scheme;
}7、重载 Nginx
宝塔环境用这个命令:
/www/server/nginx/sbin/nginx -t && /www/server/nginx/sbin/nginx -s reload如果提示 syntax is ok 和 test is successful,说明配置没有问题。
8、访问后台查看是否部署成功
后台管理地址:
https://site-b.com/#/admin/admin-xxxxxxxx9、以后的更新版本
- 1.打包前端dist文件(不懂打包就看第一篇-打包构建教程,从第二步开始)
- 2.上传前端dist文件
- 3.上传后端的spring-admin文件夹(不要上传node_modules文件夹 和 .env文件)
然后按这个顺序执行(一行一行执行):
cd /www/wwwroot/site-b.com/spring-admin
npm install
npm run migrate
npm run nginx:blacklist:sync
pm2 restart nextspring1 --update-env
/www/server/nginx/sbin/nginx -t && /www/server/nginx/sbin/nginx -s reload如果前端也有更新,把新的前端打包文件覆盖到:
/www/wwwroot/site-b.com/10、常见问题
1. 忘记后台路径或密码
进入后端目录执行:
cd /www/wwwroot/site-b.com/spring-admin
npm run admin:reset
pm2 restart nextspring1 --update-env
pm2 logs nextspring1 --lines 80日志里会重新输出后台路径和默认账号密码。
2. 如何卸载
进入后端目录执行:
cd /www/wwwroot/site-b.com/spring-admin
pm2 delete nextspring1
pm2 save --force
rm -rf /www/wwwroot/你的站点目录
