CentOS7中安装Subversion版本控制系统

Subversion 就是一个自由/开源版本控制的软件,它记录你每次对数据仓库的修改,并能使你找回某一个时刻修改的版本文件。它的核心就是数据仓库,你需要把你的文件提交到数据仓库,并更新数据仓库的文件,及根据需要能通过版本找到当时的数据。

因为项目需要在CentOS 7.4环境下搭建一个SVN服务器,但是CentOS里自带的subversion版本只到1.7.14

与Subversion官网8月10日发布的SVN 1.8.19, SVN 1.9.7相去甚远,会严重影响SVN客户端的使用,因此我们需要卸载掉自带的Subversion,使用yum方式重新安装Subversion最新版本

我们执行命令

yum remove subversion*

yum clean all

直接卸载subversion和相关库包

但是当我们使用yum命令再安装subversion时,发现CentOS自带源的Subversion版本仍然是1.7.14

说明从CentOS自带源安装Subversion最新版本此路不通,我们需要另行添加Repo源

参考https://tecadmin.net/install-subversion-1-8-on-centos-rhel/#一文,我们在

/etc/yum.repos.d目录下添加subversion.repo文件,内容如下

[Subversion]
name=Wandisco SVN Repo
baseurl=http://opensource.wandisco.com/centos/$releasever/svn-1.9/RPMS/$basearch/
enabled=1
gpgcheck=0

由于我们这里安装的是SVN1.9,在repo文件里配置的是svn-1.9,如果要安装SVN1.8,可以改为svn-1.8

执行yum install -y subversion命令安装Subversion

下列步骤参考了https://www.cnblogs.com/fuyuanming/p/6123395.html一文,

有部分有所修改

1)创建运行SVN服务器所需的用户svn

groupadd svn
useradd -g svn svn

这里之所以要创建svn用户启动SVN服务器,而不使用root用户启动SVN服务器,是因为如果使用root用户启动SVN服务器,通过SVN客户端使用非root账户访问SVN服务器时,会出现

“xxxxxxxx db/txn-current-lock:permission denied”错误。

将svn用户加入sudoers用户中

2)执行rpm -ql subversion命令了解SVN安装的位置

3)创建SVN版本库文件夹

mkdir -p /opt/svnRepos

切换到svn用户,为svn用户添加这个文件夹的访问权限

sudo chmod -R o+rw /opt/svnRepos

4)创建SVN版本库

svnadmin create /opt/svnRepos

执行命令后/opt/svnRepos文件夹下新增了一些文件夹

5)添加用户密码和访问权限

进入conf目录,可以看到以下文件

authz文件是权限控制文件

passwd是帐号密码文件

svnserve.conf是SVN服务配置文件

修改passwd文件,在[users]段添加用户svnuser1和访问密码

修改authz文件,在文件最后为svnuser1用户添加svn根目录访问权限

这里[/]表示是svn根目录,svnuser1=rw说明svnuser1用户对根目录有读写权限。如果要限制某些用户对某些文件夹的

读写权限, 这里的[/]可以改为具体的文件夹目录,再添加具体的用户权限,这里不再赘述。

6) 修改svn配置文件

修改svnserve.conf文件

打开以下几项的注释(图中以白色字体标注)

anon-access = read #匿名用户可读

auth-access = write #授权用户可写

password-db = passwd #使用哪个文件作为账号文件

authz-db = authz #使用哪个文件作为权限文件

realm = /opt/svnRepos # 认证空间名,版本库所在目录

7)启动SVN服务器

执行以下命令

svnserve -d -r /opt/svnRepos --config-file=/opt/svnRepos/conf/svnserve.conf

这条指令的参数-d表示以守护进程形式运行Svn服务器,-r表示Svn服务器的根目录,后接SVN的根目录。

–config-file是Svn服务器启动所引用的配置文件,后接配置文件路径。

svnserve指令的更多参数可以参考此文

https://linux.die.net/man/8/svnserve

启动后可以查看到svnserve进程已经启动

8)在防火墙上开放SVN服务器端口

SVN服务器默认端口是3690,如果要修改默认端口,可以在运行svnserve命令时添加–listen-port参数,后接需要指定的端口号。

执行以下命令在CentOS7系统防火墙上开放SVN服务器端口

firewall-cmd --permanent --add-port=3690/tcp

systemctl restart firewalld.service

在客户端安装Tortoise SVN 1.9.7,安装完成后新建一个文件夹,在文件夹中右击,在弹出右键菜单中选择[Repo-brower]菜单,在弹出的地址对话框中输入SVN://IP(我们这里是SVN://192.168.56.102),再在验证对话框中输入用户名rick和密码,即可以访问SVN根目录,我们使用svnuser1用户登录SVN,如下图所示

我们使用svnuser1用户在根目录下新建trunk,tags和branches三个文件夹

9)将SVN服务器设置为开机启动服务

网上有相关文件通过修改/etc/rc.local文件设置SVN服务器开机启动,这种做法在CentOS 7环境下已经过时,我们使用CentOS 7正常添加服务的方式。

我们切换到/usr/lib/systemd/system目录下,创建名为svnserver.service的文件,添加以下内容

[Unit]
Description=SVN Server service  
After=network.target

[Service]
Type=forking
ExecStart= /usr/bin/svnserve -d -r /opt/svnRepos --config-file=/opt/svnRepos/conf/svnserve.conf
ExecStop=  /home/svn/stopSVN.sh
User=svn
Restart=on-abort

[Install]
WantedBy=multi-user.target

这里启动SVN服务器直接使用命令,我试过写一个.sh文件替换,但启动后出现code=exited,status=203/EXEC错误,改用现在这种形式。

stopSVN.sh是用于关闭SVN服务的脚本文件,内容如下:

#!/bin/sh
#查找是否有svnserve对应的进程,有的话关闭进程
ps -ef|grep svnserve |grep -v grep
if [ $? -ne 0 ]
then
  echo "the svn server does not start"
else
  killall -9 sh svnserve
fi
#####

保存svnserver.service文件后,执行以下命令

systemctl daemon-reload
systemctl enable svnserver.service
systemctl start svnserver.service

如果shell窗口没有出现错误信息,表示启动已成功,我们可以执行以下命令检查启动状态

systemctl status svnserver.service

运行以下命令停止服务

systemctl stop svnserver.service

我们这时再运行systemctl stop svnserver.service,可以看到服务已经被停掉

至此SVN服务器在Linux服务器安装成功,再次启动CentOS系统后SVN服务器会开机启动。

补充一点,CentOS自带的SELinux默认是Enforcing,处于打开状态,对于自启动的SVN服务,会导致客户端访问SVN服务器时出现Permisson Denied的错误,我们需要手动关闭它,修改/etc/selinux/config文件

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

把SELINUX从enforcing改为disabled,重启系统,SVN服务自启动后,从客户端访问不再出现Permssion Denied错误。

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/11533.html

(0)
晴川运维晴川运维
上一篇 2025年7月4日
下一篇 2025年7月4日

相关推荐

  • 如何在RHEL/CentOS上启用Apache Userdir模块

    User Directory或Userdir是一个apache模块,它允许使用http://example.com/~user/语法通过Apache web服务器检索特定于用户的目…

    CentOS 2025年6月28日
  • CentOS 安装 GitLab 遇到问题及解决

    git的原理非常的美妙,我觉得如果我给非程序员推荐提高工作效率的工具的话,第一,我会推荐 python,第二我会推荐git,第三我会推荐markdown。 今天给朋友的公司,安装了…

    CentOS 2025年7月2日
  • VMware虚拟机CentOS 7中安装部署KVM

    KVM 特性 嵌入到linux内核 虚拟机是一个进程 SPICE是RedHat开发的开源的专门的桌面虚拟化数据传输协议 QEMU是可以图形化管理KVM虚拟机的一个工具,专门用来管理…

    CentOS 2025年6月8日
  • CentOS7中禁用Transparent Huge Pages

    自CentOS6版本开始引入了Transparent Huge Pages(THP),从CentOS7版本开始,该特性默认就会启用。尽管THP的本意是为提升内存的性能,不过某些数据…

    CentOS 2025年9月24日
  • CentOS 7安装Splunk具体步骤

    Splunk 是机器数据的引擎。使用 Splunk 可收集、索引和利用所有应用程序、服务器和设备生成的快速移动型计算机数据 。 使用 Splunking 处理计算机数据,可让您在几…

    CentOS 2025年10月19日
  • CentOS7之防火墙命令详解

    centos 7中防火墙是一个非常的强大的功能了,但对于CentOS 7中在防火墙中进行了升级了,下面我们一起来详细的看看关于CentOS 7中防火墙使用方法。 FirewallD…

    CentOS 2025年6月8日
  • CentOS7.2下安装MySQL

    一、系统环境  [root@localhost home]# cat /etc/RedHat-release  CentOS Linux release 7.2…

    CentOS 2025年6月11日
  • CentOS 7使用过程一些问题总结

    最近分别使用了centos 7 的gnome和kde,其中gnome桌面不美观,且占用出现了CPU 和MEM 占用不大,但是机器夫负载却很高,最后导致CPU 温度过高自动关机;可能…

    CentOS 2025年6月15日
  • CentOS中Python升级与MySQL-Python、lxml的安装

    1、Python升级不能简单的卸载删除之前的Python版本,因为一些系统工具只支持特定的版本的Python。如CentOS5.6只能使用Python2.4,升级之后必须重新设置它…

    CentOS 2025年10月9日
  • Centos7.7安装vncserver具体方法

    VNC Server是一款跨平台使用的远程控制访问软件,可以帮助人们进行远程工作,从任何设备随时控制远程计算机。我们跨平台远程访问软件的最新版本(6+),用于个人和商业用途。 系统…

    CentOS 2025年6月13日

发表回复

登录后才能评论