一、人工部署
-
在IDEA中开发SpringBoot项目并打成jar包
-
将jar包上传到Linux服务器
可以使用rz命令上传文件(要有安装lrzsz) -
启动SpringBoot程序
java -jar jar包名
-
检查防火墙,确保所需要访问的端口对外开放,访问SpringBoot项目
防火墙开启指定端口 firewall-cmd --zone=public --add-port=8080/tcp --permanent
重新加载防火墙 firewall-cmd --reload
查看已开启的端口 firewall-cmd --zone=public --list-ports
目前程序运行的问题: (1)线上程序采用控制台霸屏的形式运行程序,而且将程序关闭之后项目就结束了 (2)线上程序直接将日志输出到控制台
5. 改为后台程序SpringBoot程序,并将日志输出到日志文件
nohup命令(no hang up),用于不挂断地运行指定命令,退出终端不会影响程序的运行
语法格式:nohup Command[Arg...][&]
参数说明:
Command:要执行的命令
Arg:一些参数,可以指定输出文件
&:让命令在后台运行
举例:
nohup java -jar boot工程.jar &>hello.log & 后台运行java -jar命令,并将日志输出到hello.log文件
-
停止SpringBoot程序
ps -ef查看所有进程 ps -ef | grep 'java -jar' 把前一个命令的输出作为后一个命令的输入
二、通过Shell脚本自动部署项目
操作步骤:
-
在Linux中安装Git
1.安装Git yum list git // 列出git安装包 yum install git // 在线安装git 2.使用Git克隆代码 cd/usr/local/ git clone git仓库地址
-
在Linux中安装maven
将maven安装包上传到Linux,解压 tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/locar // 解压到usr/local下 vim /etc/profile //修改配置文件,加入以下内容 export MAVEN_HOME=/usr/local/apache-maven-3.5.4 export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH source /etc/profile //重新加载文件,让上面加入的内容生效 mvn -version //看是否下载成功 vim /usr/local/apache-maven-3.5.4/conf/settings.xml //修改配置文件内容如下 <localReposity>/usr/local/repo</localReposity> //需要先创建repo目录
-
编写Shell脚本(拉取代码、编译、打包、启动)
Shell脚本,是一种Linux系统中的脚本程序 使用Shell脚本编程跟JavaScript、Java编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释权就可以了 在/usr/local/下创建目录mkdir sh ,在sh目录的路径下将脚本文件写入vim bootStart.sh 下面是Shell的脚本文件 注意:脚本文件中nohup java -jar helloworld-1.0-SNAPSHOT.jar &> helloworld.log & helloworld-1.0-SNAPSHOT.jar这个jar包名要和自己的jar包名字一样
#!/bin/sh echo ================================= echo 自动化部署脚本启动 echo ================================= echo 停止原来运行中的工程 APP_NAME=helloworld 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/helloworld echo 开始从Git仓库拉取最新代码 git pull echo 代码拉取完成 echo 开始打包 output=`mvn clean package -Dmaven.test.skip=true` cd target echo 启动项目 nohup java -jar helloworld-1.0-SNAPSHOT.jar &> helloworld.log & echo 项目启动完成
-
为用户授予执行Shell脚本的授权
chmod(英语全拼:change mode)命令是控制用户对文件的权限的命令 Linux中的权限分为:读(r)、写(w)、执行(x)三种权限 Linux的文件调用权限分为三级:文件所有者(Owner)、用户组(Group)、其它用户(Other Users) 只有文件的所有者和超级用户可以修改文件或目录的权限 要执行Shell脚本需要有对此脚本文件的执行权限,如果没有则不能执行
- 执行Shell脚本