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
即可。