在 FreeBSD 下架設 Subversion

紀錄於 FreeBSD 下架設 SVN 的過程...... 最近怎麼都在架 SVN... XD

詳細的解釋也懶得打了, 有興趣想了解深入點的, 可以看之前的文章, 本篇還是直接從頭裝到完就好了... XD

首先, 先來裝 package 吧~~~ 🙂

安裝 Apache

  1. cd /usr/ports/www/apache22
  2. make WITH_AUTH_MODULES=yes WITH_DAV_MODULES=yes WITH_SSL_MODULES=yes WITH_BERKELEYDB=db42 install clean
  3. # SVN 會使用到 bdb4, 所以 apache 在此要一起裝起來

安裝 Subversion

  1. cd /usr/ports/devel/subversion
  2. make -DWITH_SVNSERVE_WRAPPER -DWITH_MOD_DAV_SVN -DWITH_APACHE2_APR install clean
  3. 讓 svn 支援 apache22 的 DAV_MODULES

設定 SVN 基本環境目錄

  1. mkdir -p /home/www/svn/repository/PROJECT_NAME # 路徑自行決定後再更改即可.
  2. mkdir -p /home/www/etc # 來放 svn 所需要的設定檔
  3. svnadmin create /home/www/svn/repository/PROJECT_NAME # svn 初始化
  4. chown -R www:www /home/www/svn/repository/PROJECT_NAME
  5. chown -R www:www /home/www/etc

設定 Apache2

在 /usr/local/etc/apache22/httpd.conf 應該有這三行

LoadModule dav_module         libexec/apache22/mod_dav.so
LoadModule dav_svn_module     libexec/apache22/mod_dav_svn.so
LoadModule authz_svn_module   libexec/apache22/mod_authz_svn.so

如果有apache restart 有出現 "[warn] module dav_module is already loaded, skipping" 的 WARN, 就把 dav_module 註解掉, 如下:  

# LoadModule dav_module         libexec/apache22/mod_dav.so
LoadModule dav_svn_module     libexec/apache22/mod_dav_svn.so
LoadModule authz_svn_module   libexec/apache22/mod_authz_svn.so

新增 svn.conf

  • 註: 如果要設 Virtual Host 就直接跳過這個.
  • vim/usr/local/etc/apache22/Includes/svn.conf # 設定 apache DAV

<Location /svn>
  DAV svn
  SVNPath /home/www/svn/repository
  AuthType Basic
  AuthName "Svn repository"
  AuthUserFile /home/www/etc/svn-auth-file
  AuthzSVNAccessFile /home/www/etc/svn-access-file # 如果不加這個, 預設大家都可以進去存取
  Require valid-user
</Location>

設定 Virtual Host

  • 註: 要設定這個, 就不用設上述的 svn.conf
  • vim /usr/local/etc/apache2/extra/httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot /home/wwwadm/svn/repository
    ServerName VIRTUAL_HOSTNAME
    ErrorLog /var/log/httpd/svn.VIRTUAL_HOSTNAME-error_log
    CustomLog /var/log/httpd/svn.VIRTUAL_HOSTNAME-access_log combined
    <Location /svn>
    DAV svn
    # 注意, 這邊要用 SVNParentPath
    SVNParentPath /home/wwwadm/svn/repository 
    # Satisfy Any
    AuthType Basic
    AuthName "Svn repository"
    AuthUserFile /home/www/etc/svn-auth-file
    AuthzSVNAccessFile /home/www/etc/svn-access-file
    Require valid-user
    </Location>
</VirtualHost>

建立帳號

  1. htpasswd -c /etc/svn-auth-file USER1 # 建立存取帳號
  2. htpasswd /etc/svn-auth-file USER2 # 第二個以後的帳號記得不要 -c

建立 SVN 權限控制檔案

  • vim /etc/svn-access-file

[/]
* =

[PROJECT_NAME:/]
USER1 = rw
USER2 = r

設定開機自動啟動 Apache

  1. vim /etc/rc.conf
  2. apache22_enable="YES" # 增加這一行

測試

  1. cd /tmp/;mkdir PROJECT_NAME; cd PROJECT_NAME; mkdir trunk branches tags; cd /tmp/;
  2. svn import PROJECT_NAME http://DOMAIN_NAME/svn/PROJECT_NAME
  3. http://DOMAIN_NAME/svn/ 應該就可以看到 PROJECT_NAME 了

看到就可以開始做 svn checkout http://DOMAIN_NAME/svn/PROJECT_NAME, commit ... 等動作~~ 設 Virutal Host 的就可以 svn co http://VIRTUAL_HOSTNAME/svn/PROJECT_NAME 囉~

賀~ 這樣子 subversion 就架設完成囉!! 🙂

參考:

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈在 FreeBSD 下架設 Subversion〉中有 2 則留言

  1. Tsung 大,
    我照著你的這個toturial ..
    有部份問題
    SVNParentPath /home/wwwadm/svn/repository # 注意, 這邊要用 SVNParentPath
    這個註解 放後面的話..會有問題...
    然後小第
    有做了些修改
    http://blog.johnpupu.tw/?p=213
    基本上都是抄你的......^^
    根據CC 授權,小第有註明出處
    若Tsung 覺得不妥的話~~小第會再移除
    謝謝

  2. 阿阿阿~ 因為我都看這個去設定, 並沒有 copy 上面的值去用, 所以沒發現到這個問題. 很感謝提醒~
    至於要使用, 就盡量用吧~ 只要有對大家有幫助就可以囉~ 🙂

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料