由于公司项目需要,需要在阿里云CentOS服务器上搭建SVN服务器,实现多版本库同步更新和开机自启,所以自己动手,丰衣足食,MARK下,以供后用
1、安装:
# yum install subversion
2、查看安装位置:
# rpm -ql subversion
3、创建svn版本库目录:
# mkdir -p /data/svn
4、创建版本库(两个版本库,对应我的两个项目):
# /usr/bin/svnadmin create /data/svn/iasknew
# /usr/bin/svnadmin create /data/svn/axoa
5、分别进入各个版本库的conf目录(该svn版本库配置文件):
authz文件是权限控制文件
passwd是帐号密码文件
svnserve.conf SVN服务配置文件
#cd /data/svn/iasknew/conf
6、设置帐号密码:
# vi passwd
在[users]模块中添加用户和密码,格式:帐号 = 密码,如 admin = 123
7、设置权限:
# vi authz
在末尾添加如下代码:
[/]
admin = rw
意思是版本库的根目录admin对其有读写权限。
8、修改svnserve.conf文件:
# vi svnserve.conf
打开下面的几个注释:
anon-access = read #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /data/svn/iasknew #认证空间名,版本库所在目录
9、重复执行5、6、7、8步骤,直到所有版本库设置完成
10、启动svn版本库:
# svnserve -d -r /data/svn
也可修改监听端口(#svnserve -d -r /data/svn/ --listen-port=33690)
11、设置开机启动:
# vi /etc/rc.d/rc.local
# chmod +x /etc/rc.d/rc.local(确保该文件有执行权限)
在末尾添加
/usr/bin/svnserve -d -r /data/svn
修改端口(#/usr/bin/svnserve -d -r /data/svn/ --listen-port=33690)
12、进入网站根目录:
# cd /data/wwwroot
13、添加防火墙端口,并新建WEB程序目录:
# firewall-cmd --zone=public --add-port=3690/tcp --permanent
# firewall-cmd --reload
# svn checkout svn://192.168.10.80/axoa
# svn checkout svn://192.168.10.80/iasknew
14、分别进入各个版本库的hooks目录(该svn版本库配置文件):
# cd /data/svn/axoa/hooks
15、复制post-commit文件并增加可执行权限:
# cp post-commit.tmpl post-commit
# chmod -R +x post-commit
16、修改post-commit文件:
在末尾添加如下内容,把末尾几行没有注释掉的注释掉,修改内容如下:
SVN=/usr/bin/svn #这里配置的是svn安装bin目录下的svn文件
WEB=/data/wwwroot/axoa/ #对应的WEB目录
export LANG=en_US.UTF-8
$SVN update $WEB --username admin --password 密码
17、重复执行14、15、16步骤,直到所有版本库设置完成
18、启动SVN:
# netstat -tunlp | grep svn
# kill -9 进程id
# svnserve -d -r /data/svn
19、注意:
确保版本库都在svn文件夹里面
export LANG=zh_CN.GBK 是为了解决svn post commit 中文乱码
20、checkout客户端访问:
svn://服务器ip/iasknew
输入设置的账号、密码即可
查询selinux安全上下文
semanage fcontext -l | grep -F '/var/svn(/.*)?' | cut -d':' -f3
添加安全上下文
semanage fcontext -a -t svnserve_content_t '/data/svn(/.*)?'
查询
semanage fcontext -l | grep -F '/data/svn(/.*)?' | cut -d':' -f3
更新
restorecon -R /data/svn/
查询SVN的对应的标签
semanage fcontext -l | grep svn
添加执行权限
semanage fcontext -a -t svnserve_exec_t '/data/svn/scribe/hooks(/.*)?'
semanage fcontext -a -t svnserve_content_t '/data/scrapy(/.*)?'
semanage port -a -t svn_port_t -p tcp 33690
更新
restorecon -R /data/svn/scribe/hooks
修改etc/sysconfig/svnserve配置文件将OPTIONS="-r /var/svn"改成自己的svndata目录 如"-r /data/svn"
查看日志:
rm /var/log/audit/audit.log
service auditd restart
cat /var/log/audit/audit.log | grep svnserve
将svn注册成服务
找到 svn 的 service 配置文件 /etc/sysconfig/svnserve 编辑配置文件
- vi /etc/sysconfig/svnserve
将 OPTIONS="-r /var/svn" 改为 svn 版本库存放的目录,:wq 保存退出
在提示符下输入
- systemctl enable svnserve.service
启动服务:
- systemctl start svnserve.service
查看服务列表状态
- systemctl list-units --type=service
重启服务器,输入
- ps -aux | grep 'svn'