Я установил Ubuntu 17.04 на свой компьютер, настроил Apache с PHP 7 для работы над некоторыми разработками, но когда я попытался настроить HTTP2 на моем Apache, это не сработало, потому что это не настройка для Apache, работающего с mpm-prefork, и я не могу отключить mpm-prefork, потому что он используется PHP 7, любые идеи, как я могу заставить это работать?
Спасибо.
Модель prefork накладывает довольно много ограничений на HTTP даже без HTTP / 2, но с HTTP / 2 она предотвращает использование многих функций HTTP / 2. Поскольку каждый запрос возникает в отдельном процессе, и нет многопоточности, Apache не может их мультиплексировать (обслуживать несколько запросов в одном и том же TCP-соединении), если только он не изменит способ работы допроса, который существенно не изменился, , Таким образом, поддержка HTTP / 2 ограничена одним запросом за один раз за соединение при использовании prefork.
(Это описано здесь)
Хороший современный способ интеграции PHP с веб-сайтом сервер должен использовать PHP-FPM (встроенный менеджер процессов FastCGI в PHP) и ретранслятор веб-сервера PHP запрашивает это и получает ответы. Затем вы можете использовать многопоточный веб-сервер, такой как Apache, с рабочим MPM или веб-сервером на основе событий, таким как Apache с событием MPM, или nginx (что особенно хорошо подходит для HTTP / 2 из-за его способности открывать тысячи соединения с очень маленькой памятью). На самом деле это, вероятно, самый распространенный способ использования PHP с nginx, и я также видел, что он использовался на Apache2 раньше по соображениям безопасности (например, с разными PHP-приложениями, работающими как отдельные пользователи). Поддержка HTTP / 2 также является достойной причиной.
Существует множество руководств по настройке веб-серверов и PHP для использования PHP-FPM.
Модель prefork накладывает довольно много ограничений на HTTP даже без HTTP / 2, но с HTTP / 2 она предотвращает использование многих функций HTTP / 2. Поскольку каждый запрос возникает в отдельном процессе, и нет многопоточности, Apache не может их мультиплексировать (обслуживать несколько запросов в одном и том же TCP-соединении), если только он не изменит способ работы допроса, который существенно не изменился, , Таким образом, поддержка HTTP / 2 ограничена одним запросом за один раз за соединение при использовании prefork.
(Это описано здесь)
Хороший современный способ интеграции PHP с веб-сайтом сервер должен использовать PHP-FPM (встроенный менеджер процессов FastCGI в PHP) и ретранслятор веб-сервера PHP запрашивает это и получает ответы. Затем вы можете использовать многопоточный веб-сервер, такой как Apache, с рабочим MPM или веб-сервером на основе событий, таким как Apache с событием MPM, или nginx (что особенно хорошо подходит для HTTP / 2 из-за его способности открывать тысячи соединения с очень маленькой памятью). На самом деле это, вероятно, самый распространенный способ использования PHP с nginx, и я также видел, что он использовался на Apache2 раньше по соображениям безопасности (например, с разными PHP-приложениями, работающими как отдельные пользователи). Поддержка HTTP / 2 также является достойной причиной.
Существует множество руководств по настройке веб-серверов и PHP для использования PHP-FPM.