Arhn - архитектура программирования

Использование встроенного сервера PHP в продакшене

Недавно меня заинтересовал встроенный веб-сервер PHP 5.4. На первый взгляд кажется, что, хотя это довольно примитивно, при достаточной работе можно было бы распространять PHP-приложения, которые традиционно зависят от отдельного веб-сервера, такого как WordPress, в виде автономных скриптов, которые можно просто запускать с помощью php -S localhost:80 app.php (или, что более вероятно, , './wordpress.sh'). Они могут даже поставляться со своим собственным интерпретатором PHP, имеющим все функции, необходимые приложению, что избавит от необходимости ориентироваться на множество разных версий языка.

Это несколько заново изобретает колесо, но это, безусловно, повысит мобильность и уменьшит сложность для конечного пользователя.

Однако на странице документации я увидел следующее:

Этот веб-сервер был разработан для помощи в разработке приложений. Это также может быть полезно для целей тестирования или для демонстрации приложений, запускаемых в контролируемых средах. Он не предназначен для использования в качестве полнофункционального веб-сервера. Его не следует использовать в общедоступной сети.

Это, очевидно, относится к таким проблемам, как надлежащая безопасность файловой системы и обслуживание правильных заголовков HTTP, которые можно решить. Однако есть ли в этом что-то еще? Существуют ли неотъемлемые проблемы безопасности и/или технические ограничения при использовании встроенного веб-сервера PHP в производственной среде, которые нельзя обойти? Если так, то кто они?

08.10.2014

Ответы:


1

Я могу придумать множество операционных проблем, почему вы не хотели бы этого делать:

  • логирование
  • Переписывает
  • Дросселирование
  • Эффективность (не тестировалось, но я предполагаю, что Nginx намного быстрее, чем встроенный неоптимизированный сервер PHP)
  • Интеграция со всем, что у вас есть, что расширяет возможности Nginx, Apache и IIS (например, New Relic).

Тем не менее, есть решение, в котором вы получаете большую часть преимуществ от запуска PHP со встроенным веб-сервером, в то же время получая большую часть преимуществ от запуска внешнего веб-сервера. То есть вы можете использовать такой сервер, как Nginx, в качестве обратного прокси-сервера для встроенного веб-сервера PHP. В этой ситуации HTTP становится заменой FastCGI, аналогично обычному использованию встроенного HTTP-сервера в приложениях Node.js.

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

08.10.2014
  • вы можете использовать ведение журнала и перезапись со встроенным веб-сервером. Однако эффективность и безопасность могут быть проблематичными по сравнению с реальными веб-серверами... 28.02.2019

  • 2

    Проблема со встроенным веб-сервером PHP заключается в том, что он однопоточный!

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

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

    Это полезно для простых одностраничных неинтерактивных приложений, в которых отсутствует риск отказа в обслуживании.

    11.08.2018

    3

    Встроенный сервер PHP поддерживает только HTTP/1.0, что означает, что клиенты должны устанавливать новое соединение TCP/IP для каждого запроса. Это очень медленно.

    23.09.2015
  • Я не думаю, что этот ответ актуален. Я работал с версией 7.2.5, например, php -S localhost:8080 &. curl -I localhost:8080 и он сказал HTTP/1.1. Также я протестировал его с помощью github.com/ijt/hammer (несколько раз нажал стрелку вверх), и он сделал тысячи запросов в секунду, по крайней мере, на привет, мир. Может быть, он не готов к производству по какой-то другой причине, но это не причина. 09.06.2018

  • 4

    Он не предназначен для использования в производственной среде и может не справляться со сбоями и утечками памяти, что вызывает проблемы со стабильностью. Что еще более важно, PHP сам предупреждает об этом явно:

    Предупреждение Этот веб-сервер был разработан для помощи в разработке приложений. Это также может быть полезно для целей тестирования или для демонстрации приложений, запускаемых в контролируемых средах. Он не предназначен для использования в качестве полнофункционального веб-сервера. Его не следует использовать в общедоступной сети.

    http://php.net/manual/en/features.commandline.webserver.php

    08.07.2015
  • Цитата включена в вопрос, это не ответ. 13.06.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..