最简单在方案LINUX部署应用的自动化脚本
当在Linux系统上开发和部署代码时,可以利用一系列工具和技术来实现自动更新代码、打包、部署和运行。本文将介绍如何使用Git、Maven和Java环境来实现这一过程。
首先,确保在Linux系统上安装了Git、Maven和Java环境。可以通过以下命令来检查它们是否已经安装:
git --version
mvn --version
java -version
如果它们未安装,请按照相应的文档进行安装。
接下来,创建一个用于存放代码的目录。可以使用以下命令来创建一个名为myproject
的目录,并将其作为工作目录:
mkdir myproject
cd myproject
然后,使用Git将代码克隆到该目录中。假设代码托管在GitHub上,可以使用以下命令将代码克隆到本地:
git clone <repository_url>
替换<repository_url>
为实际的代码仓库地址。
接下来,进入到代码目录中:
cd <project_directory>
然后,配置Git以自动更新代码。可以使用以下命令配置Git定期从远程仓库拉取最新的代码:
git config --global pull.rebase true
git config --global pull.ff only
这将使得每次运行git pull
命令时,Git会自动将最新的代码合并到本地分支。
接下来,配置Maven以实现自动打包。在代码目录中,创建一个名为pom.xml
的文件,并添加构建配置,包括构建插件和依赖项。以下是一个简单的例子:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>1.0.0</version>
<!-- 添加其他的配置项 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
<!-- 添加其他的构建插件 -->
</plugins>
</build>
<!-- 添加其他的依赖项 -->
</project>
根据项目的实际情况,可以根据需要添加其他的配置项、构建插件和依赖项。
现在,每次在代码目录中运行mvn package
命令时,Maven将会自动打包项目。
最后,配置Java环境以实现自动运行。可以编写一个Shell脚本,用于启动Java应用。例如,创建一个名为start.sh
的脚本,并添加以下内容:
#!/bin/bash
java -jar target/myproject.jar
运行脚本时,将会启动Java应用。
为了实现自动更新代码、打包、部署和运行,可以将上述步骤组合成一个脚本,并定期运行该脚本。例如,可以创建一个名为update.sh
的脚本,并添加以下内容:
#!/bin/bash
cd /path/to/myproject
git pull origin master
mvn clean package
./start.sh
将上述脚本添加到计划任务中,如使用crontab
命令来定期执行脚本:
crontab -e
然后,在打开的编辑器中添加以下行,以每天的固定时间执行脚本:
0 0 * * * /path/to/update.sh
保存并退出编辑器。
现在,当计划任务执行时,脚本将自动更新代码、打包并运行Java应用。
在此附出一份例子:
#!/bin/sh
echo =================================
echo 自动化部署脚本启动
echo =================================
echo 停止原来运行中的工程
APP_NAME=xiaoyao-admin.jar
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 /project-space/blog/blog
echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成
echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`
cd /project-space/blog/blog/xiaoyao-admin/target
echo 启动项目
nohup java -jar xiaoyao-admin.jar &> xiaoyaoBlog.log &
echo 项目启动完成