前端项目的部署,及后端项目的部署
前端部署服务器: Nginx
后端部署服务器: Tomcat(内嵌)
在服务器A(192.168.*.*)中安装Nginx,将前端打包的文件上传到Nginx的html目录下
修改Nginx配置文件nginx.conf
将nginx.conf配置文件中,将原有的监听80, 82, 8080端口号 的虚拟主机注释掉,引入如下的配置信息:
server {
listen 80;
server_name localhost;
location / {
root 自己的页面;
index 页面名称.html;
}
location ^~ /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://192.168.*.*:8080;
}
location = /50x.html {
root html;
}
}
通过nginx访问前端工程
192.168.*.*
反向代理配置
前端工程部署完成之后,我们可以正常的访问到系统的登录页面,点击登录按钮,可以看到服务端发起的请求
/api这个前缀在不修改服务端代码的情况下通过nginx的就可以轻松解决这个问题
这一段配置代表,如果请求当前nginx,并且请求的路径如果是 /api/ 开头,将会被该location处理。而在该location中,主要配置了两块儿信息: rewrite(url重写) 和 proxy_pass(反向代理)。 接下来我们就来解析一下这两项的配置。
rewrite ^/api/(.*)$ /$1 break;
这里写的是一个正则表达式,代表如果请求路径是以 /api/
开头,后面的请求路径任意,此时将原始的url路径重写为 /$1
,这里的$1
指代的就是通配符 .* 这一块的内容。比如:
/api/employee/login ------> ^/api/(.*)$ -------->
此时 (.*) 匹配的就是 employee/login ------>
最终重写为/$1 : /employee/login
反向代理
proxy_pass http://192.168.138.101:8080;
在服务器B(192.168.*.*1)中安装jdk、git、maven、MySQL,使用git clone命令将git远程仓库的代码克隆下来
确认jdk: java -version
确认git:git -version
确认maven:mvn -v
将我们开发完成的代码推送至远程仓库,并在服务器B中克隆下来
#创建java代码存放目录
mkdir -p /usr/local/javaapp
#切换目录
cd /usr/local/javaapp
#克隆代码 , 需要使用自己的远程仓库
git clone https://gitee.com/**/***.git
我们可以通过 ps -ef|grep java 指令,查看服务是否启动。
执行脚本
#!/bin/sh
echo =================================
echo 自动化部署脚本启动
echo =================================
echo 停止原来运行中的工程
APP_NAME=**********
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 2
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi
echo 准备从Git仓库拉取最新代码
cd /usr/local/javaapp/*****
echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成
echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`
cd target
echo 启动项目
nohup java -jar *********.jar &> *****.log &
echo 项目启动完成
图片展示问题处理
将文件存储目录修改:path: /usr/local/img/
将本地的测试图片文件夹img(整个文件夹)上传到服务器B的/usr/local目录下
然后就访问主库地址出来就成功了