云服务器部署Springboot单体项目
部署Springboot单体项目
- 安装docker
- 安装nginx
- 编写Dockerfile文件
- 创建镜像创建容器完成部署
参考博文:https://blog.csdn.net/Howinfun/article/details/102514099
视频讲解链接: 【云服务器部署springboot+vue前后端分离项目】 https://www.bilibili.com/video/BV1hY411d7H1/?share_source=copy_web&vd_source=ca4e02b93a63f6b61653cafdecdfc29f
使用maven打包工具
引入依赖–在有启动类的Pom文件中引入
1 | <build> |
安装docker
参照我之前的笔记,安装docker 并且替换docker的镜像源
安装nginx
1 | nginx使用来进行反向代理服务主机 |
在本地安装nginx
安装之前:需要有gcc和gcc++的依赖
1 | yum -y install gcc |
需要安装的安装包:注意:需要按照以下顺序安装并进行编译
- pcre-8.37.tar.gz
- openssl-1.0.1t.tar.gz
- zlib-1.2.8.tar.gz
- nginx-1.12.2.tar.gz
安装prce
解压缩pcre-xx.tar.gz包
进入解压缩目录,执行./configure
注意:如果提示错误,需要提前安装gcc++
./configure完成后,回到pcre目录下执行make,再执行make install
安装openssl
解压缩openssl-xx.tar.gz包
进入解压缩目录,执行./config
make && make install
安装zlib
解压缩zlib-xx.tar.gz包
进入解压缩目录,执行./configure
make && make install
安装nginx
解压缩nginx-xx.tar.gz包
进入解压缩目录,执行./configure
make && make install
开放服务器端口
1 | 如果是本地虚拟机,就关闭防火墙: systemctl stop firewalld / 关闭开机自启动 systemctl disabled firewalld |
nginx使用命令
(1)启动命令
在/usr/local/nginx/sbin目录下执行 ./nginx
(2)关闭命令
在/usr/local/nginx/sbin目录下执行 ./nginx -s stop
(3)重新加载命令
在/usr/local/nginx/sbin目录下执行 ./nginx -s reload
(4)查看版本
(5)查看进程
1 | ps -ef | grep nginx |
修改配置文件 – 测试
进入/usr/local/nginx/conf,修改nginx.conf文件:
启动测试:
直接访问主机名就可以看到welcome nginx
配置nginx
因为nginx配置文件在我们的/usr/local/nginx/conf/nginx.conf位置,当如果我们的云服务器部署了多个项目的时候,项目配置文件如果都同时写在一个文件中很容易造成路由冲突,所以我们在原有的配置文件下末尾添加一条指令:
1 | include /usr/local/nginx/conf.d/*.conf; |
在nginx目录创建conf.d目录:
1 | mkdir conf.d |
在这个文件夹中再创建以conf为后缀的文件,用来配置找到我们的项目的location块:
后端:
前端:
上传jar包
在/usr/local创建了xz_platform的文件夹
把service-1.0-SNAPSHOT.jar上传到该文件夹
编写Dockerfile
1 | # 基于java镜像创建新镜像 |
把dockerfile文件编译成镜像文件
注意此时执行下列命令的位置是在Dockerfile所处的文件夹中,所以.表示当前文件夹
1 | docker build -t xz_service . |
执行之后,docker会自动下载java8镜像文件
1 | docker images; |
创建容器做好端口映射即可
1 | docker run -d --name=xz-service -p 8080:8080 xz_service |
配置hosts文件完成本地域名解析映射
C:\Windows\System32\drivers\etc\hosts
api是后端访问域名
admin.xz.com是后台访问
测试访问:
admin.api.xz.com/xz/giftInfo/admin/getCheckParam
补充说明:
参考博文:https://www.cnblogs.com/Json1208/p/8975403.html
Dockerfile中的VOLUME的使用对部署的帮助:
VOLUME其实和我们的-v指定映射位置差不多,只是VOLUME在宿主机的位置只能是在/var/lib/docker/volumes/目录下
我们可以通过docker inspect + 容器名称查看存在宿主机的哪个目录
所以当我们进行更新jar包的时候可以直接把jar包更名成app.jar上传到该目录
最后通过重启一下容器,它会自动帮助我们把新更新的app.jar更新到我们指定的/root目录中,再次跑起来其实就是我们的新jar包了
1 | docker restart xz_service_container |