debian8下apache2.4.x部署mysql認證的subversion
近日,需遷移一台老的伺服器,上面有apache2.2 下mysql認證的subverison應用。遂進行了研究。
以往apache2的配置均不能使用,主要是因為apache2.4.x和apache2.2.x中利用mysql完成認證的模組有了較大變化。以往是auth_mysql模組,這個模組在apache2.4.x中已經失效,需要用authn_dbd 和 authz_dbd模組進行替換,相應的配置也需要進行修改。
下面詳述相應設定。
環境:debian8u2,所有的包均是利用apt-get安裝。
-------------------------------------------------------------
安裝需要的軟體包,注意,本文沒有涉及mysql服務的搭建,認為已經搭建好了mysql服務(可以是本機或者其他伺服器主機)。
- apt-get install apache2 libapache2-mod-svn mysql-client libaprutil1-dbd-mysql
設定apache2的相關模組載入(注意,安裝libapache2-mod-svn時已經自動載入了一些模組了,否則還需要增加dav_svn.load和dav_svn.conf),下面的模組主要是利用資料庫進行認證的。
- a2enmod auth*_dbd dbd
修改apache2的一個主機配置,以完成subversion的認證訪問。
下面是一個例子
- ...
- # 資料庫的一些訪問的基本配置
- # 資料庫模式
- DBDriver mysql
- # 資料庫訪問串連資訊,要根據實際情況配置,host是資料庫服務主機,port對應服務連接埠,dbname對應要訪問的資料庫,user是訪問使用者名稱,pass是訪問密碼(密碼是明文的)
- DBDParams "host=192.168.1.150 port=3306 dbname=svnauth user=authuser pass=dbpasswd"
- DBDMin 4
- DBDKeep 8
- DBDMax 20
- DBDExptime 300
- # 一個subversion項目的配置
- # 配置為採用DAV訪問的subversion倉庫
- DAV svn
- # 倉庫資料置放位置,注意採用的是FSFS資料結構的倉庫
- SVNPath /var/svnlibs/svnprj
- # 一個解析XSLT資料定義,在瀏覽器中引用(相對於web路徑的)
- SVNIndexXSLT /svnindex.xsl
- SVNAutoversioning on
- AuthName "Svnprj MySql"
- AuthType Basic
- # 認證方式為dbd,即資料庫
- AuthBasicProvider dbd
- require valid-user
- # 認證使用者查詢語句,要根據實際情況修改,這裡表名為users ,使用者名稱欄位為user_name ,使用者密碼欄位為user_passwd
- AuthDBDUserPWQuery "SELECT user_passwd FROM users WHERE user_name = %s"
- # 為認證使用者開放讀許可權
- # 使用者組許可權配置
- # 使用者組採用資料庫查詢
- require dbd-group work
- # 使用者組查詢語句,要根據實際情況修改,這裡表名為groups ,使用者名稱欄位為user_name ,使用者組欄位為user_group
- AuthzDBDQuery "SELECT user_group FROM groups WHERE user_name = %s"
- # 個別使用者權限配置
- require user auser
- require valid-user
- ...
至此,一個支援mysql認證的apache2.4整合subversion倉庫服務就配置完成。這是對於一個倉庫的配置,如果要配置為多庫,只需要把
- SVNPath /var/svnlibs/svnprj
修改為
- # 指定多個倉庫的上級目錄
- SVNParentPath /var/svnlibs
- SVNListParentPath on
即可。