目標:
- 能夠版本控制(廢話)
- 可以透過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:
參考連結:
cd /home/svn svnadmin create RepositoryName sudo chown -R svn:svngroup RepositoryName sudo chmod -R ug+rwx RepositoryName然後編輯底下conf/svnserve.conf與passwd檔案即可
參考連結:
沒有留言:
張貼留言