mac下搭建trac

昨天搭建mac花了一天时间,先在mac上搭了 一个,然后去debian搭了一个0.12的,然后发现有很多mac插件都没有0.12版的,又重新搭了一个0.11版的,然后装了几个插件:AccountManager,WebAdmin,CustomField,CCselector

最耗时间的就是开始在我自己机器的mac上搭建的,主要是因为apache的很多目录不熟悉,后来在debian上很简单,熟悉apache,熟悉wsgi,搭起来就很快了。

说下mac下搭trac,mac是自带apache的,在“系统偏好设置” -》 “共享” -》 “web共享”,打开web共享,然后访问127.0.0.1可以看到会访问到自己的sites目录。

只知道这些是不够的,要配置trac肯定要修改apache配置。在debian下,如果是apt-get安装的apache,那么在/etc/apache2/site-enabled/ 可以找到那堆conf的配置文件。在mac配置apache的第一个问题就是先找到配置文件在哪里。

这时候大杀器来了,命令行下使用 httpd -V,显示如下:

fbmac:~ fengbo$ httpd -V
Server version: Apache/2.2.14 (Unix)
Server built:   Feb 10 2010 22:22:39
Server’s Module Magic Number: 20051115:23
Server loaded:  APR 1.3.8, APR-Util 1.3.9
Compiled using: APR 1.3.8, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Prefork
threaded:     no
forked:     yes (variable process count)
Server compiled with….
-D APACHE_MPM_DIR=”server/mpm/prefork”
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_FLOCK_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT=”/usr”
-D SUEXEC_BIN=”/usr/bin/suexec”
-D DEFAULT_PIDLOG=”/private/var/run/httpd.pid”
-D DEFAULT_SCOREBOARD=”logs/apache_runtime_status”
-D DEFAULT_LOCKFILE=”/private/var/run/accept.lock”
-D DEFAULT_ERRORLOG=”logs/error_log”
-D AP_TYPES_CONFIG_FILE=”/private/etc/apache2/mime.types”
-D SERVER_CONFIG_FILE=”/private/etc/apache2/httpd.conf”
fbmac:~ fengbo$

里面有几个信息,参数名称都很清楚的表明了这些参数的意思。最后一个CONFIG_FILE就是apache的配置文件位置了。

接下来准备配置trac吧。

  1. easy_intall Trac==0.11
  2. 我计划让apache跑mod_python来运行trac,在mac的apache默认装的module里没有mod_python,(modules在目录/usr/libexec/apache2/ 下),所以要先安装这个mod_python,我使用的默认python版本是2.5,又装了port,所以这里我用 port install mod_python25 来安装 mod_python.so
  3. 在apache的配置下 LoadModule python_module libexec/apache2/mod_python.so
  4. 在apache下配置mpinfo,重启apache,访问localhost/mpinfo 测试mod_python是否安装成功,配置如下:
    <Location /mpinfo>
        SetHandler mod_python
        PythonInterpreter main_interpreter
        PythonHandler mod_python.testhandler
    </Location>
  5. 使用trac-admin initenv初始化一个项目。这个时候可能会报错,一个Exception类似:LookupError: unknown encoding : X-MAC-XXXX,出现这种情况是因为mac自己用了一套编码的名称系统,例如我的系统是简体中文,那么它使用的可能是X-MAC-SIMPLE-CHN之类的,并不是我们熟悉的GB2312或者GB18030,所以这里就报了一个编码错误。解决方法是强制使用某种指定编码,比如utf8就好了。需要修改代码,在trac的安装目录下的utils/text.py第60行左右,把代码 return unicode(text, charset, ‘replace’) 替换为 return unicode(text, ‘utf-8’),改完之后再执行trac-admin dir initenv的命令就ok了
  6. 为trac配置apache,如下,注意这里面增加的python path,分别为trac包的目录和genshi包的目录(用ease_install装trac的时候会自动安装genshi,trac是依赖于genshi的):
    <Location /trac >
        SetHandler mod_python
        PythonPath "['/YourPythonLibPath/site-packages/Trac-py2.5.egg',
    '/YourPythonLibPath/site-packages/'] + sys.path"
        PythonInterpreter main_interpreter
        PythonHandler trac.web.modpython_frontend
        PythonOption TracEnv /Users/fengbo/sites/trac/hop
        PythonOption TracUriRoot /trac
    </Location>
  7. 为trac配置login的basic 验证(如果后面安装了WebAdmin插件,这里就不需要了,安装WebAdmin插件后,用户就可以直接在页面上注册/登录了,不需要为每个用户再配置basic的用户名密码了),如下:
    <Location /trac/login >
        AuthType Basic
        AuthName "MyTrac"
        AuthUserFile /Users/fengbo/sites/trac/htpasswd
        Require valid-user
    </Location>
  8. 重启apache,访问localhost/trac 应该ok了。

– EOF –

0 comments:

Leave a Reply

Your email address will not be published. Required fields are marked *