1. 程式人生 > >【linux】linux:CentOS 7 搭建部署SVN伺服器

【linux】linux:CentOS 7 搭建部署SVN伺服器

目錄

一、安裝subversion

二、建立版本庫

三、配置

四、SVN服務​

五、 建立 svn 版本檔案

六、新增目錄檔案到版本庫

七、設定伺服器自動提交檔案

八、客戶端測試



一、安裝subversion

(1) subversion安裝,輸入命令:

cd /bin
sudo yum install subversion


(2)subversion安裝成功,檢視安裝在/usr/bin目錄裡,輸入命令:

which svnserve


(3)檢查一下subversion是否安裝成功,輸入命令:



二、建立版本庫

subversion預設以/var/svn作為資料根目錄,可以通過/etc/sysconfig/svnserve修改這個預設位置。

(1)檢視svnserve檔案所在路徑,輸入命令:

 systemctl cat svnserve.service


(2)檢視當前subversion的資料根目錄路徑,輸入命令:

cat /etc/sysconfig/svnserve


(3)我們修改/etc/sysconfig/svnserver將預設目錄指定到/opt/svn:

①修改當前subversion的資料根目錄路徑到/opt/svn,輸入命令:

cat /etc/sysconfig/svnserve
vi /etc/sysconfig/svnserve

 

②使用svnadmin建立版本庫CarManagement,輸入命令:

sudo mkdir -p /opt/svn
sudo svnadmin create /opt/svn/CarManagement

③檢視建立版本庫明細,輸入命令:

ll /opt/svn/
ll /opt/svn/CarManagement/



三、配置

(1)編輯使用者檔案passwd,新增兩個使用者:admin和shang,輸入命令:

cat /opt/svn/CarManagement/conf/passwd
vi /opt/svn/CarManagement/conf/passwd


(2)編輯許可權檔案authz,使用者admin設定可讀寫許可權,shang設定只讀許可權,輸入命令:

cat /opt/svn/CarManagement/conf/authz
vi /opt/svn/CarManagement/conf/authz

要設定許可權組,新增以下內容:
【develop、admin:自己命名許可權組名字即可】
【如果1個許可權組裡,有多個使用者,則使用者與使用者之間用英文逗號隔開,比如:develop = shang,admin】

# 研發人員/測試人員賬號許可權組
develop = shang
# 管理員賬號許可權組
admin = admin

[\]
@develop = r
@admin = rw
不設定許可權組,新增以下內容:
【只需在末尾新增,無需在檔案其他部分修改和新增任何東西】
【rw表示賦予此賬號可讀寫的許可權,請注意[]中的斜槓,一定是反斜槓,有些教程說,需新增版本庫名稱在括號內,我直接建議就這樣寫,這樣寫允許訪問的許可權更大,避免一些錯誤】

[\]

賬號1 = rw

賬號2 = rw

......

 


(3)編輯svnserve.conf,輸入命令:

cat /opt/svn/CarManagement/conf/svnserve.conf
vi /opt/svn/CarManagement/conf/svnserve.conf
[general]新增的內容【每行程式碼前面一定不要有空格,每行全部頂置】:

anon-access = read                     #控制非鑑權使用者訪問版本庫的許可權
auth-access = write                    #控制鑑權使用者訪問版本庫的許可權
password-db = passwd                   #指定使用者名稱口令檔名
authz-db = authz                       #指定許可權配置檔名
realm = 伺服器ip地址                    #指定版本庫的認證域,即在登入時提示的認證域名稱



四、SVN服務

(1)啟動SVN服務,輸入命令:

sudo systemctl start svnserve.service

或者:

svnserve -d -r /opt/svn

(2)檢查服務是否啟動成功,輸入命令:

ps aux | grep svn

(3)通過netstat可以看到SVN打開了2606埠,輸入命令:

sudo netstat -tnlp

(4)設定成開機啟動,輸入命令:

sudo systemctl enable svnserve.service


五、 建立 svn 版本檔案

(1)輸入命令,進入版本庫:

svn checkout file:///opt/svn/CarManagement ./

 (2)輸入指令查詢是否成功建立 svn 版本檔案:

ls -a

如果出現 .   ..   .svn 的話,就說明建立成功 :



六、新增目錄檔案到版本庫

svn add *
svn commit -m "[隨便你寫什麼日誌]"
比如:svn commit -m "mulu.log"

 



七、設定伺服器自動提交檔案

 (1)修改 hooks 檔案 post-commit(設定了伺服器自動更新提交的檔案,告別 svn up  手動指令更新):

cd /opt/svn/CarManagement/hooks
cp post-commit.tmpl post-commit
chmod 755 post-commit
vi post-commit


 (2)在最後加上 (/data/wwwroot 以你版本庫根目錄路徑為準):

#!/bin/sh
export LANG=en_US.UTF-8
/usr/bin/svn up /data/wwwroot --username hahaha --password hahaha --no-auth-cache --non-interactive
比如:
#!/bin/sh
export LANG=en_US.UTF-8
/usr/bin/svn up /opt/svn/CarManagement/data/wwwroot --username admin --password admin --no-auth-cache --non-interactive



八、客戶端測試

客戶端可以通過TortoriseSVN測試。

(1)確認本地已安裝SVN客戶端,未安裝的,可以點選檢視我的另一博文進行安裝:

【SVN】Windows 10:SVN的下載和安裝


(2)本地建立SVN匯出庫CarManagement:


(3)輸入伺服器SVN庫地址,選擇要匯入的目標資料夾:

svn://伺服器ip:埠/庫名稱
例如:svn://192.168.206.141:3690/CarManagement


(4)這時候可能會防火牆問題,出現失敗情況;如果是防火牆問題,會提示無法連線:

解決方法:

①用systemctl檢查伺服器的防火牆配置,可以看到,沒有telnet服務和2606埠

firewall-cmd --list-all

②增加telnet伺服器和 2606 和 3690 (預設的)埠:

sudo firewall-cmd --permanent --add-service=telnet
sudo firewall-cmd --permanent --add-port=2606/tcp
firewall-cmd --zone=public --add-port=3690/tcp --permanent
sudo firewall-cmd --reload

③用systemctl檢查伺服器的防火牆配置,可以看到,已經有了telnet服務和2606埠

firewall-cmd --list-all

④關閉防火牆:

systemctl stop firewalld.service

⑤開啟防火牆:

systemctl start firewalld.service