第一步,安装SVN
yum install subversion
yum remove subversion(卸载)
第二步,创建SVN版本库
mkdir -p /var/svn/svntest
第三步,创建版本库
svnadmin create /var/svn/svntest
执行完上面命令后会生成如下文件,说明版本库创建成功:
第四步,进入conf目录配置该版本库的文件:
authz文件是权限控制文件
passwd是帐号密码文件
svnserve.conf SVN服务配置文件
第五步,配置passwd,语法:用户名=密码,例:
[users]
test1 = 123456
test2 = 123456
第六步,配置authz用户权限文件,rw是有读写权限:
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
admin_group = test2
[/]
test1 = rw
[/adminfile]
@admin_group = rw
第七步,配置svnserve.conf文件,打开下面几个注释即可:
anon-access = read #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /var/svn/svntest #认证空间名,版本库所在目录
第八步,启动SVN版本库,完成:
启动SVN:
svnserve -d -r /var/svn/svntest
关闭SVN(查看进程PID,然后kill掉):
ps aux | grep -i svn
kill pid号
防火墙开启3690端口(注意打开端口的访问权限。svn服务的默认端口为3690):
编辑防火墙配置文件:
a.CentOS7 之前版本iptables 防火墙:
vi /etc/sysconfig/iptables
增加下面一行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
重启防火墙
service iptables restart
b.CentOS7 之后版本firewall 防火墙:
CentOS7 版本 firewalld 防火墙:
添加(--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=80/tcp
第九步,实现自动同步:
首先在服务器上建一个文件夹:
mkdir /data/wwwroot/testweb
执行check:
svn --username test1 --password 123456 co svn://127.0.0.1 /data/wwwroot/testweb/
在/var/svn/svntest/hook下创建post-commit文件,文件设置可执行权限,加入以下内容:
#!/bin/bash
REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
WEB_PATH=/data/wwwroot/testweb
SVN_USER=test1
SVN_PASS=123456
LOG_PATH=/tmp/svn-act.log
echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
svn update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache >> $LOG_PATH
chown -R 777 $WEB_PATH
保存后付权限
chmod a+x post-commit
重启svn后实现自动同步功能
创建多项目:
(1): 创建svn仓库路径
mkdir -p /var/svn/project1
mkdir -p /var/svn/project2
svnadmin create /var/svn/project1
svnadmin create /var/svn/project2
注意:为了规范:一般在项目目录下再创建,项目代码导入到trunk目录:
mkdir -p /var/svn/projec1/trunk
mkdir -p /var/svn/projec1/tags
mkdir -p /var/svn/projec1/branches
项目2操作和一类似。
其他配置参考以上步骤
(2):启动svn服务
svnserve -d -r /var/svn/
注意:如果在一台服务器上同时启动多个版本管理,那么启动路径必须是所有项目仓库的根路径:比如
/var/svn/project1 /var/svn/project2 -------------------> /opt/svn/