将项目部署到linux系统上
一. 手工部署项目
1. 在IDEA中将Springboot项目打包为jar包
2. 将jar包上传到Linux服务器
①在/usr/local下新建一个app目录,将项目的jar包放到该目录下
②然后在app目录下运行该项目:java -jar linux-0.0.1-SNAPSHOT.jar
之后可以在外部浏览器通过访问http://ip:8080/来访问该项目(要确保项目的端口号在linux上是打开的,即如果项目端口号是8080,则linux系统的8080端口需要是打开的)
注意:该方式会导致linux控制台被霸占,不能再执行其他操作
③改为后台运行项目,并将日志输出到日志文件
线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行;线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息
nohup命令:用于不挂断地运行指定命令,退出终端不会影响程序的运行
语法格式:nohup Command [Arg…] [&]
参数说明:①Command:要执行的命令;②Arg:一些参数,可以指定输出文件;③&:让命令在后台运行
举例:nohup java -jar springboot工程.jar &> hello.log & (后台运行java -jar命令,并将日志输出到hello.log文件)
④停止项目
先查看该项目的进程id:ps -ef|grep java
通过停止进程来停止项目的运行: kill -9 id(例如:kill -9 22068)
二. 通过Shell脚本自动部署项目
1. 在本地将Springboot项目放到远程Git仓库内
2. 在linux系统中将远程Git仓库内的项目文件克隆到linux中
将项目克隆到/usr/local目录下,首先进入/usr/local,然后输入命令:git clone git仓库的地址
3. 编写Shell脚本(拉取代码、编译、打包、启动)
①在/usr/local下创建一个sh目录,用于存放shell脚本
②在sh目录下创建一个bootStart.sh文件,使用vim命令在文件内添加以下内容:
#!/bin/sh
echo =================================
echo 自动化部署脚本启动
echo =================================
echo 停止原来运行中的工程,项目名为linux
APP_NAME=linux
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仓库拉取最新代码,linux为项目名
cd /usr/local/linux
echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成
echo 开始打包
output='mvn clean package -Dmaven.test.skip=true'
cd target
echo 启动项目
nohup java -jar linux-0.0.1-SNAPSHOT.jar &> linux.log &
echo 项目启动完成
之后添加新的项目,只需要替换上面的项目名就行
4. 为用户授予执行Shell脚本的权限
我们使用chmod 777 bootStart.sh来为shell脚本赋予权限
Linux中的权限分为:读(r)、写(w)、执行(x)三种权限
Linux的文件调用权限分为三级:文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
只有文件的所有者和超级用户可以修改文件或目录的权限
要执行Shell脚本需要有对此脚本文件的执行权限,如果没有则不能执行
chmod命令可以使用八进制数来指定权限:
例如:chmod 777 bootStart.sh:为所有用户授予读,写、执行权限
chmod 755 bootstart.sh:为文件拥有者授予读、写、执行权限,同组用户和其他用户授予读、执行权限
chmod 210 bootstart.sh:为文件拥有者授予写权限,同组用户授予执行权限,其他用户没有任何权限
注意:三位数字分别代表不同用户的权限,第1位表示文件拥有者的权限,第2位表示同组用户的权限,第3位表示其他用户的权限
5. 执行Shell脚本
切换到/usr/local/sh目录下,执行以下命令
sh bootStart.sh
6. 设置linux系统的静态ip
将IP给固定为192.168.153.100
使用vim命令修改文件/etc/sysconfig/network-scripts/ifcfg-ens33,将其中的内容修改如下:
① 修改为static,使用静态IP地址,默认为dhcp
BOOTPROTO="static"
②在上面语句下加入下面的语句:
IPADDR="192.168.32.100" #设置的静态IP地址(与下图对应,是多少就是多少,这里是32)
NETMASK="255.255.255.0" #子网掩码
GATEWAY="192.168.32.2" #网关地址
DNS1="192.168.32.2" #DNS服务器
重启网络服务:systemctl restart network
发现已经连接不上,需要创建新的连接,即在FinalShell再创建新的连接Linux
之后如果添加新的项目,只需要执行1、2、3、4、5步就可以
如果启动的是已有的项目,只需要执行第5步