靈魂-放水

          為學日益,為道日損。

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks
          一、安裝
          第一次安裝Subversion,在昨天的安裝過程中,出現了一些問題:
          第一步,安裝Apache+Subversion
          ?????? 首先,我選擇了apache_2.2.3+svn-1.3.2的組合。開始安裝Apache server就報錯,提示http.conf第133行出錯,打開在前面加了個#,啟動成功。接著安裝svn-1.3.2,配置好httpd.conf之后發現apche的服務無法啟動,說是無法加載mod_dav_svn.so。baidu之后發現是svn無法在apache2.2下面安裝,其官方下載頁面也有提示說:Note that the Apache modules included in this package was compiled against Apache HTTP Server 2.0, and thus will not work with Apache HTTP Server 2.2.下載的過程中,沒注意這個東西!下次得多留意這些細節。

          ?????? 只好重新下載安裝apache_2.0.59版本,把Subversion/bin下面所有.dll文件復制到Apache Group\Apache2\bin下,提示有文件覆蓋,選擇不覆蓋;再將Subversion/bin下的.so文件復制到Apache Group\Apache2\modules下。

          安裝Apache2.x時注意事項:

          請確保你輸入正確的服務器URL(如果你的服務器沒有DNS名稱,你可以直接輸入IP地址)。我建議你將Apache安裝成 for all Users,on Port 80,as a service。注意:如果你已經有一個IIS或者其它的程序使用80端口,安裝可能會失敗。如果是這樣,你可以到程序目錄下的Apache Group\Apache2\conf目錄中找到文件httpd.conf,將其中的Listen 80改成一個不用的端口,比如Listen 81。重新運行安裝程序,這次應該不會再有問題了。


          第二步,修改apache的配置文件
          接著打開Apache HTTP Server 的 httpd.conf(在 /conf/ 目錄下),先找到以下兩行:
          #LoadModule dav_module modules/mod_dav.so
          #LoadModule dav_fs_module modules/mod_dav_fs.so
          把這兩行最前面的 '#' 字符刪除,然后把下面這行加到這些 LoadModule 指令的后面:
          LoadModule dav_svn_module modules/mod_dav_svn.so
          LoadModule authz_svn_module modules/mod_authz_svn.so
          用記事本打開 Apache HTTP Server 的 httpd.conf,在文件最后面加上以下幾行:
          <Location /svn>
          ??? DAV svn
          ??? SVNParentPath d:/svn
          </Location>
          其中d:/svn為你要建的倉庫的父目錄(必須為本地目錄),最好用雙引號引一下.

          第三步,創建倉庫
          根據apache的配置文件的設置建立目錄:d:/svn.然后我們就可以在下面建立倉庫了,創建方法如下:
          c:\>svnadmin create d:/svn/repository(svn大寫的時候居然驗證訪問被拒絕)
          命令執行成功之后,會在d:/svn/repository下面生成很多的文件和目錄

          第四步,使用
          重新啟動Apache Server
          在瀏覽器中輸入網址:
          http://localhost/svn/repository/
          這時候,看到頁面顯示:

          Revision 0: /
          Powered by Subversion version 1.3.2 (r19776).





          安裝成功,接下來將進行進一步的設置。

          二、配置

          1.? 以兩種方式運行

          (1) 以apache方式運行
          ? svn使用apache的權限管理對檔案庫及目錄進行讀寫管理。
          ??htpasswd的調用:
          ??? 1)用cmd進入到Apache的bin目錄下,直接開始調用
          ??? 2)把htpasswd添加到系統變量里.
          ??
          ? 建立保存用戶名和密碼的文件
          ? htpasswd -c? svn-auth-filename? username1
          ? 然后,會提示輸入密碼,這里就加入了一個用戶了。然后再加一個用戶:
          ? htpasswd -m ?/svn-auth-filename username2
          ?
          ? 建立控制用戶訪問權限的文件svn-access-filename
          ?[svn1:/]?????????????? //這表示,倉庫svn1的根目錄下的訪問權限
          ?harry = rw???????????? // svn1倉庫harry用戶具有讀和寫權限
          ?sally = r?????????????? // svn1倉庫sally用戶具有讀權限
          ?[svn2:/]?????????????? //svn2倉庫根目錄下的訪問權限
          ?harry = r?????????????? // harry用戶在svn2倉庫根目錄下只有讀權限
          ?sally =?????????????? // sally用戶在 svn2倉庫根目錄下無任何權限
          ?[svn2:/src]?????????? //svn2倉庫下src目錄的訪問權限
          ?harry=rw????????????
          ?sally=r
          ?[/]????????????????? // 這個表示在所有倉庫的根目錄下
          ?* = r?????????????? // 這個表示對所有的用戶都具有讀權限
          ?[groups]?????????????? // 這個表示群組設置
          ?svn1-developers = harry, sally?????????? // 這個表示某群組里的成員
          ?svn2-developers = sally
          ?[svn1:/]???????????
          ?@svn1-developers = rw?????? // 如果在前面加上@符號,則表示這是個群組權限設置
          ?
          然后修改httpd.conf配置:
          <Location /svn>
          DAV svn
          SVNParentPath /svn
          AuthType Basic
          AuthName "Subversion repository"(注意引號)
          AuthUserFile? svn-auth-filename (保存用戶名和密碼)
          Require valid-user
          AuthzSVNAccessFile? svn-access-filename(保存用戶訪問的權限策略)
          </Location>
          (注:)
          svn-access-filename,svn-auth-filename 文件直接可以放到C:\Program Files\Apache Group\Apache2\下,這也是默認的目錄,置于其他目錄下,啟動apache server出現錯錯誤。
          AuthUserFile文件需要用htpasswd工具創建、維護;AuthzSVNAccessFile 文件可以用Subversion創建倉庫以后,生成的conf文件夾下面的authz文件加以修改。
          如果已經有一個apache服務,希望兩個apache服務同時運行,則修改其中一個的服務端口。
          修改httpd.conf中的一行: Listen 80 將80改成其他不用的端口號

          啟動apahce就可以通過
          http://svnmachine-ip/svn/svn1
          http://svnmachine-ip/svn/svn2
          這兩個URL來訪問倉庫了,當然,要受權限的限制,必須是合法用戶才能訪問且具有相應的權限

          (2) svnserve方式運行
          這種方式的運行又可以分為以下兩種(這和vsftp有些相似)
          1) standalone mode
          直接運行 #svnserve –d
          運行 lsof -i :3690可以看到SVN服務器已經在運行

          2) xinetd mode
          在/etc/xinetd.d/下生成svnserve文件,內容如下
          service svnserve
          {
          disable = no
          socket_type = stream
          protocol = tcp
          wait = no
          user = svnpub? (最好建一個這樣的用戶管理svn)
          server = /usr/local/bin/svnserve
          server_args = -i
          }
          編輯 /etc/services 檔,加入底下兩行:
          svnserve 3690/tcp # Subversion svnserve
          svnserve 3690/udp # Subversion svnserve
          重啟xinetd服務,運行 netstat -a|grep svnserve 可以看到SVN服務器已經在運行

          默認下客戶可以以匿名方式通過svn://方式任意訪問檔案庫,為了限制其權限,比如只允許讀操作,可以通過修改檔案庫conf子目錄中的svnseve.conf文件來實現。
          #vi /svn1/conf/svnseve.conf
          將下面三行前的#去掉
          anon-access = none??????????? //則匿名用戶不可以通過svn://方式訪問檔案庫
          auth-access = write????
          password-db = passwd????????? //使用passwd中的用戶名和密碼進行認證,有一點不好的是這里面的密碼輸的是明文
          authz-db = authz????????????? //使用authz中的權限控制策略,寫法如同apache中的svn-access-filename

          如果想更強的安全性可以使用svn+ssh://訪問機制。
          首當用戶通過svn+ssh://訪問時,服務器會自動啟動ssh認證機制,要求用戶輸入密碼,對于window用戶來說還需要安裝第三方軟件openssh,才可以采用這種機制。

          2.? 將代碼導入項目倉庫。在要導入倉庫的目錄上面點擊右鍵,點擊TortoiseSVN項的子菜單Import…在URl里面填寫http://服務器IP/svn/project,這里project就是剛剛建立的項目倉庫,

          在下面填入注釋,點擊OK,彈出提示輸入用戶名密碼對話框,填入flmn和password,就可以把代碼導入倉庫了。剛剛導入的文件并沒有顯示被svn管理,現在把這個目錄里文件都刪除,再在右鍵菜單里選擇SVN Checkout…就可以導出代碼,再看這個目錄,就有個小圖標在文件夾圖標下面了。

          3.? 對于其它操作,和CVS差不多,這里就不贅述了。可以參考TortoiseSVN幫助文件。


          posted on 2006-08-28 10:20 放水老倌 閱讀(667) 評論(0)  編輯  收藏 所屬分類: 配置管理
          主站蜘蛛池模板: 本溪| 延津县| 清流县| 绥滨县| 深水埗区| 鹤壁市| 瓦房店市| 汝南县| 句容市| 乌拉特中旗| 怀集县| 岑溪市| 高安市| 博客| 开远市| 大丰市| 大荔县| 永安市| 柳江县| 花莲县| 柳林县| 珠海市| 永善县| 肥乡县| 呼伦贝尔市| 嵊州市| 监利县| 大英县| 鹿泉市| 吉木萨尔县| 肥东县| 蒙阴县| 蓝山县| 万年县| 凌源市| 叶城县| 宜都市| 尚志市| 洛浦县| 绥宁县| 徐水县|