Linux(CentOS)搭建SVN服务器
1.安装命令
yum -y install subversion
查看SVN安装位置
rpm -ql subversion
查看SVN版本
svnserve --version
2.创建版本库根目录(此仅为目录,为后面创建版本库提供存放位置)
mkdir /home/svn
3.创建SVN版本库(创建项目)
svnadmin create /home/svn/project1
svnadmin create /home/svn/project2
创建成功后,进入project1目录下
cd /home/svn/project1
进入目录,可以看见如下文件信息:
创建版本库公共配置文件存放目录,随便打开一个项目版本库复制一份conf目录(即:/home/svn/project1/conf)到 /home/svn 目录下
cp -r /home/svn/project1/conf /home/svn/conf
清空刚才创建的项目版本库conf目录,删除库的所有配置文件
rm -f /home/svn/project1/conf/* rm -f /home/svn/project2/conf/*
4.修改配置
进入conf目录
cd /home/svn/conf
conf目录下,一共存放三份重要的配置文件,如下:
authz:负责账号权限的管理,控制账号是否读写权限 passwd:负责账号和密码的用户名单管理 svnserve.conf:svn服务器配置文件
编辑 authz 文件
@group1 = rw 中的"rw"意思是[groups]下定义的用户对指定的版本库有读写权限
编辑 passwd 文件
编辑 svnserve.conf 文件(注意:配置的前面不能有空格,一定要顶格写)
#配置匿名用户不可读(none匿名用户不可读写)
anon-access = none
#授权用户可写 auth-access = write #使用哪个文件作为账号文件
password-db = ../../conf/passwd #使用哪个文件作为权限文件
authz-db = ../../conf/authz #认证空间名,版本库所在目录,该文件只为了后面方便复制到每个项目下的conf目录下,每个项目下的svnserv.conf中需要指明当前项目的目录
realm = /home/svn(后面单个项目中的svnserve.conf就需要设置如:realm = /home/svn/project1)
复制 svnserve.conf 配置文件到刚创建的所有项目版本库的conf目录下
cp -f /home/svn/conf/svnserve.conf /home/svn/project1/conf/svnserve.conf cp -f /home/svn/conf/svnserve.conf /home/svn/project2/conf/svnserve.conf
修改/home/svn/project1/conf/svnserve.conf
realm = /home/svn/project1
修改/home/svn/project2/conf/svnserve.conf
realm = /home/svn/project2
注意:当SVN服务启动时/home/svn/conf下的svnserve.conf文件并不会被版本库载入,而真正被载入的配置是相对每个project/conf里的svnserve.conf文件,所以只是备份在当前目录下为了以后添加项目时方便复制到新的project/conf里,但是所有项目版本库conf目录下的svnserve.conf文件中“realm”都是不一样的!当然每个project/conf里的svnserve.conf文件都复制好并设置好“realm”后,/home/svn/conf下的svnserve.conf文件也可以被删掉。
5.自行配置好防火墙(默认3690端口)
云服务器配置好安全组
CentOS7放开端口
firewall-cmd --permanent --add-port=3690/tcp firewall-cmd --reload
6.启动SVN服务器(注意:如果在一台服务器上同时启动多个版本管理,那么启动路径必须是所有项目仓库的根路径)
svnserve -d -r /home/svn
也可再设置别的端口(默认端口3690)
svnserve --listen-port 3691 -d -r /home/svn
查看端口是否开启
netstat -ntlp
查看进程号
ps -A | grep svn
关闭进程号
kill 进程号
查看SVN启动结果
ps -ef | grep svnserve
7.访问SVN服务器
Windows系统
svn://ip地址/project1
Linux系统
svn co svn://ip地址/project1
其他命令
//查看目录列表 svn list --username 账号 [版本库目录] //查看文件详细信息 svn info --username 账号 [版本库目录] //查看日志 svn log --username 账号 [版本库目录] //检出版本库 svn checkout --username 账号 svn://ip地址/[目录] [目标目录] //更新版本库 svn update [版本库目录]
8.配置使用systemctl管理SVN(CentOS7)
创建/etc/systemd/system/svn.service文件
vi /etc/systemd/system/svn.service
并写入内容
[Unit] Description=Subversion Server [Service] Type=forking ExecStart=/usr/bin/svnserve --daemon --root /home/svn ExecStop=/usr/bin/killall svnserve Restart=always [Install] WantedBy=default.target
其中,“/home/svn”是SVN仓库的根路径,请根据情况修改。
通知systemd有个新服务添加
systemctl daemon-reload
启动和停止SVN服务
systemctl start svn.service systemctl stop svn.service
配置开机自动启动
systemctl enable svn.service
检查SVN服务运作状态
systemctl status svn.service
查看是否开机启动
systemctl is-enabled svn.service