Наконец-то я нашел хороший учебник, предназначенный именно для этого. Я опишу шаги, которые я предпринял, поскольку у меня уже был установлен стек LAMP, но полное руководство можно найти здесь здесь.
Примечание для нового:
В учебном пособии он начинается с переключения на пользователя root с помощью:
sudo su
В моем случае я просто поставил префикс этим командам sudo
вместо того, чтобы переключать пользователей, я буду документировать свои шаги таким образом.
Начать
Шаг первый: Установите Apache Worker MPM (Многопроцессорные модули)
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... DoneBuilding dependency tree Reading state information... DonePackage 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 sourceE: Package 'libapache2-mod-fastcgi' has no installation candidate
Этой части нет в приведенном выше руководстве
Чтобы примирить это, в multiverse
репозиторий должен быть добавлен в apt sources.
Чтобы сделать это:
sudo nano /etc/apt/sources.list
К которому я добавил следующие строки:
deb http://archive.ubuntu.com/ubuntu precise multiversedeb http://archive.ubuntu.com/ubuntu precise-updates multiversedeb http://security.ubuntu.com/ubuntu precise-security multiverse
precise
в данном случае имеется в виду моя версия Ubuntu "Точный Панголин".
Итак, теперь сохраните эти изменения и вернитесь к терминалу:
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 (чтобы он был включен для всех хостов), например, в /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();
сохранить и выйти.
Теперь мы вызываем этот файл в браузере (например http://your-server-ip/info.php
)
Под Серверный API вверху вы должны увидеть FPM/FastCGI
.
Успех!
Для получения дополнительной информации, например, о том, как изменить PHP-FPM на использование сокета unix вместо TCP-порта по умолчанию или как настроить это для отдельных виртуальных хостов, а не для всех, см. Исходный учебник, связанный вверху.