后台服务后端部署

运行环境MySQL/Redis/ElasticSearch/JDK请自行安装配置

1. 打包

打开命令工具,进入项目根目录,执行以下打包命令:

mvn clean package -Dmaven.test.skip=true
  • window系统使用powershell可能会报错,给maven.test.skip加上引号
  • 确保application-prod.yml配置文件中的数据库、Redis等配置没有问题

打包后的jar文件所在地址:

{项目根目录}/chestnut-admin/target/chestnut-admin.jar

2. 上传部署

上传生成的打包文件到服务器,结束正在运行的服务端进程:

先检查是否存在正在运行的应用进程,如果存在,使用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

后台服务前端部署

1. 打包

打开命令工具,进入项目根目录,执行以下打包命令:

# 进入前端工程目录
cd chestnut-ui
# 安装依赖
npm install --registry=https://registry.npmmirror.com
# 构建
npm run build:prod

构建结果目录:{项目根目录}/chestnut-ui/dist/

2. 上传部署

  • {项目根目录}/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
  • 安装nginx
# 安装
yum install -y nginx

# 启动
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
# 测试配置是否正确
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/

内容导航