阿里云服务器上部署github项目,自己来玩部署,不求人

最近放弃自己搭建的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解压后的代码作为项目代码
阿里云服务器上部署github项目,自己来玩部署,不求人_第1张图片
具体配置就是修改tomcat的conf/server.xml
增加此行即可
阿里云服务器上部署github项目,自己来玩部署,不求人_第2张图片

2.关于git

进入你的Git pull的本地仓库目录下,执行下面命令(存储账号密码):

git config --global credential.helper store

然后再进行一次pull操作 输入账号密码,此后再pull就不再需要输入账号密码

这样才能保证你脚本执行过程中不进行控制台输入,保证脚本正常运行

3.关于脚本

如下的错误,说明你的脚本权限不够,修改权限即可:
在这里插入图片描述

chmod 744 pro.sh

阿里云服务器上部署github项目,自己来玩部署,不求人_第3张图片
如果你的脚本出现\r命令错误,说明你的脚本因为window和ubuntu换行符不一致导致的,这时候你需要安装tofrodos软件(Ubuntu下默认没有安装dos2unix工具,可以用tofrodos替代 )

阿里云服务器上部署github项目,自己来玩部署,不求人_第4张图片

sudo apt-get install tofrodos

安装后 直接执行下面命令:

/usr/bin/fromdos pro.sh

再次执行脚本
阿里云服务器上部署github项目,自己来玩部署,不求人_第5张图片
阿里云服务器上部署github项目,自己来玩部署,不求人_第6张图片

最后,此脚本的操作还是很简单的而且目前也有不少界面化自动部署,此方法并不一定最优选。
脚本其实写的比较蹩脚,毕竟不是专业的,我的侧重点还是项目开发,这个只是将一种方法介绍给大家。个人比较倾向于此方法,可以一定程度的自己控制项目部署。

到此,部署介绍完毕。

你可能感兴趣的:(服务器搭建)