Комментарии 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 - очень не рекомендую... очередной вредный совет.
Настройка LEMP сервера для простых проектов. Инструкция для самых маленьких. Часть вторая