Развертывание сайта Laravel через Nginx Vs. PHP Artisan Serve - PullRequest
0 голосов
/ 04 апреля 2019

Так как локально я сделал только php artisan serve и все работает нормально.В моей производственной виртуальной машине я не уверен, стоит ли мне просто делать то же самое php artisan serve &, поэтому мне не нужно устанавливать Nginx , настраивать корневой каталог документа и так далее.

Есть ли какие-либо недостатки в этом?

Ответы [ 2 ]

2 голосов
/ 04 апреля 2019

nginx

  • предназначен для решения проблемы c10k
  • работает очень хорошо, даже при большой нагрузке
  • - обратный прокси
  • использует современный синтаксический анализатор http для проверки правильности запроса
  • использует чрезвычайно мощный, но простой синтаксис конфигурации
  • поставляется с множеством модулей для обработки трафика http (модуль auth, зеркальный модуль)
  • может завершать ssl / tls
  • может загружать баланс между несколькими конечными точками обслуживания php (или любыми другими конечными точками, которые говорят на http)
  • может быть перезагружен для применения новогоconfig, без потери текущих соединений

php artisan serve

  • , предназначенный для быстрой работы с веб-сайтом на основе laravel
  • , написанным на php, isn 't, предназначенный для решения проблемы c10k
  • вылетит при превышении доступной памяти (по умолчанию 128 МБ, которая быстро заполняется)
  • не является обратным прокси
  • isnне использую современный http parser
  • не подвергается стресс-тестированию
  • не может масштабироваться на другие машины, как nginx
  • не завершает SSL.Даже если бы это было так, это было бы мучительно медленно по сравнению с чисто скомпилированным решением
  • не основано на событиях или не связано с тем, как php-fpm / nginx, поэтому все выполняется в одном и том же процессе.Отсутствует схема реактора, позволяющая разгрузить работников для масштабирования между ядрами процессора и защиты от сбоя сервера в случае ошибки в части кода.Это означает, что если вы загружаете слишком много данных из MySQL - процесс останавливается, поэтому сервер тоже.

Настройка nginx в среднем занимает около ~ 30 секунд для опытного человека.Я говорю из опыта, так как это моя ежедневная работа.Использование средств автоматизации, таких как ansible, делает это еще проще, вы можете об этом почти забыть.

Использование веб-сервера, предназначенного для быстрой и быстрой проверки части вашего кода на производстве, сопряжено с рисками.Ваш сайт будет медленнее.Ваш сайт будет подвержен сбоям, если какой-либо сценарий kiddie решит выполнить запрос curl в цикле foreach.

Если вы считаете, что установка и настройка nginx - это сложная задача, и вы хотите использовать php artisan serve, убедитесь, чтовы запускаете его под наблюдением (supervisord - мой инструмент).Если он выйдет из строя, он снова загрузится.

По моему мнению, бесполезно запускать сервер на основе php для обслуживания вашего приложения.Время, затрачиваемое на настройку nginx / php-fpm, не слишком велико, даже если вы новичок в этом.

Все идет с рисками и выгодами, но в данном конкретном случае - выигрыш несуществует, хотя есть уверенность, что что-то пойдет не так.


TL; DR

Не делайте этого, потратьте эти несколько минут на настройку nginx.Лучшее программное обеспечение - это то, что хорошо работает, и вы можете об этом забыть.nginx является одним из таких инструментов.PHP превосходит во многих областях, но встроенный веб-сервер не является одной из тех вещей, которые вы должны использовать в производстве.Пойдите с инструментами, проверенными на поле битвы.

1 голос
/ 05 апреля 2019

php artisan serve никогда не должен использоваться в производственной среде, поскольку он использует встроенный сервер PHP7, который предназначен только для целей разработки .

См. page

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

...