前一篇文章介紹了在CentOS 7環境下安裝SVN 1.9.7,可是這樣安裝的SVN只能使用SVN客戶端進行訪問,沒法在瀏覽器中打開,須要安裝WebDAV(Web-based Distributed Authoring and Versioning)。Apache的mod_dav_svn和mod_authz_svn兩個模塊,是用於鏈接Subversion和Apache的模塊,使得客戶端可使用Http擴展協議WebDAV/DeltaV對SVN進行訪問和驗證。咱們首先使用yum命令安裝這兩個模塊html
yum install -y mod_dav_svn
執行這條命令後若是Apache Server沒有安裝,會一併安裝,安裝完後以下圖所示web
安裝完成後mod_dav_svn.so和mod_authz_svn.so兩個模塊文件被安裝到/usr/lib64/httpd/modules目錄下apache
編輯/etc/httpd/conf.d/subversion.conf文件,設置SVN的Http路徑名,Repository指向以及用戶驗證文件的路徑。瀏覽器
# WANdisco Subversion Configuration # For more information on HTTPD configuration options for Subversion please see: # http://svnbook.red-bean.com/nightly/en/svn.serverconfig.httpd.html # Please remember that when using webdav HTTPD needs read and write access your repositories. # Needed to do Subversion Apache server. LoadModule dav_svn_module modules/mod_dav_svn.so # Only needed if you decide to do "per-directory" access control. LoadModule authz_svn_module modules/mod_authz_svn.so <Location /rootSvn> DAV svn SVNPath /opt/svnRepos/ AuthType Basic AuthName "Please input auth user's name" AuthzSVNAccessFile /opt/svnRepos/conf/authz AuthUserFile /opt/svnRepos/conf/http_passwd Require valid-user </Location>
這裏我爲SVN的WebDAV形式訪問設置了rootSvn的根路徑,指向咱們以前建立的/opt/svnRepos這個repository,authz文件仍然使用/opt/svnRepos/conf目錄下的authz文件,而用戶驗證文件使用conf目錄下的http_passwd文件,這個文件如今尚未,咱們接下來會建立,AuthType爲Basic,代表使用用戶名/密碼方式驗證。bash
執行下面的命令爲svnuser1建立Http訪問驗證所需的http_passwd文件服務器
htpasswd -c /opt/svnRepos/conf/http_passwd svnuser1
若是http_passwd文件中已經有用戶,-c參數就不須要了,不然會覆蓋已有的用戶。curl
在提示輸入密碼時,輸入與conf/passwd文件中一致的密碼tcp
重啓Apache服務ide
systemctl restart httpd.service
開放80端口訪問svn
firewall-cmd --permanent --add-port=80/tcp systemctl restart firewalld.service
在瀏覽器裏訪問http://192.168.56.102/rootSvn,要求輸入用戶名/密碼驗證,輸入svnuser1用戶名和密碼
驗證成功後,顯示SVN的根目錄
使用TortoiseSVN客戶端訪問Http地址時以下圖所示
可是接下來建立子文件夾時會拋出Permission Denied的錯誤,這是由於/opt/svnRepos文件夾的全部者是svn,但使用WebDAV方式訪問這個目錄的用戶是啓動了Apache Server的apache用戶,它對這個文件夾沒有寫權限,因此顯示權限不夠的錯誤,咱們須要爲這個文件夾添加其餘用戶的讀寫權限,執行下面的命令
chmod 766 -R /opt/svnRepos
這之後再經過SVN客戶端,就能夠建立子文件夾了
若是咱們要使用https方式訪問SVN,須要安裝Apache的mod_ssl組件和openssl
yum install -y mod_ssl openssl
安裝完成後先建立ssl訪問須要的密鑰和證書
首先建立密鑰key文件
cd /etc/pki/tls/private openssl genrsa -out svnKey.key 1024
再生成證書籤名請求文件
openssl req -new -key svnKey.key -out svnCsr.csr
最後生成用密鑰key簽名的證書文件
cd /etc/pki/tls/certs openssl x509 -req -days 365 -in /etc/pki/tls/private/svnCsr.csr -signkey /etc/pki/tls/private/svnKey.key -out svnCrt.crt
接下來咱們將在Apache中使用密鑰key和證書文件。
修改/etc/httpd/conf.d/ssl.conf文件,添加如下兩行,使用上面生成的密鑰key文件和證書文件。
SSLCertificateFile /etc/pki/tls/certs/svnCrt.crt SSLCertificateKeyFile /etc/pki/tls/private/svnKey.key
在修改ssl.conf文件時,咱們還把SSL偵聽的端口號從默認的443端口改成了8888端口。
Listen 0.0.0.0:8888 https <VirtualHost _default_:8888>
須要說明的是不少文章中介紹修改Apache的SSL端口號爲非443端口時,只介紹了修改ssl.conf中
Listen [非443端口號]這種方式,可是在CentOS 7環境下,修改後的端口號會使用ipv6協議,經過netstat命令查看系統端口號時,將發現8888端口使用tcp6協議(ipv6協議),而不是tcp協議(ipv4協議),這樣從頁面或者使用curl命令訪問非443端口時,都會出現沒法訪問的狀況,若是想保證非443的ssl端口能正常訪問,須要把它綁定到ipv4協議上,即像上面我設置的形式。
接下來修改/etc/httpd/conf/httpd.conf文件,添加如下語句
SSLRequireSSL
添加完成後重啓Apache Server,開放8888端口,使用https://192.168.56.102/rootSvn訪問SVN服務器(以下圖所示)