Shell脚本自动部署Springboot项目
一、 介绍
前面介绍的项目部署是手动部署,也就是部署过程中的每一步操作都需要我们手动操作。接下来,我们需要再讲解一下项目的自动部署,从而来简化项目部署的操作,那么我们先来整体上了解一下项目自动部署的流程及操作步骤。
操作步骤如下:
1). 在Gitee上创建远程仓库,并将本地的项目代码推送到远程仓库中
2). 在Linux中安装Git,克隆代码
3). 在Linux中安装maven
4). 编写Shell脚本(拉取代码、编译、打包、启动)
5). 为用户授予执行Shell脚本的权限
6). 执行Shell脚本
二、Centos 7 软件安装
2.1 Git软件安装
通过yum命令在线安装git,执行如下指令:
yum list git 列出git安装包
yum install git 在线安装git
通过上述指令,安装好git之后,我们就可以通过 git --version去验证git的环境。
2). Git克隆代码
cd /usr/local/
git clone git地址
2.2 Maven安装
由于我们的工程是maven工程,我们要想进行项目的编译打包,需要用到maven的指令,所以需要安装maven。具体操作步骤如下:
1). 上传maven的安装包
2). 解压maven安装包到/usr/local目录
tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local
3). 在/etc/profile配置文件中配置环境变量
vim /etc/profile
修改配置文件,进入到命令模式,按G切换到最后一行,按a/i/o进入插入模式,然后在最后加入如下内容 :
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
然后按ESC进入到命令模式,输入 :wq 保存并退出
要想让配置的环境变量生效,还需要执行如下指令:
source /etc/profile
4). 修改maven的settings.xml配置文件,配置本地仓库地址
A. 切换目录
cd /usr/local/apache-maven-3.5.4/conf
B. 编辑settings.xml配置文件
vim settings.xml
在其中增加如下配置,配置本地仓库地址: 这里我建议使用自己配置的本地仓库地址
<localRepository>/usr/local/repo</localRepository>
并在settings.xml中的
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
2.3 Linux权限
Shell脚本
#!/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=ture`
cd target
echo 启动项目
nohup java -jar hellowprld.jar &> helloworld.log &
echo 项目启动完成
但是Shell脚本要想正常的执行,还需要给Shell脚本分配执行权限。 由于linux系统是一个多用户的操作系统,并且针对每一个用户,Linux会严格的控制操作权限。接下来,我们就需要介绍一下Linux系统的权限控制。
1). chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令
2). Linux中的权限分为三种 :读(r)、写(w)、执行(x)
3). Linux文件权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
4). 只有文件的所有者和超级用户可以修改文件或目录的权限
5). 要执行Shell脚本需要有对此脚本文件的执行权限(x),如果没有则不能执行
chmod命令可以使用八进制数来指定权限(0 - 代表无 , 1 - 执行x , 2 - 写w , 4 - 读r):
值 | 权限 | rwx |
---|---|---|
7 | 读 + 写 + 执行 | rwx |
6 | 读 + 写 | rw- |
5 | 读 + 执行 | r-x |
4 | 只读 | r-- |
3 | 写 + 执行 | -wx |
2 | 只写 | -w- |
1 | 只执行 | --x |
0 | 无 | --- |
举例:
chmod 777 bootStart.sh 为所有用户授予读、写、执行权限
chmod 755 bootStart.sh 为文件拥有者授予读、写、执行权限,同组用户和其他用户授予读、执行权限
chmod 210 bootStart.sh 为文件拥有者授予写权限,同组用户授予执行权限,其他用户没有任何权限
注意:
三个数字分别代表不同用户的权限
- 第1位表示文件拥有者的权限
- 第2位表示同组用户的权限
- 第3位表示其他用户的权限
2.2.7 授权并执行脚本
在测试阶段,我们可以给所有的人都赋予执行该shell脚本的权限。所以可以执行如下指令:
chmod 777 bootStart.sh
注意: 在执行maven指令进行打包时,第一次执行可能会耗时比较长,因为在进行maven工程的打包时,需要到中央仓库下载工程依赖的jar包和插件(可以在settings.xml中配置阿里云私服加速下载)。
本文来自博客园,作者:CoderTL,转载请注明原文链接:https://www.cnblogs.com/codertl/p/16155796.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix