隨筆-124  評論-194  文章-0  trackbacks-0

          一、安裝很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訪問是上上之選

          強烈建議使用WEBSSL方式來使用服務,雖然開始配置麻煩點,但一勞永逸。

          這種方式比較安全,且不占用多余端口,另外,從外部通過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_svnssl模塊:

          a2enmod mod_dav_svn

          a2enmod ssl

          這是個工具,名字就是add to enable module,如果沒有這個工具,可以直接:

          cd ./mods-enabled/

          ln -s /etc/apache2/mods-available/ssl.* .

          建立enableavailable的鏈接,就是開啟模塊了,跟這個命令干的事一樣。

          編輯/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配置一步一步來也不麻煩

          SSLsubversion沒有什么關系,是APACHE2的配置,這些配置也適用于你想讓人家用https來訪問你網站的情況。

          先通過我之前的一篇文章,不但了解了SSL是咋回事,還順便生成了APACHE要的證書。

          注意:只要看到:cat key.pem cert.pem >key-cert.pem生成了這個文件就可以了。

          把這個文件改名并存到:/etc/apache2/ssl/apache.pem,后面配置時用。

          文章:在這里。開始我也不會,會了以后,發現很簡單。

          現在基本條件都已經具備,只要讓APACHE2使用SSL443端口(即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,分別是80443端口。

          重啟服務:

          /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分支上做,如果有需要可以把改動MERGETRUNK

          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 我愛佳娃 閱讀(1883) 評論(0)  編輯  收藏 所屬分類: 服務配置
          主站蜘蛛池模板: 东山县| 札达县| 平遥县| 乌拉特中旗| 会同县| 龙里县| 冕宁县| 莱阳市| 扶风县| 公主岭市| 霞浦县| 德庆县| 化隆| 东乌珠穆沁旗| 泸水县| 宁波市| 青田县| 璧山县| 白水县| 忻州市| 锦州市| 黄浦区| 滕州市| 阜新| 江华| 高密市| 秦皇岛市| 宜兰县| 安多县| 进贤县| 万宁市| 桦南县| 江川县| 井冈山市| 和平区| 成都市| 修文县| 故城县| 辽源市| 南开区| 苍南县|