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 превосходит во многих областях, но встроенный веб-сервер не является одной из тех вещей, которые вы должны использовать в производстве.Пойдите с инструментами, проверенными на поле битвы.