LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2379|回复: 8

[LFS 幻想系列] Trac + Subversion + Apache-DAV + ViewVC.

[复制链接]
发表于 2006-4-22 20:25:04 | 显示全部楼层 |阅读模式
主要是作 SVN 服务器的,可以在这个基础上安装其他基于 SVN 的软件,比如 Trac. http://www.edgewall.com/trac/。CLFS 主页就是用这套系统的,http://trac.cross-lfs.org/。不过要自行安装 Trac。

大家可以访问我的机器看看效果:
Trac 界面: http://olive.myfantasy.org/trac
ViewVC 界面: http://svn.myfantasy.org/webview/
SVN 操作: svn co http://svn.myfantasy.org/rep/nb32
SVN 的 Web 界面: http://svn.myfantasy.org/rep/nb32


===================================================
Apache:Web 服务器,这里主要的作用是两个,一个是提供 CGI 脚本运行,另外一个是提供 WebDAV 协议给 SVN 使用。
Subversion:版本控制软件。用过 CVS 的都知道,但是比 CVS 更强大。我用过后,非常喜欢。
ViewVC:以前叫 ViewCVS,现在支持 Subversion 了,就改名了。为Subversion 提供 Web 访问界面,功能也比较强大。
Trac:一个强大的问题追踪系统,也带有一个Wiki。主要是为了网上协同工作设计的。

软件安装:
安装 Apache 2.2.0
[PHP]
./configure \
        --prefix=/opt/apache --sysconfdir=/etc/apache \
        --enable-layout=FHS --enable-mods-shared=all \
        --with-gdbm --with-ssl=/usr --with-berkeley-db=/usr/ \
        --enable-{so,cache,gdbm,auth-anon,file-cache,mine-magic,headers,usertrack,dav,deflate,dav_svn} \
        --enable-{ssl,rewrite,vhost-alias,proxy,proxy-connect}
make -j3 &&
make install
[/PHP]
记得要把 apache 的用户目录设置到 /srv/www。其他设置参考 BLFS。

安装 swig 1.3.29[PHP]
./configure --prefix=/usr && make && make install
[/PHP]
安装 Subversion 1.3.1
[PHP]
./configure --prefix=/usr --with-ssl --with-zlib --enable-shared --disable-static \
        --without-berkeley-db \
        --with-swig \
        --with-apr=/opt/apache \
        --with-apr-util=/opt/apache \
        --with-apxs=/opt/apache/sbin/apxs
make && make install
[/PHP]
把 tools/hook-scripts/commit-email.pl 拷贝到 /usr/local/bin 下边
[PHP]
cp tools/hook-scripts/commit-email.pl /usr/local/bin
[/PHP]
其他的,按照 BLFS 设置。

SVN::Notify (Perl 程序,可选)
[PHP]
cpan -i Test:od::Coverage
cpan -i Test:od
cpan -i SVN::Notify
[/PHP]       



====================================================
检查:
1. /etc/apache/httpd.conf中存在
[PHP]
LoadModule dav_svn_module     lib/apache/mod_dav_svn.so
LoadModule authz_svn_module   lib/apache/mod_authz_svn.so
[/PHP]
2. 运行 svn help, svnadmin help 正常
3. 运行 svnnotify 正常。

====================================================
配置:
apache 相应用户:apache:apache
subversion 相应用户:svn:svn

1. Apache 启动脚本,加入 umask 007。重启 Apache。
2. 建立目录。
[PHP]
# umask 007
# mkdir -p /srv/SVN_Repository/Public
# chown -v apache:svn /srv/SVN_Repository/Public
# chmod -v 770 /srv/SVN_Repository/Public
# install -dv m770 -o apache -g svn /srv/SVN_Repository/DavLock
# touch /srv/SVN_Repository/DavLock/DavLock
[/PHP]

3. Apache 设置
/etc/apache/httpd.conf 文件中
[PHP]
#Include /etc/apache/extra/httpd-dav.conf
->
Include /etc/apache/extra/httpd-dav.conf
[/PHP]

虚拟主机设置,/etc/apache/extra/httpd-vhosts.conf 文件加入
[PHP]
NameVirtualHost *:80
<VirtualHost *:80>
    # for svn.myfantasy.org
    ServerName svn.myfantasy.org
    DocumentRoot /srv/SVN_Repository
    ServerAdmin webmaster@myfantasy.org
    ErrorLog /var/log/apache/svn.myfantasy.org-error_log
    CustomLog /var/log/apache/svn.myfantasy.org-access_log common
</VirtualHost>
[/PHP]

DAV 设置,/etc/apache/extra/httpd-dav.conf 文件中加入
[PHP]
DavLockDB "/srv/SVN_Repository/DavLock/DavLock"
<Location /rep>
    DAV svn
    SVNParentPath /srv/SVN_Repository/Public
    Options Indexes FollowSymLinks
    IndexOptions +NameWidth=*
    Order allow,deny
    Allow from all

    # 上传需要密码认证
    # how to authenticate a user
    AuthName "DAV-upload"
    AuthType Digest
    AuthUserFile /srv/SVN_Repository/svnpass

    <LimitExcept GET PROPFIND OPTIONS REPORT>
        Require valid-user
    </LimitExcept>
</Location>
[/PHP]

设置密码:( 更改 username 为你想要的 user )
[PHP]
htdigest -c  /srv/SVN_Repository/svnpass "DAV-upload username
[/PHP]

4. 设置 SVN 的 仓库。(简单介绍一下)
[PHP]
# cd /srv/SVN_Repository/Public
# svnadmin create MyRep1
# chown apache MyRep1
[/PHP]
       
你就可以这样checkout 了
[PHP]
# cd /tmp
# svn co http://svn.myfantasy.org/rep/MyRep1
Checked out revision 0.
[/PHP]

要 commit 的话,
[PHP]
# svn ci
[/PHP]
        如果你设置了 hook 的话,每次 commit 都会发送一封 email 的。

5. hooks 的设置。hook 的作用就是事件触发器。
比如,每当用户 commit 的时候,都执行一个脚本,可以在脚本里边发一封信给某个 email 地址或者邮件列表什么的。
[PHP]
cd /srv/SVN_Repository/Public/MyRep1/Hook
mv post-commit.tmpl post-commit
[/PHP]
       
编辑 post-commit
[PHP]
commit-email.pl "$REPOS" "$REV" commit-watchers@example.org
[/PHP]
改成:
[PHP]
/usr/local/bin/commit-email.pl "$REPOS" "$REV" XXX@YYY.COM (邮件收信人)
[/PHP]

如果想要漂亮一点的 HTML 格式的 email,可以用这行:
[PHP]
/usr/bin/svnnotify --repos-path "$REPOS" --revision "$REV" --to $MAIL_TO --svnlook /usr/bin/svnlook --handler HTML --with-diff
$MAIL_TO 就是收信人。
[/PHP]
关于 hooks 的 2 个默认变量需要注意的:
[PHP]
Default PATH for hooks:
        /usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.
Default PWD for hooks:
        /
[/PHP]

6. ViewVC 配置
        修改文件 $PREFIX/viewvc.conf里边的内容。
       
[PHP]                svn_roots = MySVN: /srv/SVN_Repository/Public/CLFS_Scripts       
                default_root = MySVN       
                address = <a href="mailto:XXXX@YYYY.COM">Webmaster</a>[/PHP]
       
                第一行指定 SVN 的仓库多个仓库用逗号隔开
                第二行指定默认访问仓库
                第三行指定邮件地址。

        修改 apache 文件 /etc/apache/extra/http-dav.conf,加入:
[PHP]                Alias /webview /opt/ViewVC-1.0/bin/cgi/
                <Directory "/opt/ViewVC-1.0">
                        DirectoryIndex viewvc.cgi
                        AddHandler cgi-script .cgi
                        Options ExecCGI FollowSymLinks
                        AllowOverride None
                        Order allow,deny
                        Allow from all
                </Directory>[/PHP]
        重启 apache

附录:
        简单的 Tips:
[PHP]
        强制改动 Commit Log
        svnadmin --bypass-hooks setlog /srv/SVN_Repository/Public/CLFS_Scripts -r X newlogfile
        #With Trac: trac-admin /path/to/the/trac-instance resync
[/PHP]


参考资料:


Changelog:
2006-04-22
--Initial draft.
2006-04-23
--Add ViewVC part.
--Bug fix. Function annotate now works correctly in ViewVC.
2006-04-24
--Add Trac part.

转载请保持完整。
by 终极幻想@LinuxSir.Org
发表于 2006-4-22 23:24:31 | 显示全部楼层
不错, SVN+APACHE是比较流行的版本控制的方法.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-23 03:48:24 | 显示全部楼层
用来管理我的配置文件以及脚本,很方便。大家也可以去下载,commit也可以。:)
回复 支持 反对

使用道具 举报

发表于 2006-4-23 06:17:23 | 显示全部楼层
弱问:commit 是啥?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-23 08:44:29 | 显示全部楼层
Post by d00m3d
弱问:commit 是啥?


这个,就是你修改后,把结果 Commit(提交) 到库里边,这样大家都可以看到。
回复 支持 反对

使用道具 举报

发表于 2006-4-27 11:37:09 | 显示全部楼层
好东西!多谢楼主分享!

正好打算用这个!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-27 12:33:38 | 显示全部楼层
Trac 还没完全设置好,正在设置 mod_python 部分。
回复 支持 反对

使用道具 举报

发表于 2006-5-30 20:15:37 | 显示全部楼层
虽然没用过ViewVC,但是Trac的效果貌似要好得多。Trac作为项目管理系统,跟SVN搭配很好用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-30 21:33:30 | 显示全部楼层
就是 trac 不会设置,总是不出我想要的效果,:(。郁闷中。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表