一、安裝很easy
Debian下:
安裝Subversion包:
apt-get install subversion
安裝SSL方式訪問所需要的包,注意必需要apache2才行。這里libapache2-svn包括一個dav模塊用來通過APACHE模塊訪問SVN數據;openssl是用來生成證書用的;apache2-utils是包括a2enmod命令,不要也行。
apt-get install apache2 libapache2-svn openssl apache2-utils
其它系統,WINDOWS下就下載相應包來直接安裝。
LINUX下需要下載包后解壓,再make & make install,在這里,少不了就是這些:
tar xjvf subversion-xxx.tar.bz2
cd subversion-1.3.1
./configure --prefix=/usr/local/subversion
make
另外,需要在開發機器上安裝訪問客戶端,在這里。
這個客戶端相當好用,和explore結合的相當好。
二、SSL訪問是上上之選
強烈建議使用WEB的SSL方式來使用服務,雖然開始配置麻煩點,但一勞永逸。
這種方式比較安全,且不占用多余端口,另外,從外部通過WEB方式訪問時也比較安全。量大不加價。
三、subversion配置十分簡單
官方配置使用文檔相當清楚易懂,在這里。缺點就是婆婆媽媽一大堆,廢話太多。下面是過程:
找個地方,為subversion創建一個根目錄,以后所有東西都放這里。先以root用戶先建立目錄,呆會再改權限:
svnadmin create /svnroot
編輯/svnroot/conf/svnserve.conf,就3句話:
[general]
anon-access =none
auth-access = write
password-db = passwd
順次是:沒認證的不能登陸;通過認證的有寫權限;密碼文件是本目錄下的passwd文件。
馬上編輯這個/svnroot/conf/passwd文件,加入你要的用戶:
[users]
harry = harrypass
sally = sallypass
再來說下權限,svnroot最好讓一個單獨的系統用戶訪問,不用root更安全。現在創建個srcusr:
popeye:~# useradd srcusr
popeye:~# passwd srcusr
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
把目錄權限交給這個用戶:
chown –R srcusr:srcusr /svnroot/
因為apache2是以www-data用戶運行的,要讓它也能寫這個目錄,不然你怎么commit呢。
adduser www-data usrsrc
chmod -R g+w /svnroot/
先將它加入usrsrc用戶組,再修改屬性讓組成員有寫權限。
到這步,如果你要求不高,就算配置完成了,一句:
svnserve -d --listen-port 3690 --listen-host 0.0.0.0 -r /svnroot
啟動就可以用了,當然客戶端訪問要用,svn://打頭。注意listen-host去不得,不然就是用ipv6偵聽,你就啥也連不過來了。
最好還是以srcusr用戶權限來啟動那就這樣寫:
su – srcusr –c “svnserve -d --listen-port 3690 --listen-host 0.0.0.0 -r /svnroot”
由于我們要配置更安全的方式所以繼續往下走。
四、透過APACHE2來訪問SUBVERSION服務(非SSL方式)
加載mod_dav_svn和ssl模塊:
a2enmod mod_dav_svn
a2enmod ssl
這是個工具,名字就是add to enable module,如果沒有這個工具,可以直接:
cd ./mods-enabled/
ln -s /etc/apache2/mods-available/ssl.* .
建立enable到available的鏈接,就是開啟模塊了,跟這個命令干的事一樣。
編輯/etc/apache2/httpd.conf文件,加入SUBVERSION的幾行配置,注意開頭處的/repos表明了你在URL里識別路徑。如:
http://your.host.com/repos/project1/trunk
APACHE2發現是/repos路徑,就會調用DAV模塊,訪問的就是系統路徑:
/svnroot/project1/trunk
配置如下:
ServerName localhost
<Location /repos>
#用DAV模塊訪問數據
DAV svn
#你的SVN根路徑
SVNPath /svnroot
#如果不要SSL,可以不要下面這句
SSLRequireSSL
AuthType Basic
AuthName "Subversion repository"
#在下面我們馬上要建立這個密碼文件
AuthUserFile /etc/svn-auth-file
Require valid-user
</Location>
為之前/svnroot/conf/passwd里的用戶生成HTTP的驗證文件:
$ htpasswd -cm /etc/svn-auth-file harry
New password: *****
Re-type new password: *****
Adding password for user harry
$ htpasswd -m /etc/svn-auth-file sally
New password: *******
Re-type new password: *******
Adding password for user sally
重啟服務:
/etc/init.d/apache2 restart
到這里,如果你不用SSL,那么就可以用http://your.host.com/repos/project1/trunk
形式的網址訪問了。瀏覽器會讓你輸入用戶名密碼。
但這種方式密碼和內容是明文傳送,為了安全我們還是需要SSL方式。
五、SSL配置一步一步來也不麻煩
SSL跟subversion沒有什么關系,是APACHE2的配置,這些配置也適用于你想讓人家用https來訪問你網站的情況。
先通過我之前的一篇文章,不但了解了SSL是咋回事,還順便生成了APACHE要的證書。
注意:只要看到:cat key.pem cert.pem >key-cert.pem生成了這個文件就可以了。
把這個文件改名并存到:/etc/apache2/ssl/apache.pem,后面配置時用。
文章:在這里。開始我也不會,會了以后,發現很簡單。
現在基本條件都已經具備,只要讓APACHE2使用SSL的443端口(即https)就可以了。
先在/etc/apache2/ports.conf里加入:
Listen 80
<IfModule mod_ssl.c>
Listen 443
</IfModule>
這樣APACHE2就會在443偵聽。
再編輯一個虛擬HOST文件,讓APACHE2識別SSL:
cp ./sites-available/default ./sites-enabled/ssl
有點像啟動MODULE時候的方式,在ENABLED目錄加入一個文件,從一個DEFAULT文件開始。
編輯這個文件,只要改變開頭:
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
……
這里的配置就用到了我們先前生成的證書文件。
另外,原來在此目錄下有一個文件,也需要改一下,把開頭改成:
NameVirtualHost *:80
<VirtualHost *:80>
這樣就有兩個虛擬HOST,分別是80和443端口。
重啟服務:
/etc/init.d/apache2 restart
再以https://your.host.com/repos/project1/trunk訪問就可以看到像訪問其它HTTPS網站彈出的接受證書的對話框。在TortoiseSVN里,也是輸入這個路徑就可以。
好多文檔講得相當復雜,其實,天長日久的基本使用無非就是那幾項。
下面是簡單明了的使用方式:
將存在的項目導入到SVN:
mkdir -p /tmp/svn/usertools/trunk
cd /path/to/usertools
cp -Rp * /tmp/svn/usertools/trunk
cd /tmp/usertools
cd /tmp/svn
svn import svn://servername_or_IPADDRESS/svnroot ."
-m "Initial import of usertools"
之后,可以在任意地方將整個項目CHECKOUT出來進行編輯。我覺得SVN最大好處是不用像CLEARCASE那樣每個文件都要CHECKOUT才能編輯,它是一次CHECKOUT,最后再全部COMMIT:
svn checkout svn://servername_or_IPADDRESS/svnroot/usertools/trunk "
usertools-current
我們就這樣開發下去,不斷向TRUNK分支COMMIT代碼,直到有一天我們要RELEASE了,就再創建兩個分支,用svn copy命令:
svn copy svn://servername_or_IPADDRESS/svnroot/usertools/trunk "
svn://servername_or_IPADDRESS/svnroot/usertools/1.0-release
svn copy svn://servername_or_IPADDRESS/svnroot/usertools/trunk "
svn://servername_or_IPADDRESS/svnroot/usertools/1-maint
一個是RELEASE分支,一個用來做維護。這樣,我們繼續開發新功能到TRUNK上,如果需要維護,就在1-maint分支上做,如果有需要可以把改動MERGE回TRUNK:
svn checkout svn://servername_or_IPADDRESS/svnroot/usertools/1-maint "
usertools-1-maint
cd usertools-1-maint
svn merge -r svn://servername_or_IPADDRESS/svnroot/usertools/trunk
svn commit -m "Merged mantein branch into trunk"
如果需要RELEASE1.1版本,直接在1-maint上做:
svn copy svn://servername_or_IPADDRESS/svnroot/usertools/1-maint "
svn://servername_or_IPADDRESS/svnroot/usertools/1.1-maint
最后,MERGE圖是這樣:
------------------------------------------------ usertools-trunk -->
\ | | \
----- usertools-1.0 | | --- usertools-2.0
| | | |
------ usertools-1.0-maint --------------- ---- usertools-2.0-maint
\ \
usertools-1.1 usertools-1.2
使用參看了:這里
posted on 2007-11-13 13:04
我愛佳娃 閱讀(1879)
評論(0) 編輯 收藏 所屬分類:
服務配置