运行环境MySQL/Redis/ElasticSearch/JDK请自行安装配置
打开命令工具,进入项目根目录,执行以下打包命令:
mvn clean package -Dmaven.test.skip=true
- window系统使用powershell可能会报错,给maven.test.skip加上引号
- 确保application-prod.yml配置文件中的数据库、Redis等配置没有问题
打包后的jar文件所在地址:
{项目根目录}/chestnut-admin/target/chestnut-admin.jar
上传生成的打包文件到服务器,结束正在运行的服务端进程:
先检查是否存在正在运行的应用进程,如果存在,使用kill -5结束进行,如果无法结束,使用kill -9干掉进程
# 查看进程号
ps aux|grep java
# 结束进程
kill -5 进程号
# 检查是否依然存在
ps aux|grep java
# 强制结束进程,可能会丢失数据
kill -9 进程号
确认服务端进程不存在了,执行以下命令启动服务端
nohup java -jar chestnut-admin.jar --file.encoding=utf-8 --spring.profiles.active=prod
打开命令工具,进入项目根目录,执行以下打包命令:
# 进入前端工程目录
cd chestnut-ui
# 安装依赖
npm install --registry=https://registry.npmmirror.com
# 构建
npm run build:prod
构建结果目录:{项目根目录}/chestnut-ui/dist/
{项目根目录}/chestnut-ui/dist/
上传到服务器
{项目根目录}/chestnut-ui/dist/
上传至服务器/home/app/chestnut-ui
目录为例配置nginx
# 创建备份目录
/home/bak/
# 进入应用目录
cd /home/app
# 备份chestnut-ui
mv /chestnut-ui ../bak/chestnut-ui-bak/
# dist目录改名
mv dist chestnut-ui
# 安装
yum install -y nginx
# 启动
nginx
cd /etc/nginx/conf.d/
vi admin.conf
修改admin.conf内容如下:
server {
listen 81;
server_name 192.168.1.5;
charset utf-8;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Connection close;
location / {
root /home/app/chestnut-ui;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
client_max_body_size 200m;
proxy_pass http://localhost:8090/;
}
location /upload/ {
root /home/app/uploadPath;
expires 1d;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 测试配置是否正确
nginx -t
# 重启nginx
nginx -s reload
以上示例配置访问地址:http://192.168.1.5:81/
如果需要使用类似
http://192.168.1.5:81/
的子路径访问后台,需要修改构建环境配置和nginx配置,如下所示:
1. 修改配置文件 ChestnutCMS/chestnut-ui/.env.production
# 生产环境配置
ENV = 'production'
# ChestnutCMS生产环境
VUE_APP_BASE_API = '/prod-api'
# 访问地址
VUE_APP_PATH = '/admin/'
2. 修改nginx配置文件
server {
listen 81;
server_name 192.168.1.5;
charset utf-8;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Connection close;
location /admin/ {
alias /home/app/chestnut-ui;
try_files $uri $uri/ /admin/index.html;
index index.html index.htm;
}
location /prod-api/ {
client_max_body_size 200m;
# 注意结尾斜杠,请求URI会被替换:/prod-api/user → /user
# 不带结尾斜杠,请求URI会被保留:/prod-api/user → /prod-api/user
proxy_pass http://localhost:8090/;
}
location /upload/ {
root /home/app/uploadPath;
expires 1d;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
1. nginx配置修改
cd /etc/nginx/conf.d/
vi site.conf
修改site.conf内容如下:
server {
listen 80;
server_name 192.168.1.5; # 网站域名,站点编辑页面发布通道域名配置
charset utf-8;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Connection close;
location / {
ssi on;
ssi_silent_errors on;
ssi_types text/shtml;
root /home/app/wwwroot_release/site_pc;
index index.shtml index.html index.htm;
}
location ~ ^/(images|img|fonts|assets|js|css)/ {
root /home/app/wwwroot_release/site_pc;
expires 1d;
}
# 用户资源访问配置
location ~ ^/(resources)/ {
root /home/app/wwwroot_release/site;
expires 1d;
}
# API接口访问配置
location ~ ^/(api)/ {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods *;
add_header Access-Control-Allow-Headers *;
proxy_buffers 32 8k;
add_after_body "";
proxy_cookie_path / /;
proxy_pass http://localhost:8090;
}
# 站点/栏目/内容动态模板访问配置
location ^~ /cms/view/ {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods *;
add_header Access-Control-Allow-Headers *;
ssi on;
ssi_silent_errors on;
proxy_buffers 32 8k;
add_after_body "";
proxy_cookie_path / /;
proxy_pass http://localhost:8090;
}
# 搜索页动态模板访问配置
location = /_search {
# 如果需要隐藏sid和pp参数可使用rewrite配置
# rewrite /_search?(.*) /_search?sid={站点ID}&pp={发布通道编码}&$1 break;
ssi on;
ssi_silent_errors on;
proxy_buffers 32 8k;
add_after_body "";
proxy_cookie_path / /;
proxy_pass http://localhost:8090;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
执行命令 nginx -s reload
重启nginx,访问:http://server_name/
以上示例配置访问地址:http://192.168.1.5/