步骤一:安装svn服务器
1.安装SVN服务
检查是否已安装
rpm -qa subversion
出现以上内容说明已经安装
安装SVN服务器
yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql
验证安装
cd /etc/httpd/modules
ls | grep svn
出现以上内容说明安装成功
查看版本
svnserve --version
版本号查询
2.代码库创建
安装完成后要建立SVN库
mkdir -p /opt/svn/repositories
svnadmin create /opt/svn/repositories
执行后,自动建立respositories库,查看/opt/svn/respositories文件夹包含了conf,db,format,hooks,locks,README.txt等文件,说明一个SVN库已经建立。
查看respositories库
3.配置版本库
进入上面conf文件夹下,进行配置
用户密码passwd配置
vi + passwd //+表示光标放在文件最低端
修改passwd为一下内容
[users]
# harry = harryssecret
# sally = sallyssecret
xuyunfeng=******
# =
设置账号密码
权限控制authz配置
vi + authz
设置哪些用户可以访问哪些目录,向authz文件追加以下内容
[/]
xuyunfeng=rw //给该用户访问所有库的权限 或 [repositories:/project] //repository库的根目录权限xuyunfeng=rw
# [groups]
# g_admin = admin,thinker
# =
#[:]
# [admintools:/]
# @g_admin = rw //表示admin账号与thinker账号对admintools版本库拥有读写权限
# * = //表示其他用户对admintools版本库无任何权限
# [test:/home/thinker]
# thinker = rw //表示thinker账号对test版本库下/home/thinker文件夹拥有读写权限
# * = r //表示其他用户对test版本库下/home/thinker拥有读权限
/ 表示根目录及以下,根目录是svnserve启动时指定的,我们指定的是/opt/svn;/ 就是指对全部版本库都具有权限
repositories:/ 表示对库repositories的根目录设置权限
tips:
权限配置文件中出现的用户名必须已在用户配置文件中定义。
对权限配置文件的修改立即生效,不必重启svn。
服务svnserve.conf配置
添加一下内容
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径
password-db=passwd
#访问控制文件
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm=/opt/svn/repositories
这里注意各标签不能错,也不能有重复,不然无法连接.
启动SVN
svnserve -d -r /opt/svn/repositories(你的svn所在目录)
//查看SVN进程
ps -ef|grep svn|grep -v grep
//root 12538 1 0 14:40 ? 00:00:00 svnserve -d -r /opt/svn/repositories
// 停止重启SVN
killall svnserve //停止
svnserve -d -r /opt/svn/repositories // 启动
步骤二:连接SVN
测试连接
(1) 在本地电脑上安装TortoiseSVN客户端:
成功安装TortoiseSVN后在电脑桌面右键有TortoiseSVN提示;选择Repo-browser;会出现一个地址栏;
(2)在地址栏输入:svn://+服务器IP地址 ;如果安装没问题的话就会进入服务器的资源库
如果连接不上,采用以下操作
1.确认SVN服务是否已启动
在终端输入命令,显示所有进程信息
ps -ef
image.png
显示这个说明已经启动
或者使用以下命令
ps -aux | grep svnserve
服务已启动
2.查看端口是否开放
在终端输入以下命令 查看当前所有tcp端口
netstat -ntlp
端口已开放
当前SVN端口为3690
查看端口号是否能够访问2种方式
1. 客户端,电脑(windows)打开cmd命令行窗口,使用telnet命令查看端口是否开放(需要安装telnet客户端)【控制面板——程序——启用或关闭windows功能中添加】
telnet [IP] [端口号]
image.png
看到这个说明已经成功
2.在服务器终端中输入以下命令,列出对外开放的端口
firewall-cmd --list-ports
查看svn服务端口是否在列表中
image.png
如果端口不在列表中 在终端输入如下命令
firewall-cmd --add-port=3690/tcp --permanent ##永久添加3690端口
如遇到FirewallD is not running 请查看Linux防火墙设置
步骤三:SVN设置开机自启动
Linux服务器端设置svn开机启动
方法一:
(1)在Linux服务器跟目录((/root路径下))创建一个脚本文件
touch svn.sh
2) 进入脚本文件
vim svn.sh
3)添加一下内容
#!/bin/bash
/usr/bin/svnserve -d -r /opt/svn/repositories
解释一下:
这里的svnserve路径保险起见,最好写绝对路径,因为启动的时候,环境变量也许没加载。
绝对路径怎么查?
which svnserve
4)改该脚本的执行权限
chmod 777 svn.sh
(5)加入自动运行
vi /etc/rc.d/rc.local
在末尾添加脚本的路径:
/root/svn.sh
(6)重启Linux服务器,重启后查看svn服务器是否已经开启
ps -ef|grep svnserve
如果显示以下信息表示svn已经开启了:
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN
方法二:
CentOS 7 的 /etc/rc.d/rc.local 是没有执行权限的, 系统建议创建 systemd service 启动服务
于是查看 systemd 里 svn 的配置文件 /lib/systemd/system/svnserve.service
[Unit]
Description=Subversion protocol daemon
After=syslog.target network.target
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/svnserve
ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS
[Install]
WantedBy=multi-user.target
找到 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'