Pull to refresh

Comments 17

Не совсем понял, что значит php-fpm не работает с .htaccess? У нас на всех серверах апач с php-fpm и сильно используем htaccess. Все работает.

PHP-FPM не применяет файлы .htaccess из коробки, вероятно в вашей связке за их применение отвечает Apache2, так как судя по вашему сообщению он развернут. Или вы использовали решение, которое позволяет интегрировать.htaccess файлы в php-fpm, на сколько я знаю оно существует, но сам его ни разу не настраивал.

worker_connections  1024;

Потерялось описание этой строки

Так вы LEMP стэк делали, или LAMP? Зачем связка ngnix+Apache2? Только чтоб из коробки читать .htaccess? Но можно из коробки и не брать ngnix, а обойтись Apache2, тем более что это будет проще, чем то что описано и апач уже настроен на http, а https тут и не пахнет. Или я что-то совсем не понял и Apache2 не может принимать соединения на 80 порту?

Согласен, эта древняя практика Apache + Nginx применяется сейчас либо новичками начитавшимися древних мануалов наподобии этого либо shared хостингами где тот-же новичок постучится в саппорт и начнет жаловаться что у него .htaccess файл "не работает".

Так вы LEMP стэк делали, или LAMP?

Прочитайте пожалуйста обе статьи, я несколько раз сделал упор на то, что ПО поднимаемое в статье не является полноценным стэком LEMP

Зачем связка ngnix+Apache2?

Разница в особенностях обработки соединений. Nginx лушче работает как прокси, поэтому мы используем его в этой схеме для обработки статических данных площадки. В то же время Apache занимается интерпретацией PHP.

Но можно из коробки и не брать ngnix, а обойтись Apache2

.Нет, если есть возможность использовать Nginx+Apache2, площадка будет работать быстрее. Пул Apache не будет использоваться при запросе статики.

тем более что это будет проще, чем то что описано и апач уже настроен на http, а https тут и не пахнет

При создании виртуальных хостов вы можете выпустить сертификат и настроить работу площадки по HTTPS на уровне Nginx. Это будет отражено в третьей статье, сейчас не совсем понимаю вашего вопрооса. Прием трафика Apache по 443 порту в дефолтной конфигурации нужно будет также отключить, так как этим будет заниматься Nginx.

Или я что-то совсем не понял и Apache2 не может принимать соединения на 80 порту?

Этот момент подробно отражен в статье, но я поясню для вас. Nginx устанавливается первым и по умолчанию занимет 80 порт сервера. После устанавливается Apache2, и не может запуститься так как 80 порт уже занят Nginx.

Разница в особенностях обработки соединений. Nginx лушче работает как прокси, поэтому мы используем его в этой схеме для обработки статических данных площадки. В то же время Apache занимается интерпретацией PHP.

Вы можете объяснить, в чем преимущество Apache как php интерпретатора (вернее его модуля) перед тем-же php-fpm или Nginx Unit?

Да, вот этой картинки из первой статьи не хватало. Но прочтя её у меня только больше вопросов появилось, так например где кофигурация прокси? Как разделяется статика и запросы к apache2, и т.д. Сделав как описано в статьях, я не получу соединеий с ngnix на apache2 ну и далее до ДБ.

Нет, если есть возможность использовать Nginx+Apache2, площадка будет работать быстрее.

Соглашусь для высоконагруженных приложений с распределением нагрузки, тут же у нас DevOps для самых маленьких, нет смысла разделять ngnix и Apache2.

Для образовательных целей я бы остался на одном из них и показал как лучше сконфигурировать всю цепочу. Не из-за библейских предпочтений, а просто потому, что это разные сервисы и конфигурации у них разные. Гораздо проще понять что-то одно, а там уже развиваться и совершенсвтоваться.

Этот момент подробно отражен в статье, но я поясню для вас. Nginx устанавливается первым и по умолчанию занимет 80 порт сервера. После устанавливается Apache2, и не может запуститься так как 80 порт уже занят Nginx.

Да я тут скорее рассуждал о надобности ngnix-а как такового для простого принятия http. Понято, что порт занят и не запустить сервер с таким же портом.

Nginx устанавливается первым и по умолчанию занимет 80 порт сервера. После устанавливается Apache2, и не может запуститься так как 80 порт уже занят Nginx.

обычно в таких случаях Apache вешают на 127.0.0.1:80, а nginx на внешний_ip:80(443). Этим вы закрываете доступ к Apache извне минуя nginx и оба работают на порту 80.

Такая связка позволяет ускорить отдачу статики (при правильной настройке) и разгрузить сервер от большой нагрузки. Правда, статья не про большую нагрузку :)

обычно в таких случаях Apache вешают на 127.0.0.1:80, а nginx на внешний_ip:80(443). Этим вы закрываете доступ к Apache извне минуя nginx и оба работают на порту 80.

В третьей части статье будут описаны непосредственно виртуальные хосты, там будет разделение статики и передача PHP запросов Apache2. В целом в текущей настройке также предполагается, что Apache закрыт от внешних подключений, открыт только Nginx.

<VirtualHost *:81>

В третьей части статье будут описаны непосредственно виртуальные хосты

Позвольте, в чем смысл тогда этой статьи? Тут есть виртуальный хост на всех ендпойнтах на порту 81, а "рассматривать его будем в следущей части". Так не пойдёт, текст должен быть завершенным, с объяснениями почему именно так.

А когда вы протестируете конфигурацию Apache2? А когда вы его запустите? Простая связка могла бы помочь:

sudo apachectl configtest && sudo /bin/systemctl restart apache2 

По всему тексту и в первой статье тоже, гуляет "непонятный" гит (непонятный он, т.к. его тут никто не объяснил) и какие-то странные примеры кода. Вот взять эту часть:

Указываем кодировку СУБД по умолчанию, в нашем случае это UTF8, для этого вносим изменения в файл /etc/mysql/my.cnf:

diff --git a/mysql/my.cnf b/mysql/my.cnf
[mysqld]
+character-set-server = utf8
+collation-server = utf8_unicode_ci

Я, как "самый маленький пользователь" беру и копирую это замечательный кусочек кода себе в /etc/mysql/my.cnf, выполняю заветный

sudo service mysql restart

и ничего не работает больше... Почему? Проверьте сами, скопировав текст.

Так через всю статью, использование diff-ов гита, или просто коммитов очень помогает молодым пользователям без глубокого объяснения самого гита.

Нашел на хабре человеческий LAMP: https://habr.com/ru/post/409915/

Тут все расписано почему так, не едак, так ещё и работать будет в конце статьи.

У меня домашний сервер на WinXP стоит, потому что железо слабое. И Apache последней версии, которая мне доступна, не имеет достаточно новой библиотеки OpenSSL на борту. Поэтому я настроил https трафик через nginx с передачей запросов далее на Apache, всё работает чётко :)

А зачем в этой связке вам Апач?

Спасибо, интересный пасадобль. Статья явно заслуживает плюса, плюсомёт отобрали за правдорублю матки. Потому словами. Когда люди меня просят помочь я стараюсь помочь, а не сообщить им " а не гонялся бы ты поп за дешевизной". И статья этому способствует, за что благодарю. Жду третью часть.

worker_priority -15;

Только заметил... А что это делает в "инструкции для самых маленьких" к этому значению нужно подходить с пониманием для чего оно и менять только по необходимости. Ни 1-го ни 2-го нет, данная настройка даст nginx приоритет уровня kernel - очень не рекомендую... очередной вредный совет.

Sign up to leave a comment.