UML软件工程组织

 

 

Apache+SVN+Trac搭建项目管理服务器的安装与配置详解
 
2008-04-11 作者:apicescn 来源:csdn
 

1.安装平台

本安装基于Windows vista环境下进行安装与配置的,其它windows版本都可用;搭建此项目管理服务器首先必须要安装Apache服务器.

1.1安装

1.1.1安装Apache

(1)下载Apache

地址http://httpd.apache.org/download.cgi

注意:Apache低于2.0.54的Windows版本的存在编译问题,低于2.0.54的版本不能与Subversion 1.2一起工作。2.2.X目前不能很好支持SVN 1.4.3。所以当前建议下载Apache 2.0.63版本

(2) 安装

下载完成后运行apache_2.0.63-win32-x86-no_ssl.msi ,根据提示进行操作。遇到系统要求输入SERVER的URL时,如果你的服务器没有DNS名称,请直接输入IP地址(此文件也可在安装后进行修改,该文件位于Apache Group/Apache2/conf/httpd.conf文件)。

注意:如果你已经有了IIS或其他监听80段口的程序,安装会失败,如果发生这种情况,直接到程序的安装目录\Apache Group\Apache2\conf,打开httpd.conf。编辑文件的Listen 80为其他可用的端口,例如Listen 8080,然后重新启动-这样就不会那个问题了,或者将其它应用的端口进行改之。

(3)检查

安装完成后浏览 http://localhost/ 若成功,可看到apache欢迎页面。

1.1.2安装Subversion

(1)下载 Subversion

地址:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91

在本实例中,选择下载svn-win32-1.4.6.zip此版本.

(2)安装

将svn-win32-1.4.6.zip解压到安装程序的目录下;(如果下载的是exe安装文件,可以根据指导安装, Subversion会自动认识到你安装了Apache,你就几乎完成了工作),本实例中采用解压方式进行安装,它不会自动找到Apache服务器,所以你还有额外的步骤。

(3)后续

步骤1 从svn-win32-1.4.6\bin 中将mod_authz_svn.so mod_dav_svn.so复制到Apache Group\Apache2\modules下,再将svn-win32-1.4.6\bin目录下的所有dll文件全部复制到Apache Group\Apache2\bin文件夹下。

步骤2 找到Apache Group\Apache2\conf\httpd.conf文件,然后去掉如下几行的注释(删除 '#'标记):

#LoadModule dav_fs_module modules/mod_dav_fs.so

#LoadModule dav_module modules/mod_dav.so

将下面两行添加到LoadModule部分的最后。

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

进行如上后续修改后完成了SVN+Apache之间的WebDav的工作了。重启Apache以后可看到如下图:

这是安装最终的图,图中状态栏显示Apache/2.0.63(Win32) SVN1.4.6 DAV/2是由于还安装了mod_python,此步骤稍后将讲解,如上安装好后应显示为Apache/2.0.63(Win32) SVN1.4.6 DAV.

1.2配置

1.2.1建立版本库

首先建立一个用于存在SVN项目的版本库,本例中在D盘驱动器中建立目录var/svnhome,可通过如下命令建立版本库,当然如果你需要建立多个版本库只需将名称进行换名即可。

首先以cmd命令窗口进入svn-win32-1.4.6\bin目录结构下,输入:

>svnadmin create --fs-type fsfs D:/var/svnhome/projects回车,等待提示创建完成;完成后则进行相关密码以及权限设置。

1.2.2 设置密码文件

以cmd命令窗口进入路径Apache Group\Apache2\ bin目录下,然后输入:

> htpasswd -c D:/var/svnhome/projects/conf/<filename> <username>

本例中filename名称使用passwordfile,username名称使用admin(注意filename无需后缀名),这样便可在var/svnhome/projects/conf目录下创建一个用户名为admin的passwordfile文件,此文件将在后面配置权限所用。

此后添加用户,可使用如下命令:
>htpasswd filename <username>
删除用户,使用如下命令:
>htpasswd -D filename <username>
若对密码不想加密可使用-cp参数,windows平台下默认是MD5加密。

1.2.3 设置权限文件

用文本编辑器在var/svnhome/projects/conf路径下生成名为svnaccessfile的文件,此名称将在Apache Group\Apache2\conf\httpd.conf配置文件中所用,此处不使用扩展名。编辑一下内容:

[groups]

committers = admin

developers = Allen

[/]

* = r

@developers = r

@committers = rw

[projects:/]

@ developers = rw

基本含义是根目录下任何人有读权限,committers组有读写权限;admin对projects读写权限,而developers组只有读的权限。

备注: 如果有中文路径,那要把文件存成UTF8格式,不建议使用中文路径,这在编程当中是严格禁止的.

1.2.4 配置服务

编辑Apache Group\Apache2\conf\httpd.conf文件,添加下面代码。

<Location /svn>

DAV svn

SVNPath "D:/var/svnhome/projects"

AuthType Basic

AuthName "Subversion repositories"

AuthUserFile " D:/var/svnhome/projects/conf/passwordflie"

AuthzSVNAccessFile "D:/var/svnhome/projects/conf/svnaccessfile"

Require valid-user

SVNAutoversioning on

ModMimeUsePathInfo on

</Location>

备注: 如果使用<Location /svn/>可列出D:/var/svnhome/projects 下的版本库,若为<Location /svn>则不能访问http://127.0.0.1/svn下的项目,而只能这样访问,如http://127.0.0.1/svn/<projectname>

配置内容说明

设置

解释

<Location>

意思是Subversion版本库的URLhttp://ipaddress/svn/

DAV svn

告诉Apache是哪个模块响应那个URL的请求-此刻是Subversion模块。

SVNPath

告诉Subversion需要查看的版本库位于D:/var/svnhome/projects之下

AuthType Basic

激活基本认证,就是用户名/密码

AuthName

用来说明弹出要求输入认证信息的对话框信息,可以使用中文.

AuthUserFile

指定使用认证密码的文件

AuthzSVNAccessFile

位置Subversion版本库的访问控制权限的路径文件

Require valid-user

指定只有输入了正确的用户/密码的用户可以访问URL

另外如果当此时通过访问http://127.0.0.1/svn提示403 Forbidden错误的信息的话,主要是由于svnserve.conf此文件中的[general]内容password-db = passwordfile内容加入(或者将原来的#去掉,同时将passwd修改你所创建的密码文件,本例中为passwordfile),也可以实现根目录的访问了!

1.25 安装TortoiseSVN(可选)

此工具是客户端软件,主要可以用于从服务器上check版本库项目以及updata与commit等相关SVN的管理操作,其下载地址为:http://tortoisesvn.net/downloads,另外还可以下一个语言包,都在给其的subversion官方网站上能下到.

1.3 Trac的安装

Trac是一个轻量级的项目管理工具,是一个基于web的应用程序。Trac是用Python语言开发的,需要数据库( SQLite, PostgreSQL, MySQL 等).的支持才能运行。对于HTML渲染,在Trac 0.11版本之前用的是ClearSilver,以后推荐用的是Genshi.

在Trac的官网上有有一篇安装指南,针对Trac0.11版本的。上面可以看到这时0.11的正式版还没有发布,我安装的是0.11dev版的。其在线安装方法地址为:http://trac.edgewall.org/wiki/TracInstall#TracInstallationGuidefor0.11

1.3.1安装前必备的软件(注意软件的版本及安装的顺序):

其中有很多软件是可以下到zip包的,但不建议下载包形式文件,因为解压python后有可能不能用,所以建议使用exe安装版的来自动完成识别操作。

1.安装Python,下载:python-2.5msi,进行默认安装。

2.安装Genshi模板系统,属于页面表示层,下载Genshi-0.4.4.win32.exe,安装时会识别Python安装目录。

3.安装Subversion Python Bindings :svn-python-1.4.6.win32-py2.5.exe,安装时会识别Python安装目录。

4.安装PySQLite, 下载pysqlite-2.4.1.win32-py2.5.exe,安装时会识别Python安装目录。PySQLite是SQLite和Python 绑定的轻量级数据库引擎,它是Trac默认的数据库。

1.3.2 安装Trac(0.11dev)

在安装Trac之前,首先要安装setuptools ,安装步骤如下:在主页中将ez_setup.py的文件右击另存给下载下来(如保存到D:\python下面),以CMD命令窗口方式进入python该目录执行python ez_setup.py即可安装和python版本对应的setuptools了.

注意:ez_setup.py文件最好放在安装python的根目录下,这样进入该目录以后就可以直接执行>python ez_setup.py命令即可完成setuptools的安装了.

利用TortoiseSVN工具checked出Trac版本库,然后通过命令进行安装;其SVN checkout地址为:http://svn.edgewall.org/repos/trac/trunk,本例中将此内容check于D:/trac目录中,然后使用cmd命令窗口进入到下载的trac根目录下输入:

>D:\python\python setup.py install (如果trac与python放在同一目录下或者将python增加到path环境变量中,可直接写成python setup.py install)等待安装完成。

注意:此处不建议在官方网站上下载0.11beta1版,而建议使用上述checked的版本,因为0.11beta1版本安装后可能在创建一个Trac Environment时出现异常现象,所以建议大家使用0.11dev版。

1.3.3 配置Trac环境.

完成上述的安装后,就可以创建一个TracEnvironment,它是Trac存储信息的地方,如 wiki pages, tickets, reports, settings, 等。

1. 通过trac-admin创建一个Trac Environment

在本例中首先在D盘的var目录下新建一个trachome目录,然后以CMD命令窗口方式进入D: \python\Scripts目录下输入:>trac-admin D:/var/trachome/projects initenv,然后根据提示输入项目的名字(本例中为projects),然后提示询问数据库连接字符串类型,本例中使用的是sqlite,故采用默认就可以了。直接回车接下来是的是:

Please specify the type of version control system,
By default, it will be svn.

If you don't want to use Trac with version control integration,
choose the default here and don't specify a repository directory.
in the next question.

Repository type [svn]>
询问版本库类型,也是默认SVN,直接回车.

Please specify the absolute path to the version control
repository, or leave it blank to use Trac without a repository.
You can also set the repository location later.

Path to repository [/path/to/repos]> D:/var/svnhome/projects

询问源码库位置,这个就是本例中刚才SVN里建立了这个项目的源码库,输入即可。回车

注意:此处一定要填写正确否则是没法将SVN的版本库与Trac进行联系起来。不过在这里填写错误后还是可以通过配置文件进行修改的。在本例中此配置文件位于: D:\ var\trachome\projects\conf下的trac.ini与trac.ini.sample两个文件,只需将其中srepository_dir值修改成:D:/ var/svnhome/projects即可。

Please enter location of Trac page templates.
Default is the location of the site-wide templates installed with Trac.

Templates directory [D:\Python25\share\trac\templates]>
询问模板路径,这个默认。回车

接下来就是自动生成一系列模板,最后显示Congratulations!完成操作。

然后以cmd命令窗口方式进入D:\ python\Scripts文件夹下输入:

>tracd -p 8080 D:/var/trachome/projects

当看到 Serving on 0.0.0.0:8080 view at http://127.0.0.1:8080/ 时,就表示服务器启动成功了,可以打开浏览器就可以看到svn版本库中的项目资源了,到此实现了Trac与SVN的集成,但还未完成与Apache的集成,下面就带领大家完成这一最后的过程。

1.4 Apache+Trac+SVN集成

上面的配置是运行在一个独立的服务器上,只能运行一个项目,一般只用于自己单机访问。考虑到我们前面安装的SVN是运行在Apache服务器上,所以我们最好也让Trac运行在Apache服务器上,便于网上共享;而且和Apache集成有很多优点,比如充分利用apache的强大功能以及ModPython的高效率,便于管理与控制,很方便支持ssl等等。在官方网站上提供的安装指南上面提供了三种方法CGI, FastCGI and mod_python.为了提高性能,推荐使用后面两种,本例中安装时采用第三种也就是mod_python方法。

1、在http://www.modpython.org/ 页面下载相应的安装程序,注意版本对应。我下载的是mod_python-3.3.1.win32-py2.5-Apache2.0.exe,然后安装,安装过程中会要求选择apache的安装目录,并且会自动把mod_python.so复制到modules目录;完成后还要进行配置,类似于SVN和Apache的集成,可参见官方网站的在线文档,下面就具体但要在本例中的配置做法。

2、配置Apache

  • 配置ModPython
    在Apache Group\Apache2\conf目录下httpd.conf文件中的LoadModule部分最后加入下面一行:
    LoadModule python_module modules/mod_python.so
  • 配置trac服务
    在Apache Group\Apache2\conf目录下httpd.conf文件中的最后加入下面内容:
    # TRAC
    Alias /trac "D:/ trac/cgi-bin/trac.cgi"
    <Location "/trac/projects">
    SetHandler mod_python
    PythonInterpreter main_interpreter
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnv D:/software_tools/var/trachome/projects
    PythonOption TracUriRoot /trac/projects
    </Location>
    然后就通过http://127.0.0.1/trac/projects来访问,点击导航栏上的“Browse Source ”就可以看到svn库中项目资源。

3、配置用户身份的验证

Trac可以使用Apache的身份验证。

  • 创建密码文件,如为projects创建密码文件,Allen为用户名:
    以cmd命令窗口方式进入到Apache Group\Apache2\bin文件夹下输入:
    >htpasswd -c D:/var/trachome/projects/conf/trac.passwd Allen
    New password: **** #提示输入密码
    Re-type new password: **** #再输入一次
    Adding password for user Allen #成功
  • 配置身份验证 #设置Allen的Trac用户验证
    <Location "/trac/projects/login">
    AuthType Basic
    AuthName "Projects"
    AuthUserFile D:/software_tools/var/trachome/projects/conf/trac.passwd
    Require valid-user
    </Location>
  • 完成后重启Apache服务器,然后浏览http://127.0.0.1/trac/projects ,点击Login,将看到如下效果图:

4、Trac的授权设置

在Trac 0.11以前的版本需要安装WebAdmin插件才能以web的方式管理用户及授权,以后的版本就不在需要了,已经集成了。前面创建的Apache的身份验证,都不具有TRAC_ADMIN权限,下面我们重新创建一个admin用户,然后授予TRAC_ADMIN权限:

#在原来的密码文件中新增一个admin用户

以cmd命令窗口方式进入到Apache Group\Apache2\bin文件夹下输入:

>htpasswd -m D:/software_tools/var/trachome/projects/conf/trac.passwd admin

New password: *****
Re-type new password: *****
Adding password for user admin

然后为admin用户授权TRAC_ADMIN

以cmd命令窗口方式进入到python\Scripts目录下输入命令:

>trac-admin D:/software_tools/var/trachome/projects permission add admin TRAC_ADMIN

重新启动Apache服务器完成后再以admin帐号Login,在导航栏的search的最后面就会看到Admin,点击进入可以看到如下效果图:

进行如下授权设置以后,对于Browse Source里面的内容的所有人依然可见,这在权限中是禁止的,所以可以通过将两者配置合并一下,即可达到需要输入用户名和密码的效果,合并后的配置文件内容应为:

# TRAC

Alias /trac "D:/ trac/cgi-bin/trac.cgi"

<Location "/trac/projects">

SetHandler mod_python

PythonInterpreter main_interpreter

PythonHandler trac.web.modpython_frontend

PythonOption TracEnv D:/software_tools/var/trachome/projects

PythonOption TracUriRoot /trac/projects

AuthType Basic

AuthName "Projects"

AuthUserFile D:/software_tools/var/trachome/projects/conf/trac.passwd

Require valid-user

</Location>

另外还可以通过var\trachome\projects\conf目录下的trac.ini文件进行版本库的权限控制,将trac.ini中的[trac]项authz_file值修改成与SVN版本控制权限一致。本例中为:

[trac]

authz_file = D:/ var/svnhome/projects/conf/ svnaccessfile

此时在没有登陆的情况下Browse Source项的内容是无法查看的,提示用户Insufficient permissions to access权限不够,此方法同样也实现了权限的控制。

至此,Apache+SVN+Trac的集成到此完毕了

备注:如果启动时出现错误的话,可将将svn-win32-1.4.6\bin目录下的所有dll文件全部复制到Apache Group\Apache2\ cgi-bin目录下,另将下载下来的D:\trac\目录下的cgi-bin文件夹内容复制到Apache Group\Apache2\ cgi-bin目录下.

本实例课程详解到此结束,在接下来的工作后期将会推出关于如何与Eclipse中进行协同工作开发的课程!

 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号