简单介绍一下 背景
最近感觉 开发阶段 发包 频繁太麻烦
,就想着优化一下 发布的流程 ,具体如下:
- 开发工具 :Eclipse
- 部署环境 :Linux Ubuntu 16.04.2
- 代码工具 :SVN
文章目录
第一步 Linux配置 SNV 账号
1.yum安装svn (注意防火墙开发端口号,如果是 云服务器,需要添加安全组开发端口号)
svnserve --version (检测是否安装)
yum install -y subversion 直接安装
yum remove subversion 卸载
2.创建svn资源仓库
svnadmin create svn(仓库名称) 创建svn仓库
3.有以下几个配置文件 conf db format hooks locks README.txt
在conf中 authz #权限配置文件 在[groups]下面加入: [/]
= rw #所有用户有读写权限 dangerman = ##危险分子?什么是危险分子?没有任何权限 [svndir:/] ###定义目录,项目的根目录
passwd #用户名密码文件
在[users]中加上 yunwei(名称) = 123456(密码)
svnserve.conf #资源库配置文件
这个配置文件打开下面几行前面的注释,删除最前面的空格:
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository
4.启动 查看状态 停止
svnserve -d -r /opt/svn (安装位置) 启动 ps -aux|grep svnserve (查看状态) 关闭 killall svnserve
5.克隆 更新 查看 等
svn co(checkout) $url(svn://xx.xxx.xxx.xxx/test) 文件夹名 #拉取项目 svn log -l 5 查看 svn 文件的最近5条记录
第二步 设置历史回滚路径和 脚本
1 路径管理
2 脚本
代码(示例):
packageName=test
tomcat=/mnt/myData/tomcat/tomcat6
serverPath=${tomcat}/webapps
projectPath=$(pwd)
historyPath=/mnt/myData/history/$packageName
buildPackageWar=$packageName.war
serverPackageWar=$packageName.war
backWar=$packageName-$(date +%y%m%d%H%M).war
#svn update && mvn clean && mvn package
updateProject(){
echo "当前代码分支"
git branch
read -r -p "确认更新该分支 [Y/n] " input
case $input in
[yY][eE][sS][yY])
if git pull
then
echo "代码更新成功"
else
echo "代码更新失败,结束"
exit
fi
;;
[nN][oO]|[nN])
echo "取消更新"
exit
;;
*)
esac
}
build(){
echo "项目路径:$projectPath"
echo "===================开始打包==================="
if mvn clean && mvn package -P$1;
then
echo "编译包名称:$buildPackageWar"
echo "===================打包完成==================="
echo ">>>> 移动 $projectPath/target/$buildPackageWar"
cp "$projectPath"/target/$buildPackageWar "$projectPath"/$serverPackageWar
echo "<<<< 到 $projectPath/$serverPackageWar 完成"
else
echo "打包失败,结束"
exit
fi
}
backup(){
echo "备份路径:$historyPath"
echo "备份包名称:$backWar"
if [ -d "$historyPath" ];
then
echo "备份目录:$historyPath 已存在"
else
echo "备份目录:$historyPath 不存在,创建文件夹"
mkdir -p "$historyPath"
fi
if [ -f "$projectPath/$serverPackageWar" ];
then
echo ">>>>开始备份 $projectPath/$serverPackageWar"
cp "$projectPath"/$serverPackageWar "$historyPath"/"$backWar"
echo "<<<<备份完成 到 $historyPath/$backWar"
else
echo "$projectPath/$serverPackageWar 不存在,无需备份"
fi
}
deploy(){
echo "===================开始部署==================="
echo "部署路径:$serverPath"
echo "部署包名称:$serverPackageWar"
echo ">>>> 部署包 $projectPath/$serverPackageWar"
cp "$projectPath"/$serverPackageWar "$serverPath"/$serverPackageWar
echo "<<<< 到 $serverPath/$serverPackageWar 完成"
read -r -p "是否查看日志 [Y/n] " input
case $input in
[yY][eE][sS][yY])
tail -f ${tomcat}/logs/catalina.out.$(date +%Y-%m-%d).log
;;
[nN][oO]|[nN])
exit
;;
*)
exit
;;
esac
}
case $1 in
prod)
updateProject
build "prod"
backup
deploy
;;
test)
updateProject
build "test"
backup
deploy
;;
*)
echo "ERROR:Invalid Param!!! eg:bash $0 (prod|test)" && exit 1
esac
第三步 部署测试
代码如下(示例):
root@jnydjky:~/project/purchase-app# ls
ceshi.txt package.sh pom.xml purchase-app.war src target
root@jnydjky:~/project/purchase-app# sh package.sh test
推荐学习
内容 | 地址 链接 |
---|---|
linux | Linux (实战)常用命令 |
nginx | 记录自己使用nginx 的所用知识点(包含 安装、查看地址、配置文件、卸载、重启、各种类型配置文件(更新中)、文件大小限制、session共享等) |
mysql | 【电商】mysql 建表的一些规则 和注意事项 |
如果你喜欢这个帖子,请不要忘记给它一个赞,这将是我最大的鼓励和支持。