基于SpringBoot+Vue前后端分离的Nginx服务器部署方案

一、安装Nginx

1. 预安装nginx所需要的服务器库

# 预安装nginx所需要的服务器库。
sudo yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

2. 下载nginx安装包

# 下载nginx安装包
wget https://nginx.org/download/nginx-1.9.9.tar.gz

3. 安装nginx

# 解压缩nginx安装包
tar -zxvf nginx-1.9.9.tar.gz
# 进入nginx源代码目录
cd nginx-1.9.9
# 指定nginx安装路径
./configure --prefix=/usr/local/nginx/
# 编译安装nginx
make && make install

4. 设置nginx服务

编辑.service文件

# 编辑.service文件
sudo vi /etc/systemd/system/nginx.service

.service文件内容

[Unit]
# Description指定当前服务的简单描述。
Description=NGNIX HTTP and Reverse Proxy Server
# After表示当前服务在network.target之后启动,可以指定多个服务,以空格隔开。
After=network.target

[Service]
# ExecStart将以fork()方式启动,此时父进程将会退出,子进程将成为主进程。
Type=forking

# ExecStart指定启动进程时执行的命令。
# ExecReload指定当该服务被要求重新载入配置时所执行的命令。
# 另外,还有一个特殊的环境变量 $MAINPID 可用于表示主进程的PID,
# 例如可以这样使用:/bin/kill -HUP $MAINPID。
# 强烈建议将 ExecReload= 设为一个能够确保重新加载配置文件的操作同步完成的命令行。
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit

#web服务设置私有/tmp或/var/tmp目录
PrivateTmp=true

[Install]
# “WantedBy=multi-user.target”表示当系统以多用户方式启动时,这个服务需要被自动运行。
WantedBy=multi-user.target

重新加载systemd配置文件

# 重载.service文件
sudo systemctl daemon-reload

启动nginx服务

# 测试服务状态
sudo systemctl status nginx
# 启动服务
sudo systemctl start nginx
# 停止服务
sudo systemctl stop nginx
# 重启服务
sudo systemctl restart nginx

设置开机启动

# 设置开机启动
sudo systemctl enable nginx

二、配置SpringBoot

1. 创建启动脚本,固定每次的启动目录。

编辑启动文件

# 创建Java工作目录
mkdir -p /usr/local/portal/java/
# 编辑启动脚本
vi /usr/local/portal/java/run_java.sh

启动文件内容

#! /bin/bash

# 进入脚本目录
cd "$(dirname "$0")"
work_dir="$(pwd)"

# 运行JAVA
java -jar portal.jar

2. 设置nginx服务

编辑.service文件

# 编辑.service文件
sudo vi /etc/systemd/system/portal.service

.service文件内容

[Unit]
# Description指定当前服务的简单描述。
Description= SJZT Portal Java Server for Development Environment
# After表示当前服务在network.target之后启动,可以指定多个服务,以空格隔开。
After=syslog.target network.target

[Service]
# User指定启动服务的用户。有权限等需要时可以指定用户。
User=ferrari
# ExecStart指定启动进程时执行的命令。
# ExecReload指定当该服务被要求重新载入配置时所执行的命令。
ExecStart=/usr/local/portal/java/run_java.sh
SuccessExitStatus=143

[Install]
# 表示当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
WantedBy=multi-user.target

重新加载systemd配置文件

# 重载.service文件
sudo systemctl daemon-reload

启动nginx服务

# 测试服务状态
sudo systemctl status portal
# 启动服务
sudo systemctl start portal
# 停止服务
sudo systemctl stop portal
# 重启服务
sudo systemctl restart portal

设置开机启动

# 设置开机启动
sudo systemctl enable portal

三、设置存放前端HTML的目录

1. 创建启前端目录。

# 创建前端目录
mkdir -p /usr/local/portal/ui/

2. 将Vue编译后的HTML放入前端目录。

# 存放HTML
mv -r /workspace/portal-vue/dist/* /usr/local/portal/ui/

四、修改Nginx配置

1. 修改nginx配置文件。

# 修改nginx配置文件
vi /root/wxportal/tools/nginx/conf/nginx.conf

2. 以下仅为相关修改内容。

# 前端HTML
location / {
    root /usr/local/portal/ui;
    try_files $uri $uri/ /index.html;
    index  index.html index.htm;
}

# /portal-api/指向后端接口,8888为SpringBoot配置的端口。
location /portal-api/ {
    proxy_pass http://localhost:8888/;
    client_max_body_size     50m;
    proxy_redirect     off;
    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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    proxy_max_temp_file_size 0;
    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;
    proxy_buffer_size          4k;
    proxy_buffers              4 32k;
    proxy_busy_buffers_size    64k;
    proxy_temp_file_write_size 64k;
    proxy_cookie_path / /;
}

版权声明:本文为daybreaker原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。