[讨论] ubuntu8.04+apache+svn+trac

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
panyue0411
帖子: 5
注册时间: 2008-05-12 10:47

[讨论] ubuntu8.04+apache+svn+trac

#1

帖子 panyue0411 » 2008-05-12 17:28

:D 这是我apache+svn+trac搭建的过程,在这之前apache服务已经做好!

1.安装svn:
$ sudo apt-get install subversion
$ sudo apt-get install libapache2-svn //这个是安装apache部分,如果不使用http协议可以不必装这个.

2.配置svn服务器端:
首先,创建subversion用户组,并且将www-data和您自己这两个用户加入该组.(这可以通过在Ubuntu 菜单上选择“系统->系统管理->用户和组”操作).
其次,创建svn的根位置,
$ sudo mkdir /svn
$ cd /svn
然后,开始一个新的知识库,
$ sudo mkdir /svn/repository
$ sudo chown -R root:subversion repository //这里要给www-data添加权限,因为我们后面要用apache
$ sudo chmod -R g+rws repository //这个是为了赋予组成员对所有新加入文件仓库的文件拥有相应的权限
$ sudo svnadmin create /svn/repository //开始一个新的知识库
最后,设置用户验证,
$ sudo vim /svn/repository/conf/svnserve.conf //将# [general]和# password-db = passwd的注释取消掉,这表示使用同级目录下的passwd文件做为密码数据库.
$ sudo vim /svn/repository/conf/passwd //添加admin用户及密码.

3.使用svn客户端:
这里只介绍两种方式,假设工作目录位于/home/cyndi/work/下.
$ svn co file:///svn/repository //这是当客户端与服务器端在同台机器上时,这么访问.
$ svn co svn://192.168.0.240/svn/repository –username admin
另外,为了使客户端访问知识库时简化目录,可以在服务器端启用daemon,
$ svnserve -d –foreground -r /svn
这样客户端的访问可以简化为,
$ svn co svn://192.168.0.240/repository –username admin

详细的svn安装及设置可参考:http://wiki.ubuntu.org.cn/SubVersion

4.安装trac并设置,与svn相仿:
$ sudo apt-get install trac
$ sudo trac-admin /home/trac initenv //除了项目名称(myproject)和svn仓库路径(/svn/repository)以外,其余可使用默认.
$ sudo chown -R root:www-data trac //使用www-data:www-data
$ sudo chmod -R g+rsw trac

5.设置用户权限:
首先,创建用户,第二参数指定用户文件存放的位置,第三个参数指定连接的域,第四个为用户名,
$ htdigest -c /home/trac/passwd.digest trac.palmsource.com www-data
其次,为passwd.digest文件中创建的用户绑定trac系统的权限,
$ trac-admin /home/trac/ permission add admin TICKET_ADMIN //为admin这个用户/组加上指定权限,关于更多权限设置可以参看:http://trac.edgewall.org/wiki /TracPermissions
$ trac-admin /home/trac/ permission add www-data admin //为www-data这个用户绑定与admin一样的权限
其次,启动daemon监听指定端口用于处理web请求,
$ tracd -p 8000 –auth myproject,/home/trac/passwd.digest,trac.palmsource.com /home/trac/

6.Apache设置

add following conf at the end of apache2.conf:

<Directory "/usr/share/trac/htdocs/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Location /trac>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /home/trac/testproject
PythonOption TracUriRoot /trac
</Location>


<Location "/trac/login">
AuthType Basic
AuthName "Trac"
AuthUserFile /etc/apache2/trac.passwd //用htdigest生成密码文件,trac,apache,svn可以共享一个密码文件
Require valid-user
</Location>



最后mobicom@ubuntu-desktop:~$ sudo /etc/init.d/apache2 restart
* Restarting web server apache2
* We failed to correctly shutdown apache, so we're now killing all running apache processes. This is almost certainly suboptimal, so please make sure your system is working as you'd expect now!
[Mon May 12 16:33:55 2008] [warn] module authz_svn_module is already loaded, skipping
Syntax error on line 309 of /etc/apache2/apache2.conf:
Invalid command 'PythonHandler', perhaps misspelled or defined by a module not included in the server configuration


apache2.conf的

<Location /trac>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /home/trac/testproject
PythonOption TracUriRoot /trac
</Location>


有问题, 不知道如何改!!
panyue0411
帖子: 5
注册时间: 2008-05-12 10:47

#2

帖子 panyue0411 » 2008-05-12 18:23

自己顶一下!!!! 大家一起来讨论,学习!!
头像
lhw828
帖子: 2797
注册时间: 2007-03-15 16:58
来自: 湖北武汉
联系:

#3

帖子 lhw828 » 2008-05-16 22:57

好贴,顶置!
panyue0411
帖子: 5
注册时间: 2008-05-12 10:47

我新做的ubuntu+apache+svn+trac, 有问题,大家讨论!!

#4

帖子 panyue0411 » 2008-05-23 19:05

一 ubuntu下svn+apache

总体来说,架设一个版本服务器要做以下工作:

1. 安装ubuntu系统
2. 安装apache
3. 安装subversion
4. 创建版本库
5. 添加用户并设置用户权限

至此,服务器方面的工作基本完成。当客户端是windows系统时,安装工作显得很简单,一般使用TortoiseSVN作为客户端,网上也可以找到相应的教程!

以下,分步骤介绍svn服务器的架设过程。



1,安装ubuntu:去ubuntu官方网站下载相应的版本,一般有desktop和server两 种,同时ubuntu又有几种不同的衍生版本,各有特色!推荐使用ubuntu的desktop版本,图形化的界面,省去初学者的很多烦恼!安装方法和普 通的安装windows的方式差不多!

在进行下面的操作之前,需要说明一下,ubuntu的用户分为管理员(Root)和普通用户(一般是用户安装系统时创建的)。管理员(Root)的密码默 认是随机数。普通用户对系统文件没有修改的权力,只能浏览,这是出于安全考虑的,但是我们下面的过程需要对其中一些文件进行修改,所有,需要切换到 root用户下来完成下面的工作。

打开application/Accessories/Terminal,进入终端界面,注意,如果你是root用户,那么终端里面你看到的提示符为#;如果是普通用户,则为$。

一般为bb@bb-desktop:$ (普通用户)

root@bb-desktop:#(管理员用户)

希望能够以管理员登陆,需要做以下工作:

(1)设置管理员密码,方法如下

$sudo passwd (回车)

passwd: (输入密码,放心只管输,你看不到的)

re-passwd: (再输一边,还是看不到,但是两遍输入相同则设置成功)

(2)允许以管理员身份登陆。ubuntu默认是不允许以管理员身份登陆的,所以需要做以下设置

打开system/Administrator/login Window

在Security一栏里面,选择 Allow local system administrator login

然后关闭!

这样,我们就可以以root名称来登陆,执行只有管理员才可以执行的操作!

2,安装apache: (sudo apt-get install apache2)

在ubuntu的新得立安装包内,随便点中一个,输入apache就可以定位apache2程序,标记为安装,同时选中这几个软件包apache2-common, apache2-utils, apache2-doc(apache文档,推荐安装)

安装完成后可以测试一下apache是否运行正常,记住这条命令,会经常用到:

sudo /etc/init.d/apache2 restart (重启apache服务器)

linux@linux-desktop:~$ sudo /etc/init.d/apache2 restart
* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[ OK ]
linux@linux-desktop:~$
这是一个 warning,出现在apache2启动或重起时。主要是因为在配置 apache2 时,没有指定相应的主机名,即 ServerName。修改 /etc/apache2/httpd.conf , 在最前加入 ServerName localhost:80 即可


3. 安装subversion (sudo apt-get install subversion)
(sudo apt-get install libapache2-svn)
同样在新得立安装管理工具里面选择subversion,libapache2-svn两个包。

4.创建版本库

版本库有两种数据存储格式:Berkeley DB和FSFS

推荐选用FSFS格式,具体可以查阅参考资料了解二者的区别。

创建版本库时,在终端运行如下命令:

4.1当你还没有一个目录时,可以用下面的方法先创建你需要的目录路径:
$ mkdir /svn/ 创建目录,实际上就在相应位置生成了两个文件夹,可以到Filesystem里面查看
$ mkdir /svn/repos 创建版本库的文件夹,到这里,它还只是个文件夹,但是它有版本库的名字
# 运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb
$ svnadmin create --fs-type fsfs /svn/repos 创建版本库,运行这个命令后,我们就可以看到一个版本库应有的文件

4.2当你的目录已经存在时

cd /svn/ 进入该目录

mkdir /repos 创建版本库文件夹

svnadmin create --fs-type fsfs /svn/repos 创建版本库



至此,我们已经讲版本库创建完毕

更改版本库的访问权限
$ cd /svn
$ sudo chown -R www-data repos
$ sudo chgrp -R subversion repos
$ sudo chmod -R g+rws repos 这条命令允许用户对版本库进行读写操作,即可以更新,可以提交

5. 添加用户并设置权限

这里是架设服务器最复杂的地方,笔者试图把这里搞清楚,可惜,还是有些疑问!??好在服务器还能运转!

首先说,通过http协议传输数据时,用户是通过apache来操做svn版本库的,subversion是通过一些模块和apache进行通讯的。具体原理,有兴趣的朋友可以google相关资料。设置用户访问权限,有这么几个工作要做:

(1)版本库的密码文件,一般命名为PasswdFile,由用户通过命令创建,里面保存授权用户的用户名和MD5加密后的密码

(2)apache的httpd.conf文件,我理解这个文件是连接用户、apache、subversion的桥梁

这里只总结一下具体操作方法:

5.1 创建密码文件,密码文件保存在你的版本库文件目录下,在终端通过下面的命令创建密码文件

htpasswd -c /svn/passwdfile username

解释: /svn/ 版本库的目录,建议采用完整路径,也就是你从filesystem一路找到你的版本库的所有文件夹

passwdfile 密码文件名称,可以由用户自行命名

username 你希望添加的用户名,比如zhangsan,lisi,wangwu

-c 用来创建密码文件,这个命令在密码文件不存在的情况下可以创建一个文件,可以看到的哦!然后再添加其他

用户时可以去掉这个命令字。

回车执行本命令,会要求你输入密码,一共需要输入两便,添加成功后会提示add user username,然后可以再继续添加

第二个用户。

htpasswd /svn/passwdfile seconduser

反复执行此程序,将自己需要添加的用户添加进去!如果以后有需要还要添加别的用户,也可以单独执行上边的这条命令来

添加。

文件创建完成后,你可以去目录下看一看是否有这么一个文件存在!实际上,应该是存在的,不存在的话就是操作没有成功啊!



5.2 配置httpd.conf文件

文件位置,正常安装的话在etc/apache2/ 目录下,双击打开进行编辑,添加如下内容

#LoadModule dav_module modules/mod_dav.so 加载mod_dav模块
#LoadModule dav_svn_module modules/mod_dav_svn.so 加载mod_dav_svn模块
#LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so 加载mod_anthz.svn模块
<Location /repository> location标签头
DAV svn
SVNPath /svn/repos/ 指明版本库的路径
AuthType Basic 认证类型为基本认证
AuthName "SVN repos" 认证名称,将在IE界面弹出一个对话框,其标题就是SVN repos
AuthUserFile /svn/ PasswdFile 加载密码文件
AuthzSVNAccessFile /svn/accesspolicy
# satisfy Any
Require valid-user 要求验证用户,即不能匿名访问
</Location> location标签尾

加#号的语句被注释掉了!如果有两个以上的版本库,可以针对每个版本库添加不同的location标签,两个互不影响。

配置完成后,重启apache,在IE里输入:http://localhost/repository(即版本库名称),可以看到如下对话框

目前为止,我仅仅配置了几个最基本的apache+svn服务器!

以下内容需要进一步熟悉:

(1) SSL加密方式:提高数据传输的安全性

(2)同一个父目录下多个版本库的配置方式,如下:

/svnrepos/

/Project1/

/trunks

/branches

/tags

/Project2/

/trunks

/branches

/tags

(3)对用户权限进行细致管理的配置方式

(4)用户可以自行通过客户端建立版本库,进行全权管理

二 ubuntu下 +trac (前提 一 OK)

1.安装 trac
$ sudo apt-get install trac

$ sudo mkdir /trac
$ sudo mkdir /trac/repos
$ sudo svnadmin create repos

$ sudo trac-admin repos initenv
Creating a new Trac environment at /trac/repos

Trac will first ask a few questions about your environment
in order to initalize and prepare the project database.

Please enter the name of your project.
This name will be used in page titles and descriptions.

Project Name [My Project]> repos

Please specify the absolute path to the project Subversion repository.
Repository must be local, and trac-admin requires read+write
permission to initialize the Trac database.

Path to repository [/var/svn/test]> /svn/repos

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

Templates directory [/usr/share/trac/templates]>
Creating and Initializing Project
Inserting default data
Configuring Project
trac.repository_dir
trac.templates_dir
project.name
Installing wiki pages
/usr/share/trac/wiki-default/TracImport => TracImport
/usr/share/trac/wiki-default/TracRss => TracRss
/usr/share/trac/wiki-default/TracMultipleProjects => TracMultipleProjects
/usr/share/trac/wiki-default/TracBackup => TracBackup
/usr/share/trac/wiki-default/TracTimeline => TracTimeline
/usr/share/trac/wiki-default/TracTickets => TracTickets
/usr/share/trac/wiki-default/TracInstall => TracInstall
/usr/share/trac/wiki-default/WikiRestructuredText => WikiRestructuredText
/usr/share/trac/wiki-default/WikiPageNames => WikiPageNames
/usr/share/trac/wiki-default/TracSyntaxColoring => TracSyntaxColoring
/usr/share/trac/wiki-default/TracPermissions => TracPermissions
/usr/share/trac/wiki-default/TracSupport => TracSupport
/usr/share/trac/wiki-default/WikiHtml => WikiHtml
/usr/share/trac/wiki-default/TracModPython => TracModPython
/usr/share/trac/wiki-default/WikiFormatting => WikiFormatting
/usr/share/trac/wiki-default/TracBrowser => TracBrowser
/usr/share/trac/wiki-default/TracTicketsCustomFields => TracTicketsCustomFields
/usr/share/trac/wiki-default/TracNotification => TracNotification
/usr/share/trac/wiki-default/TracUnicode => TracUnicode
/usr/share/trac/wiki-default/TracAccessibility => TracAccessibility
/usr/share/trac/wiki-default/TracInstallPlatforms => TracInstallPlatforms
/usr/share/trac/wiki-default/TracReports => TracReports
/usr/share/trac/wiki-default/TracEnvironment => TracEnvironment
/usr/share/trac/wiki-default/WikiMacros => WikiMacros
/usr/share/trac/wiki-default/CamelCase => CamelCase
/usr/share/trac/wiki-default/WikiProcessors => WikiProcessors
/usr/share/trac/wiki-default/TracSearch => TracSearch
/usr/share/trac/wiki-default/TracQuery => TracQuery
/usr/share/trac/wiki-default/WikiStart => WikiStart
/usr/share/trac/wiki-default/TracLogging => TracLogging
/usr/share/trac/wiki-default/SandBox => SandBox
/usr/share/trac/wiki-default/WikiRestructuredTextLinks => WikiRestructuredTextLinks
/usr/share/trac/wiki-default/TracLinks => TracLinks
/usr/share/trac/wiki-default/TracRoadmap => TracRoadmap
/usr/share/trac/wiki-default/TracStandalone => TracStandalone
/usr/share/trac/wiki-default/TracUpgrade => TracUpgrade
/usr/share/trac/wiki-default/RecentChanges => RecentChanges
/usr/share/trac/wiki-default/TracAdmin => TracAdmin
/usr/share/trac/wiki-default/TracGuide => TracGuide
/usr/share/trac/wiki-default/TracChangeset => TracChangeset
/usr/share/trac/wiki-default/TitleIndex => TitleIndex
/usr/share/trac/wiki-default/WikiNewPage => WikiNewPage
/usr/share/trac/wiki-default/TracWiki => TracWiki
Indexing repository
---------------------------------------------------------------------

Project database for 'repos' created.

Customize settings for your project using the command:

trac-admin /path/to/MhzProjects/MhzTrac

Don't forget, you also need to copy (or symlink) "trac/cgi-bin/trac.cgi"
to you web server's /cgi-bin/ directory, and then configure the server.

If you're using Apache, this config example snippet might be helpful:

Alias /trac "/wherever/you/installed/trac/htdocs/"
<Location "/cgi-bin/trac.cgi">
SetEnv TRAC_ENV "path/to/Work/MhzProjects/MhzTrac"
</Location>

# You need something like this to authenticate users
<Location "/cgi-bin/trac.cgi/login">
AuthType Basic
AuthName "MhzStuff"
AuthUserFile /somewhere/trac.htpasswd
Require valid-user
</Location>

The latest documentation can also always be found on the project website:
http://projects.edgewall.com/trac/

Congratulations!

$

2 配置 apache+trac+svn
让我们看一下trac建了什么文件
$ ls –l /trac/repos
total 32K
drwxr-xr-x 2 mhz rojo 4.0K 2006-01-04 15:58 attachments
drwxr-xr-x 2 mhz rojo 4.0K 2006-01-04 15:58 conf
drwxr-xr-x 2 mhz rojo 4.0K 2006-01-04 15:58 db
drwxr-xr-x 2 mhz rojo 4.0K 2006-01-04 15:58 log
-rw-r--r-- 1 mhz rojo 94 2006-01-04 15:58 README
drwxr-xr-x 2 mhz rojo 4.0K 2006-01-04 15:58 templates
-rw-r--r-- 1 mhz rojo 27 2006-01-04 15:58 VERSION
drwxr-xr-x 2 mhz rojo 4.0K 2006-01-04 15:58 wiki-macros

改一下 apache2.conf
$ sudo vi /etc/apache2/apache2.comf
在文件最后加以下代码
Alias /trac "/usr/share/trac/htdocs"
<Location "/cgi-bin/trac.cgi">
SetEnv TRAC_ENV "path/to/MhzProjects/MhzTrac"
</Location>
重启apache
$ sudo /etc/init.d/apache2 restart
启动trac 监听
$ sudo tracd –8000 /trac/repso/
Open your browser and visit http://localhost:8000
There is a mistake in this configuration
The configuration of apache2 as in the example above implies that you want to run trac via the cgi script; rather than with tracd. tracd is a substitute for apache. If you attempt to run tracd after starting apache2, you might receive : "socket.error: (98, 'Address already in use')" Will someone who is more familiar please verify this, and correct these instructions.



改一下 apache2.conf
在文件最后加以下代码
# You need something like this to authenticate users
<Location "/cgi-bin/trac.cgi/login">
AuthType Basic
AuthName "MhzStuff"
AuthUserFile /trac/trac.htpasswd
Require valid-user
</Location>
加用户
$ sudo htpasswd –c /trac/trac.htpasswd user1

重启apache
$ sudo /etc/init.d/apache2 restart

Open your browser and visit http://localhost:8000
回复