apache+svn+trac安装及配置
svn简介:
Subversion是新一代的版本控制工具,它是一个自由、开放源码的版本控制系统。它是一个通用系统,可用来管理任何类型的文件,其中包括程序源码。Subversion是近年来崛起的版本管理工具,被誉为是cvs的接班人
trac简介:
Trac是一个为软件开发项目需要而集成了Wiki和问题跟踪管理系统的应用平台,是一个开源软件应用。Trac以简单的方式建立了一个软件项目管理的Web应用,以帮助开发人员更好地写出高质量的软件;Trac应用力求不影响现有团队的开发过程。
软件环境:
操作系统:
Suse10 sp2 x_86
软件包:
httpd-2.2.8.tar.bz2
pysqlite-2.5.5.tar.gz
subversion-1.4.6.tar.gz
subversion-deps-1.4.6.tar.gz
Trac-0.11.2.1.tar.gz
Genshi-0.5.1.tar.gz
swig-2.0.0.tar.gz
python-devel-2.4.2-18.13.i586.rpm
python-xml-2.4.2-18.13.i586.rpm
sqlite-3.2.8-15.2.i586.rpm
sqlite-devel-3.2.8-15.2.i586.rpm
注意:在搭建此环境时,要特别注意各种软件对应版本,可能一个软件的版本不对,都会导致环境搭建的失败.
编译安装Apache:
# tar zxvf httpd-2.2.8.tar.gz
# cd httpd-2.2.8
# ./configure --enable-dav --enable-so --enable-ssl --enable-maintainer-mode --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-rewrite
# make
# make install
#cp support/apachectl /etc/init.d/httpd
#vi /etc/init.d/httpd
加入一下的代码,是apache可以用chkconfig方式启动:
# Startup script for the Apache Web Server
# chkconfig: - 85 15
# description: Apache is a World Wide Web server. It
is used to serve
# HTML files and CGI.
# processname: httpd
# pidfile: /usr/local/apache2/log/httpd.pid
# config: /usr/local/apache2/conf/httpd.conf
#chmod 755 /etc/init.d/httpd
#chkconfig --add httpd
#chkconfig --level 3 httpd on
#service httpd start
打开浏览器,如果出现Apache的测试页面,可以看到It works!说明apache已经可以正常工作了.
编译安装Subversion:
注意:在安装之前先确认你的OS上已经安装了python和swig,如果没有安装的话可以下载source code或rpm包来安装,因为我的OS上只装了python,所以下面还要装下swig.
# tar zxvf swig-2.0.0.tar.gz
# cd swig-2.0.0
# ./configure
# make && make install
# tar zxvf subversion-1.4.6.tar.gz
# cd subversion-1.4.6
#./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-ssl --with-zlib --enable-maintainer-mode --without-berkeley-db PYTHON=/usr/bin/python --with-swig=/usr/local/bin/swig --enable-shared --enable-static --enable-swig-binding=python
# make
# make install
经过上面的步骤mod_dav_svn.so and mod_authz_svn.so将会被copy到/usr/local/apache2/modules/下,
同时在 /usr/local/apache2/conf/httpd.conf下,添加如下2行
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
检查一下是否都正确,如果没有的话可能就要手动加进去
同时执行了上面的make && make install后还要编译安装Subversion SWIG Python bindings
#cd subversion-1.4.6
#make swig-py
#make install-swig-py
可以看到swig-py的install目录是/usr/local/subversion/lib/svn-python.用如下命令讲这个扩展包扩展到python:
# echo /usr/local/subversion/lib/svn-python >/usr/lib/python2.3/site-packages/subversion.pth
剩下的就是测试svn的swig-py包是不是正常
#python <-- 启动python
>>>import svn.repos //按ctrl+d退出
如果不报错,那就说明OK了.
如果报错,那么检查如下问题:
I. subversion的configure是不是enable了shared和static,是不是带--with-swig;
II. libsvn_swig_py-x.so是否存在于/usr/local/subversion/lib目录;
III. /usr/local/subversion/lib是否已经增加到ld.so.conf文件 (/etc/ld.so.conf)
IV. 请使用ldconfig -v |grep swig来检查是否有swig的下列动态库
libsvn_swig_py-1.so.0 -> libsvn_swig_py-1.so.0.0.0
如果一切正常,这个安装就完成了
安装完成后,运行svnserver --version确认版本为1.4.6
配置svn
最好不要让root用户参与到svn的权限管理和日常的运行和维护工作中来,所以我们建立一个用户(如svn)同时为了处理好权限的问题,我们可以建立一个组(如svnrw),其他希望使用svn的用户加入这个组
在root权限下用下面的命令创建用户和组:
#groupadd svnrw
#useradd svn -g svnrw
#passwd svn
然后切换到用户svn来创建svn仓库,对svn进行配置
选择一个目录位置作为svn仓库的存放位置,在这里用/home/svn作为存放位置
//创建版本库"my_project",默认指定仓库的文件格式为fsfs
svnadmin create /home/svn/my_project
chown -R svn:svnrw /home/svn
chmod -R g+w home/svn/my_project
chmod g+s home/svn/my_project/db
# vi /usr/local/apache2/conf/httpd.conf
### svn settings
#
DAV svn
SVNListParentPath on // 允许在网页上显示svn父目录list
SVNParentPath /home/svn // /home/svn是我这边的SVN的父目录
AuthType Basic // 连接类型设置
AuthName "Subversion Repository" // 连接框提示
AuthUserFile /etc/svntrac.htpasswd // 用户配置文件
Require valid-user
这里设置SVNParentPath而不是SVNPath的好处是可以几个svn仓库同时访问
加了LimitExcept这样匿名用户可以浏览,check out代码,但是不能commit, 认证用户有commit权限,其中svntrac.htpasswd文件是通过htpasswd命令来创建的,第一次设置用户时使用-c表示新建一个用户文件
# /usr/local/apache2/bin/htpasswd -c /etc/svntrac.htpasswd admin
New password: xxxxxx
Re-type new password: xxxxxx
Adding password for user admin
另外要修改 apache进程的权限:因为所有跟版本库传输的操作都是通过apache进程进行的,所以即使你给svn用户设置了很大的权限,但是apache进程没 有访问版本库或者相关文件的权限也没有用,apache进程的权限设置在 /usr/local/apache2/conf/httpd.conf 文件中配置,找到文件中的这两行:
User daemon //将daemon用户改为svn,让apache进程以svn身份运行
Group daemon //将daemon组改为svnrw
# service httpd restart
打开浏览器访问,如果有东西显示就说明成功
测试SVN是否可以正常使用
到svn仓库文件夹里,进入conf目录,这里需要修改3个配置文件.
# vi svnserve.conf
anon-access = read //取消这行前面的#
anon-access = neno //添加这行
auth-access = write //取消这行前面的#
password-db = passwd //取消这行前面的#
authz-db = authz //取消这行前面的#
# vi authz
[groups]
admin = admin // =号前面是组名,后面是用户名,用户名之间用逗号隔开
[my_project:/] // :号前面是svn库的名字
@admin = rw // 给admin组设置读写权限
# vi passwd
[users]
admin = admin // =号前面是用户,后面是用户的密码
启动svn服务
# svnserve -d --listen-port 6000 --listen-host 10.10.1.3 -r /home/svn/
// -d表示在后台运行 --listen-port是监控的端口 --listen-host是svn服务器的IP地址 -r是svn仓库的路径.
在一台windows服务器安装svn客户端,我这里使用的是TortoiseSVN,
鼠标右击选择SVN检出,出现一个对话框,上面的url输
入 svn://10.10.1.3:6000/my_project,下面任意选择一个当前磁盘
路径,然后点击确定,如果没有问题,就不报任何的错误,我们还可以
在检出的文件夹创建一个文件,然后进行提交,看有没有问题,要是没
有问题,就说明svn配置是正常的.