一、安裝
1. 下載:http://subversion.tigris.org
2. 解壓:#: tar zxvf subversion-1.3.2.tar.gz
3. 依次輸入./configure , make , make install 進行編譯安裝完成
4. 開啟SVN服務:svnserve –d
5. 檢測服務是否開啟:netstat -ntlp如果看到3690的端口正常開放了,證明SVN啟動了
二、使用
1. 建立項目:svnadmin create project_name 【project_name為你的project名字,可以任意取】
2. 進入project_name\conf文件夾,(如果沒有passwd文件,可以用vi創建),
編輯 svnserve.conf 把anon-access = read ,auth_access = write
還有password-db = passwd 的注釋去掉,還有[general]的注釋也要去掉
.需要兩個文件,httpd和subversion. httpd是web服務器,用來通過web訪問subversion,httpd可以在apache官方網站上下載到
2.新建一個用戶:svnroot
最好不要讓root用戶參與到svn的權限管理和日常的運行和維護工作中來,但是下面的一些安裝和配置操作還是 需要root用戶來完成的,因為有些操作只有root才能做。權限問題很重要。曾經因為權限問題折騰了一天。
3.編譯安裝httpd (root用戶操作):
//解壓apache2安裝包 # tar xvzf httpd-2.2.2.tar.gz //進入解壓后的目錄 # cd httpd-2.2.2 //配置apache安裝,前兩個參數是必須要加的,你還可以根據您的需要添加其他的參數。 //后面的參數制定你要把apache安裝哪里 # ./configure --enable-dav --enable-so --prefix=/usr/local/apache2/ # make //安裝 # make install # cd /usr/local/apache2/bin //啟動apache服務 # ./apachectl start //打開瀏覽器http://localhost/如果有測試頁"It works!"出現則證明已經安裝成功。 |
4.
安裝Subversion
//解壓SubVersion安裝包 (root用戶進行下面的操作) # tar xvzf Subversion-1.3.1.tar.gz //進入解壓后的目錄 # cd Subversion-1.3.1 //配置subversion安裝 #./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-ssl --with-zlib --enable-maintainer-mode # make //安裝 # make install //創建庫文件所在的目錄 (svnroot用戶進行下面的操作) # mkdir /home/svnroot/repository //進入subversion的bin目錄 # cd /usr/local/subversion/bin //創建倉庫"test" # ./svnadmin create /home/svnroot/repository/test # cd /home/svnroot/repository/test //看看是不是多了些文件,如果是則說明Subversion安裝成功了 # ls –l # cd /usr/local/subversion/bin //這條語句將把路徑/home/user/import下找到的文件導入到你創建的Subversion 倉庫中去, //提交后的修訂版為1。 # ./svn import /home/user/import file:///home/svnroot/repository/test –m "注釋" //不讓其他人有該目錄的權限 # chmod 700 /home/svnroot/repository |
5.修改Apache配置文件
# cd /usr/local/apadche2/bin //啟動Apache # ./apachect1 start # vi /usr/local/apache2/conf/httpd.conf //在最下面添加 LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn> DAV svn SVNParentPath /home/svnroot/repository/ //svn父目錄 AuthzSVNAccessFile /home/svnroot/repository/authz.conf //權限配置文件 AuthType Basic //連接類型設置 AuthName "Subversion.zoneyump" //連接框提示 AuthUserFile /home/svnroot/repository/authfile //用戶配置文件 Require valid-user //采用何種認證 </Location> //其中authfile是通過"htpasswd [–c] /home/svnroot/repository/authfile username password"來創建的 //"Require valid-user"告訴apache在authfile中所有的用戶都可以訪問。如果沒有它, //則只能第一個用戶可以訪問新建庫 |
6.重啟apache
# ./usr/local/apache2/bin/apachectl restart //打開瀏覽器訪問http://localhost/svn/test/,如果有東西顯示就說明成功。 |
7.權限管理
1)增加用戶
# htpasswd [-c] /home/svnroot/repository/authfile wooin //第一次設置用戶時使用-c表示新建一個用戶文件。回車后輸入用戶密碼,完成對用戶的增加 # htpasswd authfile 用戶名(加入新的用戶) |
2)權限分配
# vi /home/svnroot/repository/authz.conf [test:/] //這表示,倉庫test的根目錄下的訪問權限 wooin = rw //test倉庫wooin用戶具有讀和寫權限 bao = r //test倉庫bao用戶具有讀權限 [test2:/] //test2倉庫根目錄下的訪問權限 wooin = r //wooin用戶在test2倉庫根目錄下只有讀權限 bao = //bao用戶在 test2倉庫根目錄下無任何權限 [/] //這個表示在所有倉庫的根目錄下 * = r //這個表示對所有的用戶都具有讀權限 #[groups] //這個表示群組設置 #svn1-developers = wooin, bao //這個表示某群組里的成員 #svn2-developers = wooin #[svn1:/] #@svn1-developers = rw //如果在前面加上@符號,則表示這是個群組權限設置 |
將這個設置完成后。重啟Apache,就可以通過
http://localhost/svn/test
這個URL來訪問倉庫了,當然,受權限的限制,必須是合法用戶才能訪問且具有相應的權限
備注:
1。apache進程的權限:因為所有跟倉庫傳輸的操作都是通過apache進程進行的,所以即使你給svn用戶設置了 很大的權限,但是apache進程沒有訪問倉庫或者相關文件的權限也沒有用,apache進程的權限設置在 /usr/local/apache2/conf/httpd.conf 文件中配置,找到文件中的這兩行:
User daemon # 將daemon改為svnroot,讓apache進程以svnroot的身份運行 Group daemon |
2。
在/etc/profile的結尾設置一些svn啟動時要做的工作
# start apache server for svn /usr/sbin/apachectl start export SVN_EDITOR=vi |
3。/home/respository/svnroot下的文件操作權限有給svnroot.