Назад | Перейти на главную страницу

Служба httpd не запускается - fcgid не может создать общую память

Не знаю почему, но когда я пытаюсь запустить службу 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

Поэтому я удалил файл subsys для httpd и попробовал еще раз, но снова не удалось.

Мой процесс добавления fcgid был следующим:

  1. Я собрал mod_fcgid из исходников, поместил его в каталог / etc / httpd / modules.

  2. Я добавил LoadModule fcgid_module modules/mod_fcgid.so к списку модулей

  3. Я прокомментировал LoadModule cgi_module modules/mod_cgi.so так как мне это не понадобится.

  4. Я создал сценарий оболочки для php и поместил его в / var / www / cgi-bin:

  5. Я создал обработчик PHP, указывающий на оболочку.

  6. Затем я пытаюсь запустить службу 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

Я вижу, что там написано «File exits», но я повсюду искал лишние файлы с «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.

просто чтобы проверить SELinux часть, попробуйте отключить ее и посмотрите, не в этом ли причина вашей проблемы:

[alexus@XXXXXXXXXX ~]$ getenforce 
Enforcing
[alexus@XXXXXXXXXX ~]$ sudo setenforce 0
[alexus@XXXXXXXXXX ~]$ getenforce 
Permissive
[alexus@XXXXXXXXXX ~]$ 

Кроме того, вы случайно не запускаете это как chroot? У меня была аналогичная проблема во времена FreeBSD, но она была связана с jail / chroot.