IF.SVNAdmin安裝
環境准備
- Subversion
- PHP
- Apache(httpd)
- mod_dav_svn
SVN
安裝SVN,並創建對應的SVN倉庫
PHP
IF.SVNAdmin是PHP項目,需要安裝PHP
Apache(httpd)
IF.SVNAdmin與與Subversion的連接需要基於Apache
配置文件目錄: /etc/httpd/conf.d
mod_dav_svn
Apache與Subversion連接需要組件mod_dav_svn
安裝過程
- 安裝所需應用
yum install -y subversion php httpd mod_dav_svn
- 查看應用安裝情況
svnserver --version
php -v
httpd -version
ls /etc/httpd/modules/ |grep svn
目錄明確
# 默認目錄如下
# /var/www/html httpd服務的應用存放目錄
# /etc/httpd/conf.d httpd服務的配置文件目錄,需在該目錄在建subversion.conf關聯svn
# /etc/httpd/conf.d/subversion httpd服務與svn關聯配置文件
# 手動創建目錄如下(如需更改,應注意后文所有參數一並進行更改)
# /var/www/html/svnadmin 存放ifsvnadmin
# /apps/svn/repos 存放所有svn庫的目錄,通常用參數SVNParentPath,代碼庫的父級目錄
# /apps/svn/config 存放ifsvnadmin使用的配置文件
# /apps/svn/config/passwdfile 用戶信息配置文件 [IF.SVNAdmin使用]
# /apps/svn/config/accessfile 權限配置文件 [IF.SVNAdmin使用]
目錄及文件創建:
mkdir -p /apps/svn/repos
mkdir -p /apps/svn/config
touch /apps/svn/config/passwdfile
touch /apps/svn/config/accessfile
下載IFSVNAdmin
wget https://jaist.dl.sourceforge.net/project/ifsvnadmin/svnadmin-1.6.2.zip /apps
unzip /apps/svnadmin-1.6.2.zip
mv /apps/iF.SVNAdmin-stable-1.6.2 /var/www/html/svnadmin
rm -rf /apps/svnadmin-1.6.2.zip
權限修改
chmod -R 777 /var/www/html/svnadmin/data/
chmod -R 777 /apps/svn/repos
chown -R apache:apache /var/www/html/svnadmin/
chmod 777 /apps/svn/config/passwdfile
chmod 777 /apps/svn/config/accessfile
配置
httpd與subversion連接
安裝了Apache之后,需要修改配置文件與SVN連接起來,配置文件
- 修改配置文件
vim /etc/httpd/conf.d/subversion.conf
增加內容
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNParentPath /apps/svn/repos
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /apps/svn/config/passwdfile
AuthzSVNAccessFile /apps/svn/config/accessfile
Require valid-user
</Location>
- 重啟httpd
systemctl restart httpd
第一次訪問svnadmin時設置
# Subversion 授權文件(authz)
/apps/svn/config/accessfile
# 用戶身份驗證文件 (SVNUserFile)
/apps/svn/config/passwdfile
# 代碼倉庫的父目錄 (SVNParentPath)
/apps/svn/repos
# 'svn.exe' 或 'svn'可執行文件:
/usr/bin/svn
# 'svnadmin.exe' 或 'svnadmin' 可執行文件:
/usr/bin/svnadmin
URL
- svnadmin 的Web端
# http://[服務器IP]/[訪問前綴]/庫名 (其中,訪問前綴定義在subversion.conf,中的`Location /svn`)
# 例如:
http://10.100.xx.xxx/svnadmin/
- svn庫的http地址
# http://[服務器IP]/[訪問前綴]/庫名 (其中,訪問前綴定義在subversion.conf,中的`Location /svn`)
# 例如:
http://10.100.xx.xxx/svn/repo1/
http://10.100.xx.xxx/svn/repo2/
http://10.100.xx.xxx/svn/test1/
其他相關參考
服務啟停
# 查狀態
systemctl status httpd
# 啟服務
systemctl start httpd
# 重啟服務
systemctl restart httpd
# 停止服務
systemctl stop httpd
SE Linux
# 查看SE Linux的狀態
getenforce
# Enforcing [開啟] 強制執行
# Permissive [關閉] 放任的,縱容的,寬容的
臨時關閉SE Linux
setenforce 0
永久修改SE Linux
文件
/etc/selinux/config
修改參數
SELINUX=disabled # 關閉
SELINUX=enforcing # [開啟]強制
SELINUX=permissive # [開啟]寬容
關於SVN訪問協議
通常情況下,SVN默認的訪問協議是通過svn://
來訪問,不支持http訪問.
但是在借用Apache(httpd)之后,則是通過http://
來訪問,這個時候不支持svn://
訪問協議.
http
的訪問協議可以支持網頁直接打開,所以通常情況下http
協議通用性更強一些
SVN的部署和啟動方式決定了我們使用具體哪種協議
- 當我們使用
svnserve -d -r [svn repo path]
啟動svn服務的時候,是使用svn://
協議訪問- 當我們使用
systemctl start httpd
或者systemctl restart httpd
啟動時,是使用http://
協議訪問- 兩種啟動方式只能使用一種,一般同時只使用一種訪問協議.
關於使用SVNAdmin之后的庫配置
在使用SVNAdmin之后,原本SVN庫內的conf文件基本失去作用.
passwd和authz文件會由SVNAdmin兩個passwdfile和accessfile代替.
server.conf也失去作用.
Apache的作用是基於SVN底層對文件目錄直接接管.
passwdfile文件內保存的密碼是加密密碼, 原生的passwd是明文密碼
在使用了svnadmin時,同樣可以配置hook腳本.依舊是在原庫配置.
在http訪問時候,配置的hook腳本有中文時可能會報編碼錯誤.
Error output could not be translated from the native locale to UTF-8.
需要修改httpd的配置編碼.SVN1.8之后可以設置
vim /etc/httpd/conf/httpd.conf
添加內容
<IfModule mod_dav_fs.c>
DAVLockDB /var/lib/dav/lockdb
SVNUseUTF8 On
</IfModule>