第一次架设trac(win+apache2+mod_wsgi)

算是装好了,折腾了5个小时。回头想把过程写下备忘,发现头绪好乱,唉,ms的vs用多是不是人会变傻?

trac的介绍请去:http://trac.edgewall.org/

安装前的准备
1,apache,这个简单,不多说;我装的2.2。
2,python,这个也不复杂,虽然下载可能需要翻墙。我装的2.6.4,很久以前装的,这次没更换也没装新的其他版本。
3,mod_wsgi,工程站的地址是http://code.google.com/p/modwsgi/,可以直接下载编译过的so文件,注意版本,我下载的是mod_wsgi-win32-ap22py26-3.0.so,然后拷贝到apache的modules目录下,或者其他什么目录无所谓,在loadModule时保持对应能找到就行。之后,打开apache的httpd.conf,添加:
loadModule wsgi_module modules/mod_wsgi.so

安装trac
我下载的是0.11.7的版本,据说后续版本0.12要好点,但还是dev版。
trac官网为win提供了两种下载,一个是installer的exe,傻瓜型安装;另一是zip包,需要手工安装。我两样都下载了,先安装了一遍installer,装完了之后...就像白糖掉到了水里,基本没动静,我出于好奇,又下了个zip包手工装了一遍。
基本上也不麻烦,大体照着trac的文档来就行。
解压trac的文件包之后运行:python setup.py install,提示:“No module named setuptools”,因为之前看了点资料,需要安装easy_install。所以就直接去下载了个ez_setup.py(地址:http://peak.telecommunity.com/dist/ez_setup.py)然后python ez_setup.py运行之,安装好了easy_install之后,再次运行:
python setup.py install
这次就OK了。

现在trac安装好了,该创建一个工程了。
(如果需要让trac和svn配合工作,此时就要安装好svn了,0.11版本的trac无法在事后再配置svn相关的参数。)
创建一个工程需要分两个步骤。
1,先建立工程的配置环境。使用trac-admin命令(位于python安装目录的Scripts文件夹):
trac-admin x:/path/to/prj initenv
之后会询问工程名称、数据库、以及svn的repository的路径,如果路径没有问题,应该会提示你“Congratulations!”,即表示完成了。
2,生成工程的web站点所需的htdocs和cgi/wsgi等脚本等文件。这步要先要在x:/path/to/prj之外的目录建一个临时文件夹,假设是x:/tmp,然后运行:
trac-admin x:/path/to/prj deploy x:/tmp/prj
注意deploy后的目标文件夹,这个文件夹必须是一个不存在的文件夹,否则会得到“Destination already exists”的提示(这也是为什么需要额外建临时文件夹的原因,否则会提示x:/path/to/prj已存在),运行完成将x:/tmp/prj下的文件拷贝至x:/path/to/prj,至此工程创建完毕。

将工程目录挂接到apache。
挂接至apache这里需要两个步骤:
1,用apache所带的htpasswd工具创建一个“密码本”,用于trac工程站的用户验证。
$ htpasswd -c /somewhere/trac.htpasswd admin
New password: <type password>
Re-type new password: <type password again>
Adding password for user admin
还可以继续创建其他用户,创建第二个用户时不再需要-c参数。
2,配置工程站的路径和用户验证。再次打开apache的httpd.conf,如有必要则将DocumentRoot进行修改,然后添加wsgi脚本的路径处理:
WSGIScriptAlias / x:/path/to/prj/cgi-bin/trac.wsgi
这样apache的根目录就成了刚配置好的工程站点。然后为cgi-bin目录添加属性:
<Directory x:/path/to/prj/cgi-bin>
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
</Directory>
最后将用户验证配置添加进去:
<LocationMatch "/login">
  AuthType Basic
  AuthName "Trac"
  AuthUserFile /somewhere/trac.passwd
  Require valid-user
</LocationMatch>
现在,重新启动apache,打开首页,应该就是trac的工程主页了,但... 还不是,是华丽的Internal Server Error三个大字。

小问题修正。
打开apache的日志(apache的logs目录下error.log),发现这个Internal server error实际上是说是一个叫.egg-cache的目录不能创建,这个目录是python的egg cache目录,不能创建的原因可能有几个,例如写入权限,例如路径里的斜线!因为是win平台,如果不手工干预,路经里的斜线都是“”。我的解决办法就是打开cgi-bin里的trac.wsgi,在application方法第一行加上:
environ['PYTHON_EGG_CACHE'] = "x:/path/to/prj/.egg-cache"
如果还发现其他行有x:path oprj,也顺手改成x:/path/to/prj。

至此工程站应该能顺利访问并登录了,但登录后用户没有管理权限,需要再用trac-admin命令将名为TRAC_ADMIN的权限赋予之前创建的用户,例如admin。
trac-admin x:/path/to/prj permission add admin TRAC_ADMIN

评论(1)

评论

  1. Hi! I have been maddening to compile this, but all i got is 3 errors everytime when i crack at it. Could someone help me with theese? http://geilabel.com/chat/index.php?action=profile;u=68951

发表评论

*必填

*必填 (不会被公开)