fcgid、suexec 和 userdir

fcgid、suexec 和 userdir

我正在尝试使用 fcgid 设置每个用户的 trac 实例。问题是 trac 需要对 trac 实例的 rw 访问权限,因此我需要 fcgi 进程在相应的用户下运行。

我安装了 suexec、fcgid 和 userdir Apache 模块(在 Debian 上)。我设置了 vhost 指令

ScriptAliasMatch /~(.*)/trac /home/$1/public_html/trac.fcgi

只要 trac.fcgi 运行,这种方法就有效,但不幸的是,是在 www-data 用户下运行的。我怎样才能让 fcgid 在 $1 用户下启动它?

答案1

我正在使用 Rackspace 的 IUS RPM,并且 suexec 已默认编译和配置。

以下是我的 mod_fcgid 配置的相关部分:

LoadModule fcgid_module modules/mod_fcgid.so 
AddHandler fcgid-script fcg fcgi fpl php 
DefaultInitEnv PHPRC  "/etc/"
FCGIWrapper /usr/bin/php-cgi .php

我建议删除“ScriptAliasMatch”指令,并全局或在 UserDir 部分中使用 AddHandler 指令。在我的设置下,任何 UserDir 文件夹(即 ~/public_html)都会自动为相关用户使用 suexec。

答案2

Trac 是用 Python 编写的,支持在 mod_wsgi 下运行(根据 FAQ 中的一项),因此我会放弃其中几个可移动的部分,转而使用出色的 mod_wsgi,它支持为脚本指定运行用户。我在另一个项目中使用了此功能,效果很好。

查看官方 mod_wsgi 文档,了解如何完成此操作,我发现文档中包含一个有关 Trac 集成的页面,其中包含许多示例,包括指定以特定用户身份运行。因此,您最好的选择就是阅读:

http://code.google.com/p/modwsgi/wiki/IntegrationWithTrac

答案3

使用 mod_fastcgi,您可以使用以下命令启用 FastCGI 脚本的 Suexec 执行:

FastCgiSuexec '/usr/lib/apache2/suexec'

suexec 的路径可能需要修改,此示例来自 Debian 系统。

相关内容