【linux】linux:CentOS 7 搭建部署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客戶端,未安裝的,可以點選檢視我的另一博文進行安裝:
(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