Сегодня появилась приятная новость о том, что отныне uWSGI сервер поддерживает PHP. Нет, на уровне GGI он поддерживал и раньше, но это не идёт ни в какое сравнение с поддержкой на уровне ядра самого uWSGI.
uWSGI
Для тех, кто по какой-то причине еще не использует этот удобный и стабильный сервер — краткая справка.
uWSGI — быстрый, удобный и, при этом, надежный WSGI-сервер.
- Быстрый, потому что написан на C.
- Удобный, потому что легко конфигурируется всеми мыслимыми и немыслимыми видами:
.ini, yaml, json, XML
или через переменные окружения. - Надежный (в оригинале это звучит
self-healing
), потому что имеет функцию самоуправления: если запрос длится дольше отведенного времени, то master-процесс завершит исполнение текущего worker'a, чтобы не забивать память (функционал носит говорящее названиеHarakiri mode
).
Сборка PHP-плагина
Скачать исходники php, «связать» uwsgi исходники с ними и сконфигурировать среду окружения PHP:
ln -s /usr/src/uwsgi/plugins/php /usr/src/php/sapi/uwsgi
./buildconf --force
./configure --prefix=/opt/php --with-mysql --with-uwsgi=/usr/src/uwsgi
Затем собрать PHP традиционным
make, make install
.Использование вместе с Nginx
В энджинксе обработка php-запросов описывается привычной (для связки с WSGI-приложениями через uWSGI) секцией:
location ~ .php$ {
include uwsgi_params;
uwsgi_modifier1 14;
uwsgi_pass 127.0.0.1:3030;
}
Запуск uWSGI
Пока поддержка PHP (в виде плагина) находится в состоянии альфы, никакой конфигурации плагина не требуется. А запустить сервер в режиме его использования можно так:
uwsgi --plugins php --master --socket :3030 --processes 4
Такими темпами можно будет скоро отказаться не только от Apache, но и ото всех FastCGI-php-fpm вместе взятыми.
Ссылки по теме
Запуск PHP-скриптов в uWSGI: projects.unbit.it/uwsgi/wiki/PHP
Подробнее о «Harakiri mode» в WiKi: projects.unbit.it/uwsgi/wiki