目標:
- 能夠版本控制(廢話)
- 可以透過svn://或是http://連線
- 能有web介面看到現在所有的專案
- 有帳號密碼才能存取
首先安裝好Ubuntu Server,接著分成三階段:
一、基本設定
- 先安裝相關套件
- sudo apt-get install apache2 subversion libapache2-svn php5 apache2-utils apache2-doc php-pear db5.1-util php5-json openssl-blacklist subversion-tools
- 準備相關資訊:
- Repository根目錄: /home/svn
- WebSvn根目錄: /var/www/websvn
- svn帳號: svn
- svn群組名稱: svngroup
- 增加帳號,並把相關帳號放入群組
- sudo mkdir /home/svn
- sudo addgroup svngroup
- sudo useradd -d /home/svn -G svngroup svn
- sudo usermod -G svngroup -a www-data
- sudo usermod -G svngroup -a 妳的帳號
- 先產生一個測試Repository(注意順序)
- sudo chown -R svn:svngroup /home/svn
- sudo mkdir /home/svn/demo
- sudo svnadmin create /home/svn/demo
- sudo chmod -R g+rwx /home/svn/demo
到此基本的設定就OK了,但還無法從client端取得資料,接著我們來設定相關協定。
二、設定http
- 編輯/etc/apache2/mods-available/dav_svn.conf,讓他變成如下:
- <Location /repos>
- DAV svn
- SVNParentPath /home/svn
- SVNListParentPath On
- AuthType Basic
- AuthName "Subversion Repository" #這個是跳出認證視窗提示文字
- AuthUserFile /etc/subversion/passwd
- Require valid-user
- #LimitXMLRequestBody 0 #如果上傳太多檔案可能SVN會報錯,打開這個選項
- </Location>
- 重新啟動apache讓他生效
- sudo /etc/init.d/apache2 restart
- 產生認證帳號密碼檔,這樣從http存取Repository的時候就會跳出輸入帳號密碼視窗,就不會任何人都可修改
會要你輸入兩次密碼,輸入完成即可- sudo htpasswd -c /etc/subversion/passwd 帳號名稱
以上指令僅限第一次使用,之後要再產生新帳號的話,必須把-c參數拿掉,不然會重新產生passwd的檔案,如下- sudo htpasswd /etc/subversion/passwd 帳號名稱
- 確認剛才的帳號有產生
- sudo cat /etc/subversion/passwd
- 這樣應該就可以利用 http://網站IP或Domain/repos/REPO_NAME 存取Repository了,也可以使用瀏覽器瀏覽。
三、設定svn
- 當利用svnadmin create指令產生新的Repository之後,該目錄底下有個conf目錄,編輯svnserve.conf檔案
- [general]
- anon-access = none #訪客不可存取
- auth-access = write #認證使用者可寫入
- password-db = passwd #帳號密碼表的檔案
- 存檔好之後,我們再來編輯conf目錄底下passwd檔案(就是上面指定的帳號密碼表),加入可存取該Repository的帳號與密碼
- [users]
- user = user-password
- 啟動SVN
我們利用xinetd來委託啟動,如果server沒有安裝的話就先裝一下吧- sudo apt-get install xinetd
- 新增個svn檔
- sudo vi /etc/xinetd.d/svn
- 加入底下
注意紅框處的值是要隨實際情況來改變的- service svn
- {
- disable = no
- port = 3690
- socket_type = stream
- protocol = tcp
- wait = no
- user = svn
- server = /usr/bin/svnserve
- server_args = -i -r /home/svn
- }
- 存檔好後執行
即可。- sudo /etc/init.d/xinetd restart
四、websvn
- 變身root
- sudo -i
- 下載websvn最新版(最新版只到2011/6就沒了)並解壓縮
- cd ~
- wget http://websvn.tigris.org/files/documents/1380/49056/websvn-2.3.3.tar.gz
- tar -zxvf websvn-2.3.3.tar.gz
- 將所有檔案搬到/var/www底下
- mkdir /var/www/websvn
- mv /root/websvn-2.3.3/* /var/www/websvn
- 重新編輯一次/etc/apache2/mods-available/dav_svn.conf,在最底下加上
- <Location /websvn>
- Options FollowSymLinks
- order allow,deny
- allow from all
- AuthType Basic
- AuthName "Subversion Repository"
- </Location>
- 增加程式碼高亮
- apt-get install enscript
- 修改設定檔
- cd /var/www/websvn/include
- cp distconfig.php config.php
- vi config.php
- 增加SVN Parent目錄與encscript
- $config->parentPath("/home/svn");
- $config->setEnscriptPath('/usr/bin');
- 重新啟動apache之後就可以在 http://網站IP或Domain/websvn 看到已經建立的Repository了
以後要新增Repository:
參考連結:
然後編輯底下conf/svnserve.conf與passwd檔案即可
- cd /home/svn
- svnadmin create RepositoryName
- sudo chown -R svn:svngroup RepositoryName
- sudo chmod -R ug+rwx RepositoryName
參考連結:
沒有留言:
張貼留言