概要:伺服器使用 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 伺服器已經配置完成了,看完這個長篇不容
易,希望能對你有所幫助。