在Linux上进行项目部署–手动和自动
文章目录
- 在Linux上进行项目部署--手动和自动
- 1、手动部署项目
- 2、通过Shell脚本自动部署项目
1、手动部署项目
1、在IDEA中开发SpringBoot项目并打成jar包
在idea中的Maven中的package(基于Springboot项目)
2、将jar包上传到Linux服务器
mkdir /usr/local/app 创建目录,将项目jar包放到此目录
3、启动SpringBoot项目
使用命令:java -jar 项目jar包名
要确保你的项目jar包所需要的jdk等环境的配置没有问题。
4、 检查防火墙,确保8080端口对外开放,访问SpringBoot项目
5、 改为后台运行SpringBoot程序,并将日志输出到日志文件
目前程序运行的问题:
- 线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行
- 线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息
nohup命令:英文全称no hang up(不挂起),用于不挂断地运行指定命令,退出终端不会影响程序的运行
语法格式: nohup Command [ Arg ...][&]
参数说明:
Command:要执行的命令
Arg: 一些参数,可以指定输出文件
&:让命令在后台运行
举例:
nohup java -jar boot工程.jar &> hello.log & 后台运行java -jar命令,并将日志输出到hello.log文件
即使关掉终端,程序依然会执行。
6、 停止SpringBoot程序
查询进程号,使用kill终止运行项目:
2、通过Shell脚本自动部署项目
操作步骤:
1、在Linux中安装Git
2、在Linux中安装maven
3、编写Shell脚本(拉取代码、编译、打包、启动)
4、为用户授予执行Shell脚本的权限
5、执行Shell脚本
1、在Linux中安装Git
yum list git 列出git安装包
yum install git 在线安装git
2、使用Git克隆代码
cd /usr/local/
git clone https://gitee.com/mannor/helloworld.git
3、将maven安装包上传到Linux,在Linux中安装maven
tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local 解压Maven包
vim /etc/profile 修改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 修改配置文件内容如下:
<localRepository>/usr/local/repo</localRepository> (需要创建repo文件夹)
4、将shell脚本文件复制到Linux:
#!/bin/sh
echo =================================
echo 自动化部署脚本启动
echo =================================
echo 停止原来运行中的工程
APP_NAME=reggie_take_out
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/RegisTakeout/reggie_take_out
echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成
echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`
cd target
echo 启动项目
nohup java -jar reggie_take_out-1.0-SNAPSHOT.jar &> reggie_take_out.log &
echo 项目启动完成
- Shell脚本(shell script),是一种Linux系统中的脚本程序。
- 使用Shell脚本编程跟JavaScript、Java编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
5、为用户授权
因为Linux是多用户系统,不同的用户具有不同的权限,所以就需要对用户授权才能执行脚本。
chmod(英文全拼: change mode)命令是控制用户对文件的权限的命令
Linux中的权限分为:读(r)、写(w)、执行(x)三种权限
Linux的文件调用权限分为三级︰文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
只有文件的所有者和超级用户(root)可以修改文件或目录的权限
要执行Shell脚本需要有对此脚本文件的执行权限,如果没有则不能执行
前缀的用法说明如下:
chmod命令可以使用八进制数来指定权限:
举例:
chmod 777 bootStart.sh 为所有用户授予读、写、执行权限
chmod 755 bootStart.sh 为文件拥有者授予读、写、执行权限,同组用户和其他用户授予读、执行权限
chmod 210 bootStart.sh 为文件拥有者授予写权限,同组用户授予执行权限,其他用户没有任何权限
注意:三位数字分别代表不同用户的权限
第1位表示文件拥有者的权限
第2位表示同组用户的权限
第3位表示其他用户的权限
6、使用命令执行shell脚本,启动服务:./bootStart.sh
—>shell脚本文件名。
7、设置静态ip
修改文件/etc/sysconfig/network-scripts/ifcfg-ens33(最后的文件名可能有差异),内容如下:(#包括的部分)
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
########################################################
BOOTPROTO="static" #使用静态IP地址,默认为dhcp
IPADDR="192.168.138. 1ee" #设置的静态IP地址
NETMASK="255.255.255.e" #子网掩码
GATEWAY="192.168.138.2" #网关地址
DNS1="192.168.138. 2" #DNS服务器
#######################################################
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"IPV6INIT="yes"
IPV6_AUTOCONF= "yes"IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
TPV6_ADDR_GEN_MODE="stable-privacy"NAME="ens33"
UUID="95b614cd-79b0-4755-b08d-99f1cca7271b"DEVICE="ens33"
ONBOOT="yes" #是否开机启用
8、重启网络服务
命令:systemctl restart network
注意:重启完网络服务后ip地址已经发生了改变,此时FinalShell已经连接不上Linux系统,需要创建一个新连接才能连接到Linux。