PHP, Apache, Ubuntu · 4 min read · Jan 09, 2026

Использование PHP5-FPM с Apache2 на Ubuntu 12.04 LTS

Использование PHP5-FPM с Apache2 на Ubuntu 12.04 LTS

Версия 1.0
Автор: Фалко Тимме
Следите за мной в Twitter

Это руководство показывает, как установить веб-сервер Apache2 на сервере Ubuntu 12.04 LTS с поддержкой PHP5 (через PHP-FPM) и MySQL. PHP-FPM (FastCGI Process Manager) — это альтернативная реализация PHP FastCGI с дополнительными функциями, полезными для сайтов любого размера, особенно для более загруженных сайтов.

Я не даю никаких гарантий, что это сработает для вас!

1 Предварительная заметка

В этом руководстве я использую имя хоста server1.example.com с IP-адресом 192.168.0.100. Эти настройки могут отличаться для вас, поэтому вам нужно заменить их, где это необходимо.

Я выполняю все шаги в этом руководстве с правами root, поэтому убедитесь, что вы вошли как root:

sudo su

2 Установка MySQL 5

Сначала мы устанавливаем MySQL 5 следующим образом:

apt-get install mysql-server mysql-client

Вам будет предложено ввести пароль для пользователя root MySQL — этот пароль действителен для пользователя root@localhost, а также для [email protected], поэтому нам не нужно будет указывать пароль root MySQL вручную позже:

Новый пароль для пользователя MySQL “root”: <– вашпарольrootsql
Повторите пароль для пользователя MySQL “root”: <– вашпарольrootsql

3 Установка Apache2

Apache2 доступен как пакет Ubuntu. Нам нужен пакет apache2-mpm-worker, который мы можем установить следующим образом:

apt-get install apache2-mpm-worker

Теперь направьте ваш браузер на http://192.168.0.100, и вы должны увидеть страницу-заглушку Apache2 (Работает!):

Корневая директория документа Apache по умолчанию — /var/www на Ubuntu, а конфигурационный файл — /etc/apache2/apache2.conf. Дополнительные конфигурации хранятся в подкаталогах директории /etc/apache2, таких как /etc/apache2/mods-enabled (для модулей Apache), /etc/apache2/sites-enabled (для виртуальных хостов) и /etc/apache2/conf.d.

4 Установка PHP5

Мы можем заставить PHP5 работать в Apache2 через PHP-FPM и модуль mod_fastcgi Apache, который мы устанавливаем следующим образом:

apt-get install libapache2-mod-fastcgi php5-fpm php5

PHP-FPM — это демон-процесс (с init-скриптом /etc/init.d/php5-fpm), который запускает сервер FastCGI на порту 9000.

Далее включите следующие модули Apache…

a2enmod actions fastcgi alias

… и перезапустите Apache:

/etc/init.d/apache2 restart

5 Конфигурация Apache

Чтобы Apache работал с PHP-FPM, нам нужна следующая конфигурация:

| 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 |

(Чтобы узнать больше о директиве FastCgiExternalServer, посмотрите на http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html#FastCgiExternalServer.)

Вы можете поместить это в глобальную конфигурацию Apache (чтобы это было включено для всех виртуальных хостов), например, в /etc/apache2/conf.d/php5-fpm.conf (этого файла не существует, поэтому вам нужно создать его), или вы можете разместить это в каждом виртуальном хосте, который должен использовать PHP-FPM. Я хочу использовать PHP-FPM с виртуальным хостом по умолчанию, поэтому я открываю его конфигурационный файл виртуального хоста /etc/apache2/sites-available/default…

vi /etc/apache2/sites-available/default

… и помещаю следующий раздел где-то между :

| [...] 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 [...] |

Перезапустите Apache после этого:

/etc/init.d/apache2 restart

Теперь создайте следующий PHP-файл в корневой директории документа /var/www:

vi /var/www/info.php

| |

Теперь мы вызываем этот файл в браузере (например, http://192.168.0.100/info.php):

Как вы видите, PHP5 работает, и он работает через FPM/FastCGI, как показано в строке Server API. Если вы прокрутите вниз, вы увидите все модули, которые уже включены в PHP5. MySQL не указан там, что означает, что у нас еще нет поддержки MySQL в PHP5.

6 Получение поддержки MySQL в PHP5

Чтобы получить поддержку MySQL в PHP, мы можем установить пакет php5-mysql. Также неплохо установить некоторые другие модули PHP5, так как они могут понадобиться для ваших приложений. Вы можете искать доступные модули PHP5 следующим образом:

apt-cache search php5

Выберите нужные и установите их следующим образом:

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Теперь перезагрузите PHP-FPM:

/etc/init.d/php5-fpm reload

Теперь обновите http://192.168.0.100/info.php в вашем браузере и прокрутите вниз до раздела модулей снова. Теперь вы должны найти много новых модулей там, включая модуль MySQL:

7 phpMyAdmin

phpMyAdmin — это веб-интерфейс, через который вы можете управлять вашими базами данных MySQL. Неплохо установить его:

apt-get install phpmyadmin

Вы увидите следующие вопросы:

Веб-сервер для автоматической перенастройки: <– apache2
Настроить базу данных для phpmyadmin с dbconfig-common? <– Нет

После этого вы можете получить доступ к phpMyAdmin по адресу http://192.168.0.100/phpmyadmin/:

8 Настройка PHP-FPM для использования Unix-сокета

По умолчанию PHP-FPM слушает на порту 9000 на 127.0.0.1. Также возможно заставить PHP-FPM использовать Unix-сокет, что избегает накладных расходов TCP. Для этого откройте /etc/php5/fpm/pool.d/www.conf…

vi /etc/php5/fpm/pool.d/www.conf

… и измените строку listen следующим образом:

| [...] ;listen = 127.0.0.1:9000 listen = /tmp/php5-fpm.sock [...] |

Затем перезагрузите PHP-FPM:

/etc/init.d/php5-fpm reload

Далее пройдите через вашу конфигурацию Apache и все ваши виртуальные хосты и измените строку FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization на FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /tmp/php5-fpm.sock -pass-header Authorization, например, так:

vi /etc/apache2/sites-available/default

| [...] 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 /tmp/php5-fpm.sock -pass-header Authorization [...] |

Наконец, перезагрузите Apache:

/etc/init.d/apache2 reload

9 Ссылки

Об авторе

Фалко Тимме является владельцем Timme Hosting (ультрабыстрая веб-хостинг на nginx). Он является ведущим куратором HowtoForge (с 2005 года) и одним из основных разработчиков ISPConfig (с 2000 года). Он также внес вклад в книгу O’Reilly “Администрирование систем Linux”.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.