嚴格來說配置管理不屬於CI的范疇,但我個人覺得作為一個流程改進實踐,配置管理做的越好就越有利於CI實施。如何進行配置管理,不是這篇文章的重點。我要介紹的是配置管理兩個重點(配置策略與版本控制)中的版本控制。以版本管理工具svn的使用為出發點,文中主要介紹如何搭建svn服務器。
svn(subversion)是一款著名的開源版本控制軟件,我相信很多開發人員都在使用它來進行代碼管理。這里可以了解更多信息http://subversion.apache.org/。你可能知道如何使用svn來進行日常的代碼check in, check out,但並不一定知道如何去搭建一個svn服務器。這篇博客主要就是說這個。以下所有的操作都是在Ubuntu上進行的,所以你可能需要知道一些Ubuntu上的知識。
搭建svn的第一步當然是安裝了,在Ubuntu下你可以這樣做
sudo apt-get install subversion libapache2-svn libapache-mod-dav apache2
如果安裝失敗是因為找不到安裝包,請先運行apt-get install update.
第二步是啟用SSL,
sudo a2enmod ssl sudo sh -c "echo 'Listen 443' >> /etc/apache2/ports.conf"
因為SSL的默認端口是443端口,我們把它添加到apache的端口配置文件中。
第三步是生成SSL的認證,這里我們需要先安裝SSL的認證服務
sudo apt-get install ssl-cert sudo mkdir /etc/apache2/ssl sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
第四步,創建站點,這里的$SITENAME環境變量,給一個你自己喜歡的名字就可。
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/$SITENAME sudo vim /etc/apache2/sites-available/$SITENAME
然后修改站點配置文件如下:

下一步是配置一個svn訪問的賬戶:
sudo htpasswd2 -c -m /etc/apache2/dav_svn.passwd $AUTH_USER
然后重啟apache服務來啟動站點
sudo a2ensite $SITENAME sudo /etc/init.d/apache2 restart
如果失敗了,可能是虛擬主機沒有被apache找到,請添加這一行 ServerName $SERVERNAME 到 /etc/apache2/apache2.conf 文件中。
第五步就到創建svn知識庫的時候了,先創建一個目錄用於存放svn配置信息,再創建一個環境變量$REPOS用於存放內容,並改變其訪問權限
sudo mkdir /var/svn sudo export REPOS=你的知識庫路徑 sudo svnadmin create /var/svn/$REPOS sudo chown -R www-data:www-data /var/svn/$REPOS sudo chmod -R g+ws /var/svn/$REPOS
第六步添加基本的認證信息,$AUTH_USER給個自己喜歡的用戶名即可。
sudo htpasswd2 -c -m /etc/apache2/dav_svn.passwd $AUTH_USER
並修改WebDav和svn配置文件 sudo vim /etc/apache2/mods-available/dav_svn.conf 添加如下內容
DAV svn SVNParentPath /var/svn AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user SSLRequireSSL
並取消這兩行的注釋
#<LimitExcept GET PROPFIND OPTIONS REPORT> #</LimitExcept>
唉!配置svn服務器還真是麻煩!不過幸好這已經是最后一步了。剩下的我們就重啟一下apache來啟用我們的配置吧。
sudo /etc/init.d/apache2 restart
如果一切正常,並且你沒有敲錯什么字母的話,apache應該能正常啟動。那么我們就測試一下
在你的瀏覽器地址欄輸入:https://localhost/svn/你的知識庫名稱。應該會有彈出提示輸入用戶名和密碼對話框。通過認證后,你會看到如下界面(test.html是我自己導入的,默認應該沒有任何文件)。

通常上面的步驟沒有出錯的話,這個界面會正常顯示。如果失敗,那么大多數情況是403錯誤,請檢查端口和目錄的權限。(PS:http協議我沒有配置成功,可惜了)。
