Apache работал медленно в производстве. После поиска ответов в течение некоторого времени я, наконец, перешел на IRC-канал #apache, и профессионалы попросили меня проверить режим apache с помощью этой команды:
sudo apachectl -V
и были встревожены, обнаружив, что Server MPM является prefork . Они решительно заявили, что НЕ ИСПОЛЬЗУЙТЕ ПРЕДВАРИТЕЛЬНОСТЬ НА СЕРВЕРЕ ПРОДУКЦИИ. Как оказалось, пакеты Ubuntu (предположительно унаследованные от Debian?) Настаивают на запуске apache в режиме prefork, несмотря на тот факт, что рекомендуемый метод для запуска PHP с Apache явно рекомендует proxy_fcgi и php-fpm, затем fcgid и в конечном итоге говорит, что вы не должны использовать prefork:
Почему вы не должны больше использовать mod_php с prefork mpm
- mod_php загружается в каждый процесс httpd постоянно. Даже когда httpd обслуживает статический / не php контент, эта память используется.
- mod_php не является потокобезопасным и заставляет вас придерживаться prefork mpm (многопроцессный, без потоков), который является самой медленной из возможных конфигураций
На этой странице также содержатся некоторые подробности о PHP-FPM, но это кажется немного сложным и неясным и, по-видимому, связано с ручной настройкой. Я разочарован и удивлен, что в Ubuntu 16 нет опции пакета для режима fastCGI или чего-то такого.
Я попытался переключить Apache в режим событий, используя a2enmod, и когда я попытался запустить Apache, я получил ошибку:
Apache работает с многопоточным MPM, но ваш модуль PHP не скомпилирован для обеспечения многопоточности. Вам нужно перекомпилировать PHP
Во всяком случае, мне было интересно, есть ли у кого-нибудь минимальные пошаговые инструкции для запуска режима fastCGI на Ubuntu 16 с PHP 7.0 , максимально полагаясь на установщики пакетов. В настоящее время я смотрю на многие плохо объясненные, расплывчатые инструкции и беспокоюсь о том, чтобы испортить производственную среду плохими решениями.
Также кто-то должен добавить mpm-событие в качестве опции тега. Вот что порекомендовали ребята из IRAP #apache.