部署Svn+自动发布单/多台服务
企业实战Svn
环境要求:
服务端:
系统 :Centos 7.4 (刚安装完的系统)
项目名称:www.ITM.com www.CML.com
yum源下载地址:http://mirrors.163.com/.help/centos.html
安装epel源:yum -y install epel-release
IPv4: 192.168.100.125/24
客户端:
系统:windows 7
Svn工具:TotoiseSvn
IPv4:192.168.100.114/24
1、Svn搭建
[[email protected] ~]# yum -y install subversion-1.7.14-14.el7.x86_64
[[email protected] ~]# systemctl enable svnserve.service
[[email protected] ~]# mkdir -p /webdept/svnconf
[[email protected] ~]# svnadmin create /webdept/www.ITM.com
[[email protected] ~]# svnadmin create /webdept/www.CML.com
[[email protected] ~]# ll /webdept/www.ITM.com/
文件描述:
db目录:就是所有版本控制的数据存放文件
hooks目录:放置hook脚本文件的目录
locks目录:用来放置subversion监控锁定数据的目录,用来追踪存取文件库的客户端
format文件:是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号
conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等),也是我们要关注的配置文件
[[email protected] ~]# ls /webdept/www.ITM.com/conf/
authz passwd svnserve.conf
authz #认证权限相关
passwd #用户名和密码
svnserve.conf #服务器配置文件
[[email protected] ~]# cp /webdept/www.ITM.com/conf/passwd /webdept/svnconf/passwd
[[email protected] ~]# cp /webdept/www.ITM.com/conf/authz /webdept/svnconf/authz
注:因为svn服务器上存在多个项目,为方便管理账户信息、授权,使用统一的用户配置文件
[[email protected] ~]# vim /webdept/svnconf/passwd
注:创建一个test用户 密码 123456
[[email protected] ~]# vim /webdept/svnconf/authz
注:对www.ITM.com这个项目授权 r:读 w:写
[[email protected] ~]# vim /webdept/www.ITM.com/conf/svnserve.conf
注:anon-access = read #原先注释掉了,匿名用户可以读,使用none的话就是匿名用户不可以访问
auth-access = write #这几行都要取消注释,认证用户可以写,可以是read,write,none
password-db = passwd #密码库文件,默认使用的是同一目录下的passwd文件作为用户密码库
authz-db = authz #认证权限文件
realm = Welcome to the ITM project #登陆提示信息
注意:此配置文件的所有内容必须顶格,否则会报错
[[email protected] ~]# vim /webdept/www.CML.com/conf/svnserve.conf
注:这个项目的 passwd authz 文件均使用绝对路径指定
1.1 设置开机自启动:
[[email protected] ~]# vim /lib/systemd/system/svnserve.service
[[email protected] ~]# vim /etc/sysconfig/svnserve
注:把原/var/svn 改为自己创建的svn根目录
reboot重启测试
1.2 windows客户端连接
1.3 排错1:
如出现一直连接不上,是因为firewall的缘故,解决方案:
第一种
关闭防火墙:
临时关闭:systemctl stop firewalld
永久关闭:systemctl disable firewalld
第二种
防火墙放行规则:
[[email protected] ~]# firewall-cmd --permanent --add-port=3690/tcp
[[email protected] ~]# firewall-cmd --reload
本次使用关闭防火墙
连接成功
1.4 排错2:
经过排错1后连接正常,但发现每次重启系统后无法连接,服务也是启动状态,报错图:
查看服务进程:
[[email protected] ~]# ps -aux| grep svn
解决方案:
临时解决:手动执行: kill -9 1014(PID) 结束进程
启动服务:[[email protected] ~]# svnserve -d -r /webdept/
永久解决:
[[email protected] ~]# vim /etc/selinux/config
将Enforcing 改为 Disabled 永久关闭掉Selinux
[[email protected] ~]# reboot
通过永久解决方法测试后发现能正常开机自启并连接成功
2、Svn自动更新到web根目录
环境要求
实验环境:
apache 和 SVN都属于同一台服务器
IPv4:192.168.100.125/24
svn钩子是啥?
钩子就是由版本库的事件(代码提交,属性修改等)触发的程序(Shell 脚本等)。
每一个 SVN 仓库下都有一个目录hooks,在这里面放所有的钩子程序。其中以.tmpl结尾的代表是模板,可以用来参考。
2.1 安装apache
[[email protected] hooks]# yum -y install httpd
[[email protected] ~]# vim /etc/httpd/conf.d/vhosts-httpd.conf
<VirtualHost *:80>
ServerName www.ITM.com
DocumentRoot /var/www/www.ITM.com
</VirtualHost>
<VirtualHost *:80>
ServerName www.CML.com
DocumentRoot /var/www/www.CML.com
</VirtualHost>
注:配置好虚拟目录
[[email protected] ~]# systemctl start httpd
[[email protected] ~]# systemctl enable httpd
2.2 www.ITM.com 项目
[[email protected] ~]# cd /webdept/www.ITM.com/hooks/
[[email protected] hooks]# vim post-commit
#!/bin/sh
export LANG=en_US.utf8
SVN_PATH=/usr/bin/svn
WEB_PATH=/var/www/www.ITM.com
$SVN_PATH update $WEB_PATH --username 'test' --password '123456' --no-auth-cache
#编辑post-commit 脚本
[[email protected] hooks]# chown apache:apache post-commit
[[email protected] hooks]# chmod 755 post-commit
[[email protected] hooks]# cd /var/www
[[email protected] www]# svn co svn://192.168.100.125/www.ITM.com
#输入root 用户认证密码: XXXXX
#输入svn连接用户:test
#输入svn连接密码:123456
#是否保存秘钥:yes
2.3 www.CML.com 项目
[[email protected] ~]# cd /webdept/www.CML.com/hooks/
[[email protected] hooks]# vim post-commit
#!/bin/sh
export LANG=en_US.utf8
SVN_PATH=/usr/bin/svn
WEB_PATH=/var/www/www.CML.com
$SVN_PATH update $WEB_PATH --username 'test' --password '123456' --no-auth-cache
#编辑post-commit脚本
[[email protected] hooks]# chown apache:apache post-commit
[[email protected] hooks]# chmod 755 post-commit
[[email protected] hooks]# cd /var/www
[[email protected] www]# svn co svn://192.168.100.125/www.ITM.com
#输入root 用户认证密码: XXXXX
#输入svn连接用户:test
#输入svn连接密码:123456
#是否保存秘钥:yes
2.4 验证
windows客户端先检出Svn上的项目
上传index.html 测试页面
内容分别为:
My www.CML.com V1
My www.ITM.com V1
上传好之后提交
修改Windows客户端的host文件,否则会无法连接。
第一次通过浏览器去访问
修改index.html内容后提交更新再次去访问
My www.CML.com V2
My www.ITM.com V2
感言:不管有多难,只要不放弃就会有收获。