我不知道为什么,但是当我尝试启动 httpd 服务时,它却无法启动。
服务器配置:
OS: CentOS 5.10
PHP: 5.5.7
Apache: 2.2.3
以下是我如何发现发生的事情的:
$ sudo service httpd start
Starting httpd: [ OK ]
$ sudo service httpd status
httpd dead but subsys locked
因此我删除了 httpd 的子系统文件,然后再次尝试,但再次失败。
我添加fcgid的过程如下:
我从源代码构建了 mod_fcgid,并将其放入 /etc/httpd/modules 目录中。
我附加
LoadModule fcgid_module modules/mod_fcgid.so
到模块列表我将其注释掉,
LoadModule cgi_module modules/mod_cgi.so
因为我不需要它。我为 php 创建了一个包装脚本并将其放入 /var/www/cgi-bin:
我为 PHP 创建了一个指向包装器的处理程序。
然后我尝试启动 httpd 服务
以下是我在 /var/log/httpd/error_log 中收到的错误:
[Mon Dec 16 12:18:26 2013] [notice] SELinux policy enabled; httpd running as context user_u:system_r:httpd_t:s0
[Mon Dec 16 12:18:26 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon Dec 16 12:18:26 2013] [notice] SSL FIPS mode disabled
[Mon Dec 16 12:18:26 2013] [notice] Digest: generating secret for digest authentication ...
[Mon Dec 16 12:18:26 2013] [notice] Digest: done
[Mon Dec 16 12:18:26 2013] [emerg] (17)File exists: mod_fcgid: Can't create shared memory for size 1200712 bytes
我看到它显示“文件退出”,但我到处搜索名称中带有“fcgi”的任何额外文件,但什么也没找到。
我不确定这是否是权限问题,或者可能是 SELinux 的问题 - 或者可能是 suEXEC?
我将不胜感激任何指导,因为我甚至不知道从哪里开始搜索。
我再次尝试,这次的错误稍有不同:
[Mon Dec 16 12:50:23 2013] [emerg] (13)Permission denied: mod_fcgid: Can't create shared memory for size 1200712 bytes
我不确定需要更改哪个文件夹或文件的所有权。
我将 SELinux 设置为permissive
,它允许进程顺利启动 - 但我不想让 SELinux 保持原样。我会问另一个问题,如何允许 Apache、fcgid 和 PHP 在 SELinux 下协同工作。
答案1
仅测试SELinux
部分,尝试禁用它并查看是否是导致问题的原因:
[alexus@XXXXXXXXXX ~]$ getenforce
Enforcing
[alexus@XXXXXXXXXX ~]$ sudo setenforce 0
[alexus@XXXXXXXXXX ~]$ getenforce
Permissive
[alexus@XXXXXXXXXX ~]$
另外,您是否正在以 chroot 方式运行它?我在 FreeBSD 时代也遇到过类似的问题,但那与 jail/chroot 有关。