前言
Springboot 内置了 tomcat,部署十分的方便,无需额外的应用服务器。但是在部署过程中,却有很多种方式
本文总结在工作中常见的 linux 部署方式
一、通过nohup命令部署
linux 可以通过 nohup 命令将项目部署在后台,即使终端退出,进程仍然在运行,并且会生成一个 nohup.out 文件
但是… 想要结束进程,只能先找到进程的 pid,再 kill 掉
nohup java -jar xxx.jar &
缺点:
1、项目升级不方便,需要先找到进程,再 kill 掉,再重新用 nohup 启动进程,步骤繁琐
2、项目升级过程中,经常需要一些额外的操作,例如备份配置文件,备份 jar。单单通过 nohup 命令,无法完成附加的额外操作
二、通过ssh脚本+nohup方式部署
前面讲了 nohup 的部署方式和它的繁琐缺点,是否能够通过 ssh 脚本自动化 nohup 的部署呢
操作步骤:先通过端口找到进程,进程存在则 kill 掉,再启动项目,无需人工操作
还可以在启动前备份好 jar 包,一些其他额外操作
#!/bin/bash
port=9090
pid=$(netstat -lnp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
if [ -n "$pid" ]; then
kill -9 $pid;
fi
nohup java -jar xxx.jar &
echo "project start completed."
缺点:
1、脚本有丢失的风险,需做好备份
2、脚本需要维护,换了端口,jar 移动了位置或改名,都需要调整脚本
3、灵活性差,如果只想停止,不想重启怎么办?或者只想执行某个步骤,这时就显得很麻烦
三、linux的service服务(推荐)
linux 的 service 功能可以很好的管理服务的启动、重启、停止,配置开机启动等信息
每次操作只需一个简单的命令,并且可以单独执行某个操作,解决了上面两种部署方案的不足
通过简单的文件配置,即可完成服务的管理,十分推荐
[Unit]
Description=example
After=syslog.target
[Service]
ExecStart=java -jar /xxx.jar
[Install]
WantedBy=multi-user.target
具体的 service 操作介绍可以百度哈,本文只介绍下这种部署方式的存在
Python 系列:
读取文件 – 使用 python 读取 xls,xlsx,csv,doc,docx,pdf 格式的文件
阅读小工具 – 使用 python 开发无边框窗体阅读小工具
操作xlsx文件 – 使用 openpyxl 技术对 xlsx 的各种操作
前端系列:
扫雷游戏 – JavaScript 仿造 windows 编写 扫雷游戏
前端工具库 xlsx 处理表头合并 – 如何使用 xlsx 技术处理复杂的表头合并
CSS 布局技巧 – 对整体布局的心得体会
NVM Node 多版本控制教程 – Node 版本控制神器 NVM
Spring 系列:
Spring部署 – Spring 的多种 linux 部署方式
Spring实现策略模式 – 通过 Spring 实现多种策略模式