Я относительно новичок в мире управления / администрирования веб-сервера Unix.
Многие хосты с опциями администрирования панели управления позволяют изменять простой способ запуска PHP.
Наиболее распространенные варианты:
Мой вопрос прост: как вы можете изменить это через командную строку? Я знаю, что есть много конфигурационных файлов для Apache.
Самое близкое, что я нашел, это этот вопрос , однако структура каталогов, похоже, не соответствует моей ОС (Ubuntu 12.04).
Я совершенно сбит с толку тем, что, похоже, нет четкого руководства, в котором я могу найти подробности этого процесса для чего-то, что кажется настолько распространенным. Простите, если это существует ... если так, пожалуйста, укажите мне правильное направление.
В Ubuntu 14.04 после выполнения шагов принятого ответа отредактируйте /etc/apache2/conf-available/php5-fpm.conf
<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 3600
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
, затем выполните
#sudo a2enconf php5-fpm
#sudo apache2 restart
Спасибо за предыдущие ответы, они помогли мне, но чтобы все заработало, мне нужно было объединить инструкции из нескольких мест, поэтому я решил написать полный набор команд.
К вашему сведению, я работаю в Ubuntu 14.04, Apache 2.4, и у меня также был запущен modphp по умолчанию, в предыдущих инструкциях также не было необходимости отключать modphp.
Я также нашел http://blog.starcklin.com/2013/08/install-mod-fastcgi-and-php5-fpm-on-ubuntu/ очень информативным и простым.
Просто выполните следующие команды в терминале одну за другой.
Сначала установите необходимые пакеты (я пропускаю php5, так как предполагается, что он уже установлен, добавьте его обратно для первой установки). Также обратите внимание, что в Apache 2.4 и выше вы можете использовать event-mpm вместо worker, см. http://www.vps.net/blog/2013/04/08/apache-mpms-prefork-worker-and-event/ . Мой пример показывает работника, но просто замените слово работник на событие, если вы предпочитаете его использовать.
sudo apt-get install apache2-mpm-worker
sudo apt-get install libapache2-mod-fastcgi php5-fpm
Теперь включите нужные вам моды и отключите те, которые вам не нужны.
sudo a2dismod php5 mpm_prefork
sudo a2enmod actions fastcgi alias mpm_worker
Создайте файл php5.fcgi и дайте веб-серверу разрешение на его использование.
sudo touch /usr/lib/cgi-bin/php5.fcgi
sudo chown -R www-data:www-data /usr/lib/cgi-bin
Создайте глобальную конфигурацию для вставки php5-fpm
sudo nano /etc/apache2/conf-available/php5-fpm.conf
в следующем (мы будем использовать сокет вместо IP-адреса)
<IfModule mod_fastcgi.c>
AddHandler php5.fcgi .php
Action php5.fcgi /php5.fcgi
Alias /php5.fcgi /usr/lib/cgi-bin/php5.fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5.fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 3600
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
Включить php5-fpm conf
sudo a2enconf php5-fpm
Перезапустите apache и fpm
sudo service apache2 restart && sudo service php5-fpm restart
В соответствии с другими инструкциями вставьте следующее в новый просматриваемый файл php на вашем веб-сервере.
<?php phpinfo();
Откройте файл, который вы только что отредактировали, в веб-браузере. Если вы видите «FPM / FastCGI» рядом с Server API, вы теперь используете PHP с FastCGI!
В случае, если кто-то делает это в Ubuntu 16.04 и понизил версию с php 7 до php 5.6 (Ондрей), вам необходимо заменить несколько строк (основываясь на ответе JDawgg):
sudo apt-get install libapache2-mod-fastcgi php5-fpm для:
sudo apt-get install libapache2-mod-fastcgi php5.6-fpm
sudo a2dismod php5 mpm_prefork для:
sudo a2dismod php5.6 mpm_prefork
sudo nano /etc/apache2/conf-available/php5-fpm.conf to:
sudo vim /etc/apache2/conf-available/php5.6-fpm.conf
Процесс установки php5.6-fpm уже создал файл, поэтому создавать его не нужно. Однако я удалил весь существующий текст в этом файле, так как он предназначался для mod_php5.
<IfModule mod_fastcgi.c>
AddHandler php5.fcgi .php
Action php5.fcgi /php5.fcgi
Alias /php5.fcgi /usr/lib/cgi-bin/php5.fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5.fcgi -socket /var/run/php/php5.6-fpm.sock -pass-header Authorization -idle-timeout 3600
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
Я изменил путь с /var/run/php5-fpm.sock на /var/run/php/php5.6-fpm.sock, так как файл находился там.
sudo a2enconf php5-fpm to:
sudo a2enconf php5.6-fpm
sudo service apache2 restart & amp; sudo service php5-fpm перезапускается до:
sudo service apache2 restart && sudo service php5.6-fpm restart
Надеюсь, это поможет другим новичкам, таким как я:)
Примечание для нового:
В учебнике оно начинается с переключения на пользователя root с помощью:
sudo su
В моем случае я просто добавлял эти команды sudo
вместо переключения пользователей, поэтому я буду документировать свои шаги таким образом.
Начало
Шаг первый: Установите MPache (многопроцессорные модули) Apache Worker
sudo apt-get install apache2-mpm-worker
Это заменит установленную мной префорку, которая используется по умолчанию при установке Apache.
Шаг 2: Установите PHP5 и необходимые модули
sudo apt-get install libapache2-mod-fastcgi php5-fpm php5
В этот момент вы можете получить ошибку при установке 'libapache2-mod-fastcgi':
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libapache2-mod-fastcgi is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or is only available from another source
E: Package 'libapache2-mod-fastcgi' has no installation candidate
This часть не указана в приведенном выше руководстве
Чтобы согласовать это, репозиторий multiverse
необходимо добавить к подходящим источникам.
Для этого:
sudo nano /etc/apt/sources.list
К которым я добавил следующие строки:
deb http://archive.ubuntu.com/ubuntu precise multiverse
deb http://archive.ubuntu.com/ubuntu precise-updates multiverse
deb http://security.ubuntu.com/ubuntu precise-security multiverse
precise
в данном случае относится к моей версии Ubuntu " Precise Ящер ».
Итак, теперь сохраните эти изменения и вернитесь к терминалу:
sudo apt-get update
и снова:
sudo apt-get install libapache2-mod-fastcgi php5-fpm php5
, который теперь будет (должен) работать.
Теперь включите эти модули Apache:
sudo a2enmod actions fastcgi alias
перезапустите apache
sudo service apache2 restart
Шаг 3: Конфигурация Apache
Чтобы заставить Apache работать с PHP-FPM, мы нужна следующая конфигурация:
<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
#directory statement mult be on multiple lines
</IfModule>
Примечание:
Если вы используете более старую версию Apache (2.3.x или старше), оставьте
<Directory /usr/lib/cgi-bin> Require all granted </Directory>
Вы можете проверить установленную версию с помощью команды
apache2 -version
. Вы можете поместить ее в глобальную конфигурацию Apache (чтобы она была включена для всех vhosts). Например, в /etc/apache2/conf.d/php5-fpm.conf
(этот файл не существует, поэтому вы должны его создать), или вы можете поместить его в каждый vhost, который должен использовать PHP-FPM.
Я выбрал глобальный маршрут, поэтому:
sudo nano /etc/apache2/conf.d/php5-fpm.conf
вставьте в блок кода выше и сохраните, выйдите. Этот новый файл будет автоматически загружен конфигурацией по умолчанию Apache, которая загружает все файлы в каталог /etc/apache2/conf.d/
.
перезапустите Apache:
sudo service apache2 restart
Теперь создайте следующий файл PHP в корне документа /var/www
:
sudo nano /var/www/info.php
Добавьте:
<?php phpinfo();
save & амп; выход.
Теперь мы вызываем этот файл в браузере (например, http://your-server-ip/info.php
)
Под Server API вверху вы должны увидеть FPM/FastCGI
.
Успех!
Для получения дополнительной информации, например, как изменить PHP-FPM для использования сокета Unix вместо TCP-порта по умолчанию или как настроить это для отдельных виртуальных хостов вместо всех из них см. учебник по исходным ссылкам в верхней части.