CentOS7中安裝Subversion 1.9.7

由於項目須要在CentOS 7.4環境下搭建一個SVN服務器,可是CentOS裏自帶的subversion版本只到1.7.14html

與Subversion官網8月10日發佈的SVN 1.8.19, SVN 1.9.7相去甚遠,會嚴重影響SVN客戶端的使用,所以咱們須要卸載掉自帶的Subversion,使用yum方式從新安裝Subversion最新版本linux

咱們執行命令shell

yum remove subversion*

yum clean all

直接卸載subversion和相關庫包centos

可是當咱們使用yum命令再安裝subversion時,發現CentOS自帶源的Subversion版本仍然是1.7.14bash

說明從CentOS自帶源安裝Subversion最新版本此路不通,咱們須要另行添加Repo源服務器

參考https://tecadmin.net/install-subversion-1-8-on-centos-rhel/#一文,咱們在tcp

/etc/yum.repos.d目錄下添加subversion.repo文件,內容以下svn

[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命令安裝Subversionurl

下列步驟參考了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錯誤。

相關文章
相關標籤/搜索