我正在尝试将 RT 4.0.1 实例(具有本地代码定制)从 CentOS 4 服务器移植到 CentOS 6 服务器。
我的问题似乎是无法启动 fastcgi 脚本。
apache 启动时出现以下错误:
[Mon Mar 25 12:37:37 2013] [warn] FastCGI: server "/opt/rt4/sbin/rt-server.fcgi" (uid 48, gid 48) restarted (pid 1504) suexec policy violation: see suexec log for more details
[Mon Mar 25 12:37:37 2013] [warn] FastCGI: server "/opt/rt4/sbin/rt-server.fcgi" (pid 1504) terminated by calling exit with status '107'
[Mon Mar 25 12:37:38 2013] [warn] FastCGI: server "/opt/rt4/sbin/rt-server.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
suexec.log的内容:
[2013-03-25 12:37:37]: uid: (apache/apache) gid: (apache/apache) cmd: rt-server.fcgi
[2013-03-25 12:37:37]: cannot run as forbidden uid (48/rt-server.fcgi)
suexec.log 意味着我需要
- 告诉 suexec 它被允许以 apache 身份运行 fastcgi 脚本(这似乎是在 C4 系统上发生的事情);或者
- 弄清楚如何告诉 suexec 以不同的用户身份运行 fastcgi 脚本
今天我的谷歌能力很弱,我找不到任何一个问题的答案。
站点定义的内容:
FastCgiServer /opt/rt4/sbin/rt-server.fcgi -processes 5 -idle-timeout 180
<VirtualHost *:80>
ServerName arrtee.$MYDOMAIN
AddDefaultCharset UTF-8
# Pass through requests to display images
Alias /NoAuth/images/ /opt/rt4/share/html/NoAuth/images/
ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/
DocumentRoot "/opt/rt4/share/html"
<Location />
Order allow,deny
Allow from all
Options +ExecCGI
AddHandler fastcgi-script fcgi
</Location>
</VirtualHost>
我可以以 root 身份运行 fastgcgi 脚本,它可以正常工作。(之后,我将整个 /opt/rt4 树上的所有权和组成员身份更改回 apache:apache。)
我甚至删除了整个 /opt/rt4 树并尝试从源代码重新安装,但仍然不起作用。
有人能告诉我这里缺少什么吗?
答案1
答案2
没有什么比在公共论坛上提问更能解决问题的了。
就我而言,在 CentOS 6 服务器上,有一条指令/etc/httpd/conf.d/fastcgi.conf
:
# wrap all fastcgi script calls in suexec
FastCgiWrapper On
注释掉第二行,它就可以工作了,大概是通过禁用 suexec 安全性来实现的。从长远来看,这可能是解决问题的错误方法。