IF.SVNAdmin安裝 | SVN權限可視化管理


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


安裝過程

  1. 安裝所需應用
yum install -y subversion php httpd mod_dav_svn
  1. 查看應用安裝情況
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連接起來,配置文件

  1. 修改配置文件
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>
  1. 重啟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的部署和啟動方式決定了我們使用具體哪種協議

  1. 當我們使用svnserve -d -r [svn repo path]啟動svn服務的時候,是使用svn://協議訪問
  2. 當我們使用systemctl start httpd或者systemctl restart httpd啟動時,是使用http://協議訪問
  3. 兩種啟動方式只能使用一種,一般同時只使用一種訪問協議.

關於使用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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM