Linux学习笔记(五) | 青训营笔记

86 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天

前面记录了如何在linux上安装一些常用软件。liunx上运行的软件有很多,就不一一记录了。本节记录如何在linux上部署项目,正好大项目要部署到Linux上

手工部署

  1. 将项目打包成jar包
  2. 将打包好的jar包上传到linux服务器
  3. 给项目程序运行时对应的端口号关闭防火墙
  4. 项目启动:java -jar <jar包名>
  5. 改为后台运行SpringBoot,并将日志输出到日志文件:
    • nohup命令
      • 作用:不挂断地运行指定命令,退出终端不会影响程序的运行
      • 语法格式:nohup Command [Arg...][&]
      • 参数说明:
        • Command:要执行的命令
        • Arg:一些参数,可以指定输出文件
        • &:让命令在后台运行

shell脚本部署

手工部署的话,每次都要手动打包,然后上传到linux再手动关闭原程序并运行新程序,有点麻烦。利用shell脚本就可以实现自动拉取、自动编译、自动运行。

  1. 在Linux安装Git
    //1.安装git
    yum list git//列出git安装包
    yum install git//在线安装git
    
    //2.拉取项目
    cd <目标路径>
    git clone <url>
    
  2. 在linux安装maven
  3. 编写Shell脚本(拉取代码、编译、打包、启动)
  4. 为用户授权执行Shell脚本的权限:chmod 777 xxx.sh
  5. 执行Shell脚本./xxx.sh

通过如上步骤就可以很方便的重新部署项目了,下面提供了一段shell脚本代码作为参考。

#git地址
git_path=""
#项目路径
code_path=""
#项目名称,与giturl那一致
projectName=""
#生成的jar包的名称,不用后缀
projectName3=""
env="master"
 
#如果项目文件夹不存在说明没有下载过改项目代码,需要检出该项目
if [ ! -d ${code_path}${projectName} ];
  then
echo ${projectName}"不存在,检出该项目"
cd $code_path
# git地址
git clone ""
  else
echo ${projectName}"存在,更新代码"
cd ${code_path}${projectName}
git reset --hard
git pull
fi
 
#删除项目
echo "删除项目"
rm -rf "${code_path}${projectName}/${projectName3}/target"
# 删除原本的jar包
echo "删除原本的jar包"
rm -rf "${code_path}${projectName3}"
 
# 再打项目包
echo "maven开始打包"
cd ${code_path}${projectName}
mvn install -Dmaven.test.skip=true -Denv=$env -U
#如果打包出错直接退出
if [ $? -ne 0 ]; then
      echo "打包出错"
      exit 1
fi
echo "maven打包success"
 
#关闭jar服务
echo "关闭jar服务"
查询jar包服务进程ID,并杀掉该进程
pidList=$(ps aux | grep $projectName3 | grep -v grep | awk '{print $2}')
for pid in $pidList
do
kill -9 $pid
echo 'kill pid '$pid
done
echo "关闭jar服务success"
 
#复制打包好的jar包到项目路径下面
echo "复制打包好的jar包到项目路径下面"
cd ${code_path}
rm -rf "${projectName3}.jar"
cp "${code_path}${projectName}/target/${projectName3}.jar" ${code_path}
echo "复制打包好的jar包到项目路径下面success"

#启动jar包
echo "启动jar包"
java -jar "${projectName3}.jar" &
echo "启动jar包success"
echo "success"