Linux安装SVN服务端(centos 7 )

2020-05-19  本文已影响0人  LemonTree7

步骤一:安装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:

  • 服务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'  
上一篇下一篇

猜你喜欢

热点阅读