基于Shell脚本自动部署项目

342 阅读3分钟

基于Shell脚本自动部署项目

流程

image.png

操作步骤如下:

1). 在Gitee上创建远程仓库,并将本地的项目代码推送到远程仓库中
2). 在Linux中安装Git,克隆代码
3). 在Linux中安装maven
4). 编写Shell脚本(拉取代码、编译、打包、启动)
5). 为用户授予执行Shell脚本的权限
6). 执行Shell脚本

1.Linux中安装Git

a. yum安装git

yum list git 列出git安装包
yum install git 在线安装git
git --version去验证git的环境

b. git克隆代码

cd /usr/local/
git clone git项目地址

2.Linux中安装maven

1.将maven安装包上传到Linux

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 保存并退出

4.重新刷新配置,让修改的配置生效
    source /etc/profile
    
5.修改maven的settings.xml配置文件,配置本地仓库地址
    cd /usr/local/apache-maven-3.5.4/conf
    vim settings.xml
    在其中增加如下配置,配置本地仓库地址: <localRepository>/usr/local/repo</localRepository>
    并在settings.xml中的标签中,配置阿里云的私服,配在<mirrors>标签内部。
        <mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </mirror>

3.编写Shell脚本

在/usr/local/目录下创建一个目录 sh(mkdir sh),并将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=true`

cd target

echo 启动项目
nohup java -jar helloworld-1.0-SNAPSHOT.jar &> helloworld.log &
echo 项目启动完成

image.png

4.授予执行Shell脚本权限

Shell脚本要想正常的执行,还需要给Shell脚本分配执行权限。

chmod 777 bootStart.sh

三个数字分别代表不同用户的权限

    第1位表示文件拥有者的权限
    第2位表示同组用户的权限
    第3位表示其他用户的权限

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):

image.png

image.png

5.执行Shell脚本

1.执行脚本
    ./bootStart.sh
2.查看java进程
    ps -ef|grep java

6.设置静态IP

安装的Linux操作系统,安装完毕之后并没有配置IP地址,默认IP地址是动态获取的,那如 果我们使用该Linux服务器部署项目,IP动态获取的话,也就意味着,IP地址可能会发生变动,那我们访问项目的话就会非常繁琐,所以作为服务器,我们一般还需要把IP地址设置为静态的。

1). 设置静态IP,修改 /etc/sysconfig/network-scripts/ifcfg-ens33 配置文件,

    将BOOTPROTO=dhcp修改为BOOTPROTO=static
    添加如下配置
        IPADDR="192.168.138.100" # 设置的静态IP地址
        NETMASK="255.255.255.0" # 子网掩码
        GATEWAY="192.168.138.2" # 网关地址
        DNS1="192.168.138.2" # DNS服务器

2). 修改网络配置完毕后,重启网络服务
    systemctl restart network