Настраиваем fcgid под apache22 во FreeBSD | Apache, FreeBSD
Для увеличения производительности веб сервера сегодня ставим fcgid на апач (сервера у меня не настолько загружены чтобы переходить на nginix или lighttpd). Mod_fcgid написан специально для апача второй ветки и является продолжением разработки fastCGI.
Первое – апач должен быть собран с suexec. Делаем:
#cd /usr/ports/www/apache22
#make config
и смотрим отмечена ли опция отвечающая за suexec.
Далее – php должен быть собран с fastCGI.
Собрали поставили.
Далее ставим mod_fcgid
#cd /usr/ports/www/mod_fcgid
#make install clean
Начинаем конфигурировать.
Создаем враппер:
#cd /usr/local/bin/
#touch /usr/local/bin/php-wrapper
В файл вставляем:
#!/bin/sh
# Set desired PHP_FCGI_* environment variables.
# Example:
# PHP FastCGI processes exit after 500 requests by default.
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS
# Replace with the path to your FastCGI-enabled PHP executable
exec /usr/local/bin/php-cgi
Выставляем права на запуск. Здесь есть подводный камень – можно получить в логах апача ошибку:
Software caused connection abort: mod_fcgid: error reading data from FastCGI server, referer: http://server.ru/index.php
После установки модуля я выставил права запуска только для рута и получил такую ошибку (Internal Server Error, строка из лога – выше). Расширил права на запуск для группы, группу выставил под которой работает апач (www) – всё нормально заработало.
Далее следуем инструкции. Добавляем в конфиг апача строку
LoadModule fcgid_module libexec/apache22/mod_fcgid.so
Далее конфигурируем рутовую директорию сервера добавляем секцию :
<Directory "/usr/local/www/apache22/data">
AddHandler fcgid-script .php
Options +ExecCGI
FcgidWrapper /usr/local/bin/php-wrapper .php
</Directory>
Важная вещь – директивы AddHandler и FcgidWrapper должны применяться к конкретной локации – это либо <Directory>
либо <Location>
и т.д. Если мы просто добавим приведенные выше директивы в конфиг апача (например в конец файла) – то вполне вероятно получим ошибку:
You don't have permission to access / on this server.
Можно конфигурировать отдельные виртуальные хосты.
Для проверки создаем файл типа phpinfo.php бросаем его в корень сервера и пишем в файл:
<?php
phpinfo();
?>
Заходим на сервер http://server.ru/phpinfo.php и смотрим что у нас в Server API. Должно быть CGI/FastCGI
Мануал по fcgid здесь – http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html