方案缘由: 为解决版本更新问题
项目长期以后,都是研发手动更新文件的方式来进行版本维护更新
这种方式带来的问题是容易漏掉文件出或者版本的不统一。
移交给运维之后,这种方式要进行改变。
为解决这个问题推行SVN更新计划
方案实施如下:
1.第一次办公室提交全部代码至SVN服务器
2.服务器需要把第一次提交的版本手动checkout
3.再更新只要在运维本地电脑基础上修改提交即可通过hocks的post-commit脚本快速更新线上2台服务器
客户端:
windows端 可通过360软件管家安装TortoiseSVN
linux端需要 yum install subversion -y
##所用的工具svn
在SVN版本内管理的文件都有.svn 这个隐藏文件
服务端:
yum install subversion -y
##所用的服务端svnserve 启动端口3690
指定svn的数据存储路径
mkdir -p /application/svndata
指定svn的配置文件信息路径
mkdir -p /application/svnpasswd
启动svn服务
svnserve -d -r /application/svndata/
创建版本库(多个项目可以建立多个版本库)如api1,api2
svnadmin create /application/svndata/tomcat
cd /application/svndata/tomcat/conf/
##以下每创建一个版本库都要操作,而且操作完还要重启
cp -p svnserve.conf svnserve.conf.default
进行详细配置
anon-access = none //禁止匿名访问
auth-access = write //认证后有读的权限
password-db = /application/svnpasswd/passwd //指定密码文件
authz-db = /appplication/svnpasswd/authz //指定权限认证文件
##帐号密码实行统一管理就不需要去每个版本库创建
cp -p authz passwd /application/svnpasswd/
chmod 700 authz
chmod 700 passwd
编辑passwd文件配置用户和密码(注意空格)
vim authz
编辑authz文件配置读取权限
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
杀死svn服务
pkill svnserve
启动svn
svnserve -d -r /application/svndata/
linux 客户端首次checkout(这里我用的本地测试所以用127.0.0.1)
mkdir /svndatas
svn co svn://127.0.0.1/tomcat /svndata/ --username=帐号 --password=密码
#文件名尽量不要用中文,如有应对中文#export LC_CTYPE=en_US.UTF-8
##第二次手动更新
#svn update --username 帐号 --password 密码 /svndata
###戏肉部分也就是自动部分就是修改一下hooks的pre-commit,post-commit
cd /application/svndata/tomcat/hooks/
cp post-commit.tmpl post-commit ; cp pre-commit.tmpl pre-commit
#注意权限
chmod 700 post-commit
chmod 700 pre-commit
vim post-commit
export LANG=en_US.UTF-8
LOGPATH="/app/log"
[ ! -d ${LOGPATH} ] && mkdir ${LOGPATH} -p
SVN=/usr/bin/svn
$SVN update --username 帐号 --password 密码 /svndata
if [ $? -eq 0 ];then
/usr/bin/rsync -az --delete /svndata /tmp/
mail -s "dear,tomcat $(date +%F%T)" shanxinbo@bwton.com,zhuyouen@bwton.com < /app/log/tomcat.log
fi
##最后一行删除
vim pre-commit
##过滤单个大大的文件和安装包文件的类型,这2条可做可不做,
REPOS="$1"
TXN="$2"
##5M
MAX_SIZE=5242880
FILIER='\.(tar|gz|zip|o|obj|rar)'
#脚本都是shell,这里可自己想做的事情,我这里是测试,rsync 没有复制到安装目录,来一条邮件说明事情结尾这个很有必要
邮件配置以下:删除postfix安装mailx
yum install mailx -y
vim /etc/mail.rc
set from="gao@163.com"
set smtp=smtp.qiye.163.com
set smtp-auth-user=gao@163.com
set smtp-auth-password=密码
set smtp-auth=login
End,所有操作如上。运维本地提交版本的时候一定要谨慎,确认完毕。起用hooks再在里面编写脚本是会提交通知版本库时就马上自动运行。
转载于:https://blog.51cto.com/1043868/1932829