Установленные и связанные пакеты на сервере:
php php-cli php-common php-opcache php-mcrypt php-gd php-curl php-fpm php-dom php-intl php-pecl-mongodb php-mbstring php-xml php-pear php-devel php-pecl-zip
Centos 7 Apache / httpd
Предыстория:
Мы переходим на новый сервер со старого, потому что теперь у нас наконец есть время, чтобы все перенастроить. На старом сервере все работало, но не хватало некоторых функций, которые могли повысить производительность. Один из них - файл php-fpm. Теперь новая конфигурация сервера почти завершена, отсутствует только соединение с инструментом автоматического развертывания и php-fpm. Поэтому я установил php-fpm, используя следующие руководства:
https://www.webhostinghero.com/centos-apache-php-fpm/
https://www.mynotepaper.com/install-latest-php -php-fpm-on-centos-7 /
https://www.stephenrlang.com/2018/02/centos-7-apache-2-4-with-php-fpm/
Это топ-3 результатов по теме в Google, и я вроде как устал от всего этого, потому что я работал над всей конфигурацией в течение 2 месяцев, и мне очень хотелось бы закончить ее сейчас. Проблема в том, что все вышеперечисленное не работает.
Что работает?
Ну, httpd работает отлично. У php-fpm тоже есть служба, и она, похоже, прослушивает порт № 9000. Итак, первая проблема заключается в том, что я не совсем уверен, как мне узнать, работает он или нет. Как я уже сказал, службы подходят как для httpd, так и для php-fpm. Также добавлен в автозапуск
Как я пытаюсь узнать, работает он или нет?
Ну, есть phpinfo, который чаще всего предлагается, но моя проблема в том, что я не хочу выкладывать config для публики. У нас есть попытки взлома - безуспешные - уже на сервере, поэтому лучше сохранить его в безопасности. Второй вариант - php -i | grep "Серверный API"
должен вернуться с этим - учитывая учебники: "FPM / fastCGI" и он возвращается с "Интерфейсом командной строки"
Я думаю, это может означать, что он не работает. Это правда?
Что я делал до сих пор?
в /etc/php.ini
У меня есть эта строка, как было предложено в руководстве: cgi.fix_pathinfo = 0
Тогда здесь /etc/php-fpm.d/www.conf
user = apache
group = apache
listen.owner = apache
listen.group = apache
listen = /var/run/php-fpm/default.sock
Затем здесь /etc/httpd/conf.modules.d/00-mpm.conf
вместо это: LoadModule mpm_prefork_module modules / mod_mpm_prefork.so
У меня есть это:
LoadModule mpm_event_module modules / mod_mpm_event.so
Затем здесь /etc/httpd/conf.d/php.conf
# Proxy declaration
<Proxy "unix:/var/run/php-fpm/default.sock|fcgi://php-fpm">
# we must declare a parameter in here (doesn't matter which) or it'll not register the proxy ahead of time
ProxySet disablereuse=off
</Proxy>
# Redirect to the proxy
<FilesMatch \.php$>
SetHandler proxy:fcgi://php-fpm
</FilesMatch>
плюс некоторые элементы по умолчанию. Это все из описаний, которые я привел выше
. После настройки службы каждый раз перезагружались, и я получаю тот же результат. Так что я понятия не имею, чего не хватает для того, чтобы это работало - в основном потому, что я впервые использую php-fpm с apache.
Сайты все еще работают, а вот эта штука с fpm - нет.
Есть идеи ?
"Какие-либо идеи?"
, Возможно, что-то, чтобы сделать с необходимым a2enmod, a2enconf, и команды a2dismod? Когда я переключился на php7.3-fpm на апачских 2.4, я должен был сделать следующее (это было на debian 10 и человечности 18.04):
sudo systemctl stop apache2
sudo apt-get install php7.3-fpm
a2enmod proxy_fcgi setenvif
a2enconf php7.3-fpm # this may depend on your PHP vendor
a2dismod php7.3 # This disables mod_php.
a2dismod mpm_prefork # This disables the prefork MPM. Only one MPM can run at a time.
a2enmod mpm_event # Enable event MPM. You could also enable mpm_worker.
sudo systemctl restart apache2
Должностное лицо sudo apachectl -M
и ищут эти модули:
http2_module (shared)
mpm_event_module (shared)
proxy_module (shared)
proxy_fcgi_module (shared)