500 ошибок при переходе на fcgi в cPanel WHM
Я пытаюсь переключиться на fcgi из DSO на сервере CentOS 5.7 x64. Я сделал это в cPanel, как предложено в документации по cPanel.
Сразу же я начинаю получать 500 внутренних ошибок сервера при попытке получить доступ к сайту.
После проверки моих журналов ошибок apache я вижу следующее:
[Wed Feb 01 19:00:40 2012] [notice] Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4 mod_fcgid/2.3.6 configured -- resuming normal operations
[Wed Feb 01 19:00:41 2012] [notice] caught SIGTERM, shutting down
[Wed Feb 01 19:00:42 2012] [notice] suEXEC mechanism enabled (wrapper: /usr/local/apache/bin/suexec)
[Wed Feb 01 19:00:42 2012] [notice] Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4 mod_fcgid/2.3.6 configured -- resuming normal operations
[Wed Feb 01 19:04:42 2012] [notice] Graceful restart requested, doing restart
[Wed Feb 01 19:04:42 2012] [notice] Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4 mod_fcgid/2.3.6 configured -- resuming normal operations
Переключение обратно на DSO заставляет все снова работать нормально.
Как мне заставить это работать с fcgi?
2 ответа
Установка FastCGI через WHM по умолчанию не готова к использованию после установки. Глупо с их стороны, даже опасно граничить с этим, не говорить вам этого, поскольку кажется, что он будет работать автоматически, как почти все, что вы устанавливаете таким образом.
Причина проста - в процессе установки WHM нет файла конфигурации FastCGI. Это оставляет FastCGI с глупыми / опасными настройками по умолчанию, что приводит к большому количеству 500 ошибок и возможности одного пользователя вывести из строя весь ваш сервер, просто запустив файл PHP с некоторыми ошибками кода или получая много трафика.
В любом случае, решение тоже простое. Отредактируйте /etc/httpd/conf/php.conf и добавьте это:
MaxRequestsPerProcess 1000
FcgidMaxProcesses 200
FcgidProcessLifeTime 7200
MaxProcessCount 500
FcgidIOTimeout 400
FcgidIdleTimeout 600
FcgidIdleScanInterval 90
FcgidBusyTimeout 300
FcgidBusyScanInterval 80
ErrorScanInterval 3
ZombieScanInterval 3
DefaultMinClassProcessCount 0
DefaultMaxClassProcessCount 3
MaxRequestLen 20468982
Вы можете настроить каждый параметр в Google, чтобы лучше их понять и найти подходящие значения для вашего сервера, но даже просто скопировать вышеупомянутое лучше, чем использовать настройки по умолчанию, которые вы получаете без файла конфигурации.
PS. К сожалению, этот файл сбрасывается при каждом обновлении Apache, PHP или MySQL, поэтому сохраняйте резервную копию, которую вы восстанавливаете после каждого обновления.
Пожалуйста, обратите внимание, что вы также можете включить это в Post VirtualHost Включить cPanel. Это делается с помощью WHM, выбрав "Конфигурация Apache" -> "Включить редактор". Затем выберите "Все версии" в выпадающем меню под "Post VirtualHost Включить".
Затем вы должны поместить свою конфигурацию FCGI следующим образом:
<IfModule mod_fcgid.c>
FcgidProcessLifeTime 8200
FcgidIOTimeout 8200
FcgidIdleTimeout 60
...
</IfModule>
Таким образом, он не будет перезаписываться при каждом обновлении cPanel.