Мне нужно обслуживать приложение PHP, которое обрабатывает множество запросов. Я хочу знать, есть ли реальная выгода в использовании чего-либо, кроме Apache, и каковы плюсы и минусы альтернатив.
У меня есть некоторый опыт использования lighttpd и nginx для приложений Rails. Они тоже хорошие соперники для PHP? Какие-нибудь важные приемы настройки?
Как насчет ускорителей PHP, можно ли их использовать с этими альтернативными серверами, это хорошая идея?
Я использую коробку OpenSolaris.
Не уверен, что это актуально, но позже я планирую установить прокси / кеш Varnish перед этим сервером.
Хочу добавить, что я абсолютно не собираюсь трогать приложение. Это типичный беспорядок, которым славится PHP, и на него практически нет времени.
Apache - хорошая основа для mod-php, добавление APC для кэширования байтового кода, а также кеширование некоторых переменных очень поможет, на самом деле, это наиболее очевидная вещь, которую вы можете сделать для ускорения времени выполнения скриптов PHP (также используйте Yslow, чтобы ускорить интерфейс HTML и убедиться, что база данных оптимизирована).
Однако есть несколько предложений, которые я бы добавил, например, отказ от обслуживания изображений и другого статического контента из Apache. У меня есть отдельный (под) домен с выделенным сервером изображений (я использую thttpd, но nginx тоже вполне подходит). Тем не менее, обслуживание изображений с полностью отдельного доменного имени (или CDN) было бы еще лучше.
NginX также имеет то преимущество, что он может действовать как прокси, который имеет дело с входящими подключениями, а затем возвращает результаты обратно - это означает, что внутренние производственные процессы Apache2 / Mod_php могут работать полностью локально. -скорости сети, вместо того, чтобы ждать, пока клиенты веб-браузера наверстают упущенное.
Varnish может выполнять дополнительную работу помимо того, что может делать Nginx, но я не очень хорошо это знаю - возможно, вы можете использовать только один или другой, но вряд ли придется использовать оба.
nginx в сочетании с php-fpm и xcache обеспечит значительное улучшение скорости по сравнению с любым решением Apache.
В зависимости от вашего приложения, включающего что-то вроде кэш памяти может также обеспечить огромные преимущества кэширования.
Моему серверу Apache с mod_php не хватало памяти из-за сайта Wordpress. Поэтому после оптимизации Wordpress я перешел на Apache. Я обнаружил, что mod_fastcgi работает лучше, чем mod_fcgi. Перенос PHP из Apache уменьшил нагрузку на веб-сервер (с 38 до 4 МБ на процесс). Я также установил eAccelerators и обнаружил, что PHP работает быстрее. Кроме того, если на ваших страницах много включений (CSS и javascript), одним из приемов, которые я использовал с Wordpress, было сжатие включаемых файлов в один файл с минимальным количеством пробелов (но это может быть скорее артефактом Wordpress).
Поэтому я бы посоветовал увидеть, как перенос PHP из Apache (и в отдельный процесс с помощью mod_fastcgi [php-cgi]) помогает. Обратите внимание, что ускорители PHP увеличивают требования к памяти для процесса PHP (что является еще одной причиной, чтобы вывести его из процесса Apache).