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

Почему mod_fastcgi в Apache жалуется, что у него нет разрешения на создание сервера?

Это очень старая проблема FastCGI, но я так и не нашел удовлетворительного ответа.

Поиск фразы "(13) отказано в разрешении fastcgi не может создать сервер" в Google покажет, что многие люди сталкиваются с этой проблемой в течение длительного времени.

Некоторые винят в этом selinux и предлагают выключить его (неприемлемое решение).

Другие люди думают, что это странная проблема с разрешениями на символические ссылки, и предлагают превратить каталог журналов Apache с символической ссылки в простой каталог. (неприемлемо, так как это связано с перемещением файлов журналов) См. Установка FastCGI.

Ниже приведена ужасная ошибка, обычно регистрируемая Apache.

[Wed Jun 14 22:09:34 2009] [notice] Apache/2.0.40> (Red Hat Linux) configured 
-- resuming normal operations
[Wed Jun 14 22:09:35 2009] [crit] (13)Permission
denied: FastCGI: can't create server "/var/rt3/bin/mason_handler.fcgi": bind()
failed [/etc/httpd/logs/fastcgi/70d9a528c5892f2bf0c25e5a334bed81]

Надеясь serverfault может, наконец, дать окончательный ответ на эту озадачивающую и раздражающую проблему, которая годами мучила пользователей FastCGI.

Я чувствую себя неловко, применяя предлагаемые «лекарства», когда никто действительно не знает первопричину этой болезни. Надеюсь разобраться в этой тайне.

Я исправил эту проблему

chown apache:apache /etc/httpd/logs/

Из /usr/lib/errno.h

#define EACCES          13      /* Permission denied */

mod_fcgi общается с потомками fastCGI через именованный канал. Apache создает канал перед порождением детей. Я бы предположил, что у apache нет разрешения на создание

/var/rt3/bin/mason_handler.fcgi

Чтобы проверить это, попробуйте

su - apache "touch /var/rt3/bin/mason_handler.fcgi"

Если это не удается, настройте разрешения файловой системы соответствующим образом, чтобы предоставить apache разрешение на создание файла в этом каталоге.

Для работы под SELinux попробуйте использовать mod_fcgid вместо mod_fastcgi. Я пробовал mod_fastcgi с SELinux на CentOS 5.6 в течение трех часов, поискал в гугле и ничего не добился. Это проблема, когда mod_fastcgi пытается создать канал / сокет для связи с приложениями fastcgi. Я пробовал каждый контекст разрешений / SELinux, который мог придумать, в папке / var / log / httpd / fastcgi (где mod_fastcgi создает именованный канал), но ничего не работало. Затем я переключился на mod_fcgid (скачал EL5 rpm с rpm.pbone.net), который, по-видимому, не использует тот же метод связи для общения с приложениями fastcgi, и все работало отлично, как если бы приложение fastcgi было обычным приложением cgi. ! Вам все равно необходимо установить правильные контексты SELinux для ваших файлов (см. Страницу руководства для httpd_selinux). Например. вы хотите выполнить chcon -t httpd_sys_script_exec_t fcgiapp, а также chcon -t httpd_sys_script_r [w | o | a] _t для любого файла, к которому ваш скрипт обращается / изменяет, и вам, возможно, придется установить некоторые из логических значений allow_httpd ... с помощью команды setsebool . И, конечно же, вы должны правильно установить обычные права доступа к файлам. Существуют веб-руководства, в которых описывается типичная конфигурация mod_fcgi.

Пользователь, от имени которого запущен процесс fastcgi, не имеет разрешений на привязку к любому сокету, к которому вы его просите. Для этого может быть любое количество причин, недостаточно информации для постановки полезного диагноза.