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

来源:百度文库 编辑:神马文学网 时间:2024/05/25 21:19:39
主要是作 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 cohttp://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
记得要把 apache 的用户目录设置到 /srv/www。其他设置参考 BLFS。
安装 swig 1.3.29PHP 代码:
./configure --prefix=/usr && make && make install
安装 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
把 tools/hook-scripts/commit-email.pl 拷贝到 /usr/local/bin 下边
PHP 代码:
cp tools/hook-scripts/commit-email.pl /usr/local/bin
其他的,按照 BLFS 设置。
SVN::Notify (Perl 程序,可选)
PHP 代码:
cpan -i Test::Pod::Coverage
cpan -i Test::Pod
cpan -i SVN::Notify
====================================================
检查:
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
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
3. Apache 设置
/etc/apache/httpd.conf 文件中
PHP 代码:
#Include /etc/apache/extra/httpd-dav.conf
->
Include /etc/apache/extra/httpd-dav.conf
虚拟主机设置,/etc/apache/extra/httpd-vhosts.conf 文件加入
PHP 代码:
NameVirtualHost *: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

DAV 设置,/etc/apache/extra/httpd-dav.conf 文件中加入
PHP 代码:
DavLockDB "/srv/SVN_Repository/DavLock/DavLock"

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

Require valid-user


设置密码:( 更改 username 为你想要的 user )
PHP 代码:
htdigest -c  /srv/SVN_Repository/svnpass "DAV-upload username
4. 设置 SVN 的 仓库。(简单介绍一下)
PHP 代码:
# cd /srv/SVN_Repository/Public
# svnadmin create MyRep1
# chown apache MyRep1
你就可以这样checkout 了
PHP 代码:
# cd /tmp
# svn co http://svn.myfantasy.org/rep/MyRep1
Checked out revision 0.
要 commit 的话,
PHP 代码:
# svn ci
如果你设置了 hook 的话,每次 commit 都会发送一封 email 的。
5. hooks 的设置。hook 的作用就是事件触发器。
比如,每当用户 commit 的时候,都执行一个脚本,可以在脚本里边发一封信给某个 email 地址或者邮件列表什么的。
PHP 代码:
cd /srv/SVN_Repository/Public/MyRep1/Hook
mv post-commit.tmpl post-commit
编辑 post-commit
PHP 代码:
commit-email.pl "$REPOS" "$REV" commit-watchers@example.org
改成:
PHP 代码:
/usr/local/bin/commit-email.pl "$REPOS" "$REV" XXX@YYY.COM (邮件收信人)
如果想要漂亮一点的 HTML 格式的 email,可以用这行:
PHP 代码:
/usr/bin/svnnotify --repos-path "$REPOS" --revision "$REV" --to $MAIL_TO --svnlook /usr/bin/svnlook --handler HTML --with-diff
$MAIL_TO 就是收信人。
关于 hooks 的 2 个默认变量需要注意的:
PHP 代码:
Default PATH for hooks:
/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.
Default PWD for hooks:
/
6. ViewVC 配置
修改文件 $PREFIX/viewvc.conf里边的内容。
PHP 代码:
svn_roots = MySVN: /srv/SVN_Repository/Public/CLFS_Scripts
default_root = MySVN
address = Webmaster
第一行指定 SVN 的仓库多个仓库用逗号隔开
第二行指定默认访问仓库
第三行指定邮件地址。
修改 apache 文件 /etc/apache/extra/http-dav.conf,加入:
PHP 代码:
Alias /webview /opt/ViewVC-1.0/bin/cgi/

DirectoryIndex viewvc.cgi
AddHandler cgi-script .cgi
Options ExecCGI FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

重启 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
参考资料:
引用:
http://httpd.apache.org/docs/2.2/
http://www.linux-tutorial.info/modul...DAV-LDAP-HOWTO
http://www.onlamp.com/pub/a/onlamp/2...ubversion.html
http://www.mayin.org/aragorn/computers/Mod_DAV.html
http://svnbook.red-bean.com/en/1.0/ch06s04.html
BLFS Book. Running a Subversion Server
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