Прошу прощения за свое новичковое невежество, но я уже просто утонул в тоннах сравнения что же лучше, подчеркну лучше, а не быстрее!
Задача примерно следующая:
Небольшой мультиязычный сайт на Silex Framework, облачный хостинг на Amazon — micro instance, ubuntu, php, mysql.
А вот со свзязкой проблемы, что же будет оптимальным решением по отношению скорость/ресурсы:
1. nginx-front и apache-back+mod_php
2. nginx + php-fpm
3. голый nginx
4. голый apache+mod_php
или другие варианты
… понятно что требуются xcache, memcached и другие методы ускорения работы ресурса.
Но основной вопрос в том какую связку все же выбрать как наиболее производительную и менее ресурсозависимую?
Ведь в случае прожорливости по ресурсам мне придется быстрее переходить на платные инстансы амазона, да и переплачивать за нагрузку неграмотно выбранной архитектуры не хочется. С другой стороны оптимизация по проеданию ресурсов может губительно отразиться на скорости, что тоже не есть здорово.
Очень прошу поделиться личным опытом и рекомендациями, особенно с ссылками на мануалы настройки для новичков.
И умоляю не устраивать из этого вопроса потасовку — мне действительно нужно решение, а не мысли по древу или срач в коментариях.
Наши тесты показали значительное ускорение при nginx +php5-fpm по сравнению с apache+mod_php. Пора уже использовать прогрессивные технологии, а не ставить по старинке Apache. Вот наш рецепт:
— собственно nginx+php5-fpm
— apc для локального кэша, memcached для сетевого
— бд Percona XtraDB, потом перешли на MariaDB+XtraDB
— ssd для оси, выключить журналирование, включить trim
— ежедневный backup на hdd, недельный через сеть.
В общем данные мероприятия существенно увеличили производительность.
имхо некоторые агрейты сделаны просто ради апгрейтов. ssd на вебсервере без большого количества статики, ничего не даст, данные все равно в памяти, запись идет фоново и при этом жестко убивает скорость чтения с ssd.
Зачем именно вам MariaDB не знаю (возможно, используете что-то специфическое), но mysql имеет очень весомое преимущество: handler socket, что позволяет обращаться к данным или медленно, но гибко с помощью sql или в виде kv запросов, очень быстро. Самое важное, что синхронизировать ничего не нужно.
Лучше — nginx-front и apache-back+mod_php, так как это решение главной проблемы апача — расход памяти при отдаче статики, и отсутствие говной боли в конвертации правил .htaccess в правила nginx.
Быстрее — nginx + php-fpm.
Но раз надо «лучше, а не быстрее!», бери первый вариант.
Поясните пожалуйста, почему 1й вариант (2 веб сервера + мод) лучше, чем 2й (1вс + фпм), если 2й быстрее? Т.е. зачем ставить апач+мод, если фпм и так быстрее
Полностью поддерживаю господина Elkaz, решения идеального не может быть в принципе.
Я лично рекомендовал бы ставить то с чем умеет управляться админ (не умеет ставить, а вообще, даже в критической ситуации когда всё идёт не так как должно быть...) Это самый важный фактор.
И да, многие движки требуют обязательно апачевский rewrite так что иногда выбора как такового и нет. Однако если выбор всё же есть, я бы предпочёл всё же варианты с nginx.
Буду ставить nginx и php-fpm, изучать вопрос подробнее, и быть может, поэкспериментирую с другими вариантами, но уже на базе только nginx с другим «обвесом».
ИМХО правильный выбор. Т.к. nginx ставить все равно бы пришлось, а так мы отсеяли дополнительный инструмент который пришлось бы изучать, к тому же теперь php-fpm встроен в php (с версии 5.3.3 вроде).
Тогда для вашего Ubuntu вам в помощь более-менее свежие версии nginx и php5 с fpm: launchpad.net/~nginx/+archive/stable launchpad.net/~nginx/+archive/php5
я не видел ничего удобней mod_php. Гибче, чем apache+mod_php вы не найдёте однозначно.
С другой стороны лично я уже лет 5 не конфигурил apache, т.е. перешёл на nginx+php-fcgi. Мне хватает + для моих проектов требуется быстродействие. Точнее, отсутсвие тормозов в тривиальных задачах. Да и в общем функционала хватает и гибкости. Но mod_php явно гибче.
Вот да... И спустя 3 года - ничего не меняется...
Я хочу сказать, что nginx на фронт таки покруче будет (статику выкидывать, да и вообще, не только статику, а направлять запросы может не только на апач, а может и на node или еще что), а php таки лучше как модуль для apache, ибо, как писали в дургих ответах - гибче...
Был опыт хостинга сайтов на этом типе инстанса. По памяти и скорости связка nginx+php-fpm показала себя лучше да и сейчас не вижу смысла начинать проект с апачем. БД будет тесно по оперативке и она будет периодически выдавать фризы, связанные с работой с диском.
Опять же из опыта на t2-micro прикручивание CloudFlare дает ощутимое снижение нагрузки на сервер за счет кеширования статики и, соответственно, снижения количества запросов на сервер.