我正在尝试将 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 允许将 fastcgi 脚本作为 apache 运行(这似乎是在 C4 系统上发生的事情);或者
- 弄清楚如何告诉 suexec 以不同的用户身份运行 fastcgi 脚本
今天我的 google-fu 很弱,我找不到任何一个问题的答案。
站点定义的内容:
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-script,它可以工作。(之后我将整个 /opt/rt4 树的所有权和组成员身份更改回 apache:apache。)
我什至删除了整个 /opt/rt4 树并尝试从源代码重新安装,但它仍然不起作用。
有人可以告诉我我在这里缺少什么吗?
你没有提到你是如何安装 fastcgi 的,但是在网络部署文档中有注释说一些发行版还需要:
许多用户还幸运地使用了 mod_fcgid,它可以通过EPEL作为一个包获得。
SELinux 设置有时也会导致权限问题,如果您想让它完全启用,则需要特殊设置。
在公共论坛上提问这样的问题是无法治愈的。
就我而言,在 CentOS 6 服务器上,有一个指令
/etc/httpd/conf.d/fastcgi.conf
:注释掉第二行,它起作用了,大概是通过禁用 suexec 安全性。从长远来看,这可能是解决问题的错误方法。