阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

如何在CentOS7中安装Subversion 1.9.7

81次阅读
没有评论

共计 3922 个字符,预计需要花费 10 分钟才能阅读完成。

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

与 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
如何在 CentOS7 中安装 Subversion 1.9.7

说明从 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
如何在 CentOS7 中安装 Subversion 1.9.7

下列步骤参考了 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 用户中
如何在 CentOS7 中安装 Subversion 1.9.7

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

如何在 CentOS7 中安装 Subversion 1.9.7

3)创建 SVN 版本库文件夹
mkdir -p /opt/svnRepos

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

sudo chmod -R o+rw /opt/svnRepos

如何在 CentOS7 中安装 Subversion 1.9.7

4)创建 SVN 版本库
svnadmin create /opt/svnRepos

执行命令后 /opt/svnRepos 文件夹下新增了一些文件夹
如何在 CentOS7 中安装 Subversion 1.9.7

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

进入 conf 目录,可以看到以下文件
如何在 CentOS7 中安装 Subversion 1.9.7

authz 文件是权限控制文件

passwd 是帐号密码文件

svnserve.conf 是 SVN 服务配置文件

修改 passwd 文件,在 [users] 段添加用户 svnuser1 和访问密码
如何在 CentOS7 中安装 Subversion 1.9.7

修改 authz 文件,在文件最后为 svnuser1 用户添加 svn 根目录访问权限
如何在 CentOS7 中安装 Subversion 1.9.7

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

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

6) 修改 svn 配置文件

修改 svnserve.conf 文件

打开以下几项的注释(图中以白色字体标注)
如何在 CentOS7 中安装 Subversion 1.9.7

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 进程已经启动
如何在 CentOS7 中安装 Subversion 1.9.7

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, 如下图所示
如何在 CentOS7 中安装 Subversion 1.9.7

我们使用 svnuser1 用户在根目录下新建 trunk,tags 和 branches 三个文件夹
如何在 CentOS7 中安装 Subversion 1.9.7

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

如何在 CentOS7 中安装 Subversion 1.9.7

运行以下命令停止服务

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 错误。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计3922字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中