最近放弃自己搭建的svn,将项目迁移到github上,大地方还是稳,那么相应的服务器部署也做了变更,下面我就简单记录下操作过程
一、基础环境说明
服务器:阿里云ubuntu16.04
项目部署服务器:tomcat8.5.43
JDK:1.8.0_211
maven:3.6.1
git:2.7.4
其他工具 secureCRT WinSCP
简而言之,通过git获得githunb上的最新的项目内容,再通过mvn package
命令打包,然后替换最新的项目数据,最后重启服务器并完成更新
二、具体操作
sh脚本如下:
#/bin/sh
#1.删除中间目录内容
#2.git拉取最新代码
#3.将代码拷贝至中间目录下(这里为了防止污染git本地库,现将其放到中间目录下)
#4.mvn打包
#5.替换关键文件(主要包含jdbc和log4j等)
#6.停止服务器
#7.备份并清空老项目内容
#8.将新代码拷贝至部署路径
#9.启动服务器
########## 脚本开始 ##########
#备份文件名称
JIRA_FILE_NAME=myPro_$(date +'%Y-%m-%d_%H%M%S');
#基础地址
PRJ_BASE=/data
#git仓库地址
GIT_BASE=${PRJ_BASE}/git/myPro
#项目发布基础地址
CODE_BASE=${PRJ_BASE}/project
#替换文件存放地址(主要包含jdbc和log4j)
REPLACE_PATH=${PRJ_BASE}/replaceFile
#项目发布地址
DEPLOY_BASE=${CODE_BASE}/myPro/
#中间项目地址
TEMP_PRO=${CODE_BASE}/temp_pro
#mvn打包后项目的配置文件地址
CONFIG_PATH=${TEMP_PRO}/myPro/target/myPro/WEB-INF/classes
#项目包备份目录
BACKUP_PRO=${CODE_BASE}/backup_pro
#tomcat bin目录地址
SHELL_PATH=/data/tomcat-8.5.43/bin
echo "------------------- 开始部署项目 ---------------------------------------"
echo "------------------- 1.删除中间目录内容 ---------------------------------"
rm -rf ${TEMP_PRO}/*
cd ${GIT_BASE}
echo "------------------- 2.从git检出项目 -----------------------------------"
git pull origin master
echo "------------------- 3.将代码拷贝至中间目录下(去掉多余文件) -----------"
cp -nrf ${GIT_BASE} ${TEMP_PRO}
rm -rf ${TEMP_PRO}/myPro/.git
rm -rf ${TEMP_PRO}/myPro/.gitignore
echo "------------------- 4.通过mvn的package命令打包 -------------------------"
cd ${TEMP_PRO}/myPro
mvn package
echo "------------------- 5.替换生产配置文件 ---------------------------------"
cp -rf ${REPLACE_PATH}/jdbc.properties ${CONFIG_PATH}
cp -rf ${REPLACE_PATH}/log4j2.xml ${CONFIG_PATH}
echo "------------------- 6.停止tomcat服务 -----------------------------------"
${SHELL_PATH}/shutdown.sh
echo "------------------- 7.备份并清空老项目内容 -----------------------------"
tar -zcPf ${BACKUP_PRO}/${JIRA_FILE_NAME}.tar.gz ${DEPLOY_BASE}/
rm -rf ${DEPLOY_BASE}/*
echo "------------------- 8.拷贝新项目内容到部署目录 -------------------------"
cp -nrf ${TEMP_PRO}/myPro/target/myPro ${CODE_BASE}/
echo "------------------- 9.启动tomcat服务 -----------------------------------"
${SHELL_PATH}/startup.sh
echo "------------------- 部署项目结束 ---------------------------------------"
exit 0
三、说明
1.关于tomcat
tomcat并不是通过在webapps下放war包的形式,而是另起一个目录放war解压后的代码作为项目代码
具体配置就是修改tomcat的conf/server.xml
增加此行即可
2.关于git
进入你的Git pull的本地仓库目录下,执行下面命令(存储账号密码):
git config --global credential.helper store
然后再进行一次pull操作 输入账号密码,此后再pull就不再需要输入账号密码
这样才能保证你脚本执行过程中不进行控制台输入,保证脚本正常运行
3.关于脚本
如下的错误,说明你的脚本权限不够,修改权限即可:
chmod 744 pro.sh
如果你的脚本出现\r命令错误,说明你的脚本因为window和ubuntu换行符不一致导致的,这时候你需要安装tofrodos软件(Ubuntu下默认没有安装dos2unix工具,可以用tofrodos替代 )
sudo apt-get install tofrodos
安装后 直接执行下面命令:
/usr/bin/fromdos pro.sh
再次执行脚本
最后,此脚本的操作还是很简单的而且目前也有不少界面化自动部署,此方法并不一定最优选。
脚本其实写的比较蹩脚,毕竟不是专业的,我的侧重点还是项目开发,这个只是将一种方法介绍给大家。个人比较倾向于此方法,可以一定程度的自己控制项目部署。
到此,部署介绍完毕。