CentOS7中安裝Subversion 1.9.7(續)

前一篇文章介紹了在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服務器(以下圖所示)

相關文章
相關標籤/搜索