web应用--远程服务器端的搭建和自动化部署
第一步,环境搭建
项目用到了jdk,数据库使用了redis和mysql,反向代理服务器为ngnix,应用部署到tomcat上,代码用git进行管理,maven进行编译构建,下面一次介绍这些部件的安装。
1.JDK安装
jdk有两种版本,这里采用open-jdk的安装方式。
具体参照 https://www.cnblogs.com/Dylansuns/p/6974272.html
2.tomcat安装
tomcat先到apache官网下载对应版本的包,有的包可能会有tomcat无法启动的问题,这个要根据自己环境的版本去确定。
具体参照 Linux安装tomcat
3.mysql+redis安装
mysql 具体参照安装mysql;
redis 具体参照 安装redis;
4.ngnix安装
ngnix安装具体参照 nginx的安装步骤;
5.其他
代码管理用git,git为Linux本身依赖的,不需要安装
Linux 有些环境的搭建可以利用pip,pip3这个依赖包管理工具来进行,方便快捷。
第二步,自动化部署
这个部分是我要着重介绍的,这里用到了shell脚本来编写应用的自动化编译部署工具
首先我们在 /usr/local下新建一个automake的文件夹,用于管理自动化部署的脚本工具。
然后在 /usr/local下将我们的代码利用 git clone 拉取到本地项目文件,这里我利用来远程的GitHub来管理代码。
建议在操作之前,先利用 sudo -i 命令切换到root用户模式,普通用户有很多权限问题,为了方便,这里选用root用户操作
在我们的aotumake文件夹下新建三个文件,如图
这三个文件分别为自动编译,自动部署工具,及回滚版本工具
下面就这三个脚本进行介绍:
编译脚本autobuild.sh
#! /bin/sh
echo '####################开始编译####################'
path=`/usr/local/online-forum` #当前路径
cd /usr/local/online-forum
echo '####################拉取最新代码####################'
git pull #拉远程代码到服务器
mvn clean install #这里我遇到的问题是如果直接install,部署后会有404问题,先clean再install可以解决这个问题
echo '####################编译结束####################'
自动化部署脚本autodeploy.sh
#! /bin/sh
echo '####################开始自动部署####################'
path=/usr/local/automake #当前路径
pathpro=/usr/local/online-forum/target #war包路径
tomcatPath=/usr/local/apache-tomcat-8.5.23 #指定tomcat文件目录名称
cd $tomcatPath/bin #进入tomcat的bin目录
PID=$(ps -ef|grep tomcat|grep -v grep|awk '{print $2}')
if [ -z "$PID" ];then
echo "no tomcat process"
else
./shutdown.sh #停止tomcat服务
echo '####################tomcat服务停止####################'
fi
sleep 1 #休眠1s
cd ../webapps #进入tomcat的webapps目录
rm -fr 1.03 #删除对应项目文件目录,我的项目为1.03
echo '####################删除原文件目录####################'
mv 1.03.war 1.03.war.$(date +%Y%m%d) #备份webapps下的旧版本war包
echo '####################备份原war包到webapps目录下####################'
cp $pathpro/1.03.war ./ #复制test.war到webapps路径下
sleep 1 #休眠1s
cd ../bin
./startup.sh #启动tomcat服务
echo '####################tomcat服务启动####################'
echo '####################部署结束####################'
回滚脚本 resetdeploy.sh。执行时需要一个以前版本的参数,具体可以到tomcat下webapps/文件查看旧版本的war包参数。
#! /bin/sh
echo '####################开始回滚版本####################'
path=/usr/local/automake #当前路径
tomcatPath=/usr/local/apache-tomcat-8.5.23 #指定tomcat文件目录名称
cd $tomcatPath/bin #进入tomcat的bin目录
if [ -n $1 ];then #判空操作
echo "回退版本为$1"
else
echo '#############请输入参数,参数为版本号###############'
exit
fi
PID=$(ps -ef|grep tomcat|grep -v grep|awk '{print $2}')
if [ -z "$PID" ];then
echo "no tomcat process"
else
./shutdown.sh #停止tomcat服务
echo '####################tomcat服务停止###############'
fi
sleep 1 #休眠1s
cd ../webapps #进入tomcat的webapps目录
rm -fr 1.03 #删除test文件目录
echo '##############删除现文件目录###############'
mv 1.03.war.$1 1.03.war #回滚
echo '##################回滚原war包到目录下####################'
sleep 1 #休眠1s
cd ../bin
./startup.sh #启动tomcat服务
echo '####################tomcat服务启动####################'
echo '####################回滚结束####################'
这三个脚本的注释已经非常清楚了,详情看注释,这里就不做介绍了。
这就是一个完整的服务器环境的搭建与部署的流程,自己在部署的过程中,肯定会遇到很多问题,但解决的问题越多,对应用的开发与部署的理解就越深。
所以,Do it !,然后,耐心点。