Linux(Centos7)下搭建SVN服務器
系統環境:centos7.2
第一步:通過yum命令安裝svnserve,命令如下:
yum -y install subversion
此命令會全自動安裝svn服務器相關服務和依賴,安裝完成會自動停止命令運行
若需查看svn安裝位置,可以用以下命令:
rpm -ql subversion
第二步:創建版本庫目錄(此僅為目錄,為后面創建版本庫提供存放位置)
選擇在var路徑下創建版本庫,當前處於根目錄下,一次性創建如下:
mkdir /var/svnrepos
第三步:創建svn版本庫
在第二步建立的路徑基礎上,創建版本庫,命令如下:
svnadmin create /var/svnrepos/xxxx
(xxxx為你預期的版本庫名稱,可自定義)
創建成功后,進入xxxx目錄下
cd /var/svnrepos/xxxx
進入目錄,可以看見如下文件信息:
total 24 drwxr-xr-x 2 root root 4096 May 2 13:48 conf drwxr-sr-x 6 root root 4096 May 2 13:48 db -r--r--r-- 1 root root 2 May 2 13:48 format drwxr-xr-x 2 root root 4096 May 2 13:48 hooks drwxr-xr-x 2 root root 4096 May 2 13:48 locks -rw-r--r-- 1 root root 229 May 2 13:48 README.txt
第四步:配置修改
進入已經創建好的版本庫目錄下,也就是前文說創建的xxxx,進入conf
cd /var/svnrepos/xxxx/conf
conf目錄下,一共存放三份重要的配置文件,如下:
total 12 -rw-r--r-- 1 root root 1080 May 2 13:48 authz -rw-r--r-- 1 root root 309 May 2 13:48 passwd -rw-r--r-- 1 root root 3090 May 2 13:48 svnserve.conf
authz:負責賬號權限的管理,控制賬號是否讀寫權限
passwd:負責賬號和密碼的用戶名單管理
svnserve.conf:svn服務器配置文件
1.編輯 authz 文件(注意:[/]也是必須的)
[/]:表示根目錄,即 /var/svnrepos
luo = rw:表示用戶luo對根目錄具有讀寫權CHA
2.編輯 passwd 文件
如上所示,用戶名為:luo,認證密碼為:luo123456
3.編輯 svnserve.conf 文件(注意:配置的前面不能有空格,一定要頂格寫)
anon-access = none:表示禁止匿名用戶訪問。
auth-access = write:表示授權用戶擁有讀寫權限。
password-db = passswd:指定用戶名口令文件,即 passwd 文件。
authz-db = authz:指定權限配置文件,即 authz 文件。
realm = /var/svnrepos:指定認證域,即 /var/svnrepos 目錄。
第五步:防火牆開啟(iptable防火墻)
多數情況下服務器安裝完成,配置完成后,無法連接svn服務器,均是防火牆問題【注意:如果是阿里雲,騰訊雲的服務器,還需在安全組添加端口開啟規則】
vi /etc/sysconfig/iptables
添加配置信息
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3690 -j ACCEPT
保存退出
systemctl restart iptables.service #重啟防火牆使配置生效
六:啟動svn服務器
svnserve -d -r /var/svnrepos
啟動成功后,可用ps -aux查看服務啟動是否成功
ps -ef | grep 'svnserve'
七:客戶端訪問svn服務器
在windows客戶端,輸入地址:svn://ip地址:3690/xxxx (iP地址為你linux的ip,xxxx為前文創建的版本庫名稱,3690為svn默認端口)
彈出輸入用戶名和密碼,輸入即可訪問
或者在linux服務器輸入命令測試:
svn co svn://ip地址:3690/xxxx
如下為例子:
遇到的問題小結:
問題1:執行svn命令:svn co svn://ip地址:3690/xxxx報錯如下
這是因為修改svnserve.conf時,打開注釋時,配置的前面有空格,應該頂格寫。修改后即可
問題2:輸入賬號密碼后,提示 svn: Authorization failed解決辦法
把authz 文件 [/] 改為 [\] 試試
查看端口firewall-cmd --list-ports
開放端口
- firewall-cmd --zone=public --add-port=80/tcp --permanent
- #重啟firewall
- firewall-cmd --reload
- #停止firewall
- systemctl stop firewalld.service
- #禁止firewall開機啟動
- systemctl disable firewalld.service