天天看點

Apache2/SSL+Subversion+PAM認證伺服器配置

概要:伺服器使用 apache2+ssl+svn+auth_pam 建構,具有如下特點:

    * 建立在 debian/apache2 的基礎上

    * subversion 1.1

    * mod_dav_svn 使得 subversion 可以通過web通路

    * 使用 openssl 保障系統的安全性

    * 使用 mod_pam 和 mod_sys_group,使用系統的使用者名密碼來驗證使用者

目錄

====

1 安裝軟體

2 配置 apache2/SSL

3 配置 apache2/SVN

4 配置 PAM

5 總結

安裝軟體

========

如果你和我一樣用 Debian 的話,隻要安裝這幾個包就可以了:

 apache2

 apache2-common

 apache2-mpm-prefork

 apache2-utils

 libapache2-svn

 libapache2-mod-auth-pam

 libapache2-mod-auth-sys-group

 subversion

 subversion-tools

openssl 會根據依賴性自動被安裝,如果你有要移植到 subversion 的 CVS 項目,

可以安裝

 cvs2svn

可以輕松轉換,不過這個不在本文讨論範圍内,略了。安裝這幾個之後就可以開始

了。

配置 apache2/SSL

================

如果你不用 ssl 保障安全的話,跳過這部分就可以了,基本上不妨礙完整性(實際

上還是差一點的)。首先生成一個 SSL 簽名,使用指令

 # apache2-ssl-certificate

這裡會有一系列關于你的個人隐私的問題,回答完了,自然的簽名也就生成了,然

後我們就要在 apache2 裡面打開 SSL 了,現在要做的是開啟 ssl 子產品

 # a2enmod ssl

然後,使用 apache2 的虛拟主機功能來添加 SSL 的支援,将

 /etc/apache2/sites-available/default

複制一份,叫

 /etc/apache2/sites-available/ssl

好啦

修改 default 檔案的開頭為

 NameVirtualHost *:80

 <VirtualHost *:80>

修改 ssl 檔案的開頭為

 NameVirtualHost *:443

 <VirtualHost *:443>

這裡 443 是 SSL 的标準端口。

并在 ssl 檔案中加入如下内容

 SSLEngine On

 SSLCertificateFile /etc/apache2/ssl/apache.pem

儲存檔案後,運作指令

   # a2ensite ssl

來激活這個虛拟主機

現在,修改檔案

 /etc/apache2/ports.conf

加上一行

 Listen 443

好了,到此為止,SSL 伺服器配置完成,重新啟動 apache 吧。執行

 # apache2ctrl -k restart

就可以了

配置 apache2/SVN

================

首先,我假設你有一個 subversion 的軟體倉庫了,如果沒有的話,建一個吧,或

者用 cvs2svn 轉換一個過來。

 # svnadmin create /var/lib/svn/repos

 # cvs2svn -s /var/lib/svn/repos /var/lib/cvs/oldrepos

讓這個目錄屬于 src 組,并把 www-data 加入 src 組,讓 svn 倉庫可以被 apac

he 通路

 # chgrp -R src /var/lib/svn

 # chmod -R g+w /var/lib/svn

 # adduser www-data src

然後,在 apache2 那裡打開 svn 的支援

 # a2enmod dav_svn

 /etc/apache2/sites-available/ssl

裡(如果沒使用 ssl 就改 defaults 檔案就可以了,下同)加上

          <Location /repos>

            DAV svn

            SVNPath /var/lib/svn/repos

            #AuthType Basic

            #AuthName "Subversion Realm"

            #require group src

          </Location>

這樣,重新開機 apache2 之後,就可以通過 https 通路你的代碼倉庫了,至于其中的

鑒權部分,我們在下一個部分再介紹。

配置 PAM

========

激活鑒權用的兩個子產品

 # a2enmod auth_pam

 # a2enmod auth_sys_group

這樣就可以用本地使用者群組對 web 通路的使用者進行鑒權了,對于使用了 shadow 密

碼的使用者,需要讓 apache2 可以通路 shadow 檔案

 # adduser www-data shadow

然後在 apache2 的配置檔案裡面把剛才注釋掉的行打開

            AuthType Basic

            AuthName "Subversion Realm"

            require group src

就可以對使用者進行鑒權了,AuthName 是可以任意指定的。這裡,凡是 src 組的成

員都可以通路 subversion 倉庫,當然也可以對使用者鑒權

            require user gnawux

重新啟動 apache2, 通路一下看看吧

 https://yourhostname.yourdomain/repos/

 https://yourhostname.yourdomain/repos/

總結

====

取一下代碼看看吧

 $ svn co --username yourname https://yourhostname.yourdomain/repos/trun

k localdir

好了,到現在為止,你的 subversion 伺服器已經配置完成了,看完這個長篇不容

易,希望能對你有所幫助。