将 Trac 安装为 CGI
请注意,通过 CGI 使用 Trac 是最慢的部署方法。它比 mod_wsgi、mod_python、FastCGI 甚至 Windows 上的 IIS/AJP 还要慢。
CGI 脚本是 Web 服务器在接收到应用程序的 Web 请求时调用的入口点。可以使用 `trac-admin <env> deploy <dir>` 命令创建 `trac.cgi` 脚本,该命令会自动替换所需的路径,详见 TracInstall#cgi-bin。请确保您的 Web 服务器可以执行该脚本。
Apache Web 服务器配置
在 Apache 中,有两种方式运行 Trac 作为 CGI:
- 使用 `ScriptAlias` 指令将 URL 映射到 `trac.cgi` 脚本(推荐)
- 将 `trac.cgi` 文件复制到 Web 服务器使用的 CGI 可执行文件目录中(通常命名为 `cgi-bin`)。您也可以创建符号链接,但在这种情况下,请确保为 `cgi-bin` 目录启用了 `FollowSymLinks` 选项。
要在 `http://yourhost.example.org/trac` 使 Trac 可用,请将 `ScriptAlias` 指令添加到 Apache 配置文件中,并更改 `trac.cgi` 路径以匹配您的安装。
ScriptAlias /trac /path/to/www/trac/cgi-bin/trac.cgi
请注意,此指令要求启用 `mod_alias` 模块。
如果您使用 Trac 仅处理单个项目,则需要使用 `TRAC_ENV` 环境变量设置其位置。
<Location "/trac"> SetEnv TRAC_ENV "/path/to/projectenv" </Location>
或者,要使用多个项目,您可以使用 `TRAC_ENV_PARENT_DIR` 变量指定它们的共同父目录。
<Location "/trac"> SetEnv TRAC_ENV_PARENT_DIR "/path/to/project/parent/dir" </Location>
请注意,`SetEnv` 指令要求启用 `mod_env` 模块。
`SetEnv` 的替代方法是编辑 `trac.cgi` 中的 `TRAC_ENV` 或 `TRAC_ENV_PARENT_DIR`。
os.environ['TRAC_ENV'] = "/path/to/projectenv"
os.environ['TRAC_ENV_PARENT_DIR'] = "/path/to/parent/dir"
如果您正在使用 Apache suEXEC 功能,请参阅 ApacheSuexec。
在某些系统上,您*可能*需要编辑 `trac.cgi` 文件中的 shebang 行,以指向您实际的 Python 安装路径。在 Windows 系统上,您可能需要配置 Windows 以知道如何执行 `.cgi` 文件(资源管理器 -> 工具 -> 文件夹选项 -> 文件类型 -> CGI)。
Python Egg 缓存
可以使用 `trac.cgi` 中的 `os.environ` 语句配置 egg 缓存,如上所示。要从 Apache 配置中执行相同的操作,请使用 `SetEnv` 指令:
SetEnv PYTHON_EGG_CACHE /path/to/dir
将此指令放置在设置 Trac 环境路径的位置旁边,即在同一个 `<Location>` 块中。
<Location /trac> SetEnv TRAC_ENV /path/to/projenv SetEnv PYTHON_EGG_CACHE /path/to/dir </Location>
使用 WSGI
您可以在 CGI 下运行 WSGI 处理程序。您可以编写自己的应用程序函数,或使用已部署的 trac.wsgi 应用程序。
映射静态资源
详见 TracInstall#MappingStaticResources。
添加身份验证
详见 TracInstall#ConfiguringAuthentication。