Установка сервера · 5 min read · Dec 27, 2025
Установка Nginx с поддержкой PHP5 (и PHP-FPM) и MySQL (LEMP) на Ubuntu 12.04 LTS
Nginx (произносится как “engine x”) — это бесплатный, открытый, высокопроизводительный HTTP-сервер. Nginx известен своей стабильностью, богатым набором функций, простой конфигурацией и низким потреблением ресурсов. Этот учебник показывает, как установить Nginx на сервер Ubuntu 12.04 LTS с поддержкой PHP5 (через PHP-FPM) и поддержкой MySQL (LEMP = L inux + nginx (произносится как “ e ngine x”) + M ySQL + P HP).
Я не даю никаких гарантий, что это сработает для вас!
1 Предварительная заметка
В этом учебнике я использую имя хоста server1.example.com с IP-адресом 192.168.0.100. Эти настройки могут отличаться для вас, поэтому вам нужно заменить их, где это необходимо.
Я выполняю все шаги в этом учебнике с правами root, поэтому убедитесь, что вы вошли как root:
sudo su2 Установка MySQL 5
Чтобы установить MySQL, мы выполняем
apt-get install mysql-server mysql-client Вам будет предложено ввести пароль для пользователя root MySQL — этот пароль действителен для пользователя root@localhost, а также [email protected], поэтому нам не нужно указывать пароль root MySQL вручную позже:
Новый пароль для пользователя MySQL “root”: <– вашпарольsqlroot
Повторите пароль для пользователя MySQL “root”: <– вашпарольsqlroot
3 Установка Nginx
Nginx доступен как пакет для Ubuntu 12.04, который мы можем установить следующим образом:
apt-get install nginxЗапустите nginx после этого:
/etc/init.d/nginx startВведите IP-адрес или имя хоста вашего веб-сервера в браузере (например, http://192.168.0.100), и вы должны увидеть следующую страницу:

Корневая директория по умолчанию для nginx на Ubuntu 12.04 — /usr/share/nginx/www.
4 Установка PHP5
Мы можем заставить PHP5 работать в nginx через PHP-FPM (PHP-FPM (FastCGI Process Manager) — это альтернативная реализация PHP FastCGI с некоторыми дополнительными функциями, полезными для сайтов любого размера, особенно более загруженных сайтов), который мы устанавливаем следующим образом:
apt-get install php5-fpmPHP-FPM — это демон-процесс (с инициализационным скриптом /etc/init.d/php5-fpm), который запускает сервер FastCGI на порту 9000.
5 Настройка nginx
Конфигурация nginx находится в /etc/nginx/nginx.conf, который мы сейчас откроем:
vi /etc/nginx/nginx.confКонфигурация проста для понимания (вы можете узнать больше об этом здесь: http://wiki.nginx.org/NginxFullExample и здесь: http://wiki.nginx.org/NginxFullExample2)
Сначала (это необязательно) настройте количество рабочих процессов и установите keepalive_timeout на разумное значение:
| [...] worker_processes 4; [...] keepalive_timeout 2; [...] |
Виртуальные хосты определяются в контейнерах server {}. Стандартный виртуальный хост определяется в файле /etc/nginx/sites-available/default — давайте изменим его следующим образом:
vi /etc/nginx/sites-available/default| [...] server { listen 80; ## listen for ipv4; this line is default and implied listen [::]:80 default ipv6only=on; ## listen for ipv6 root /usr/share/nginx/www; index index.php index.html index.htm; # Сделать сайт доступным по адресу http://localhost/ server_name _; location / { # Сначала попытка обслужить запрос как файл, затем # как директорию, затем вернуться к index.html try_files $uri $uri/ /index.html; # Раскомментируйте, чтобы включить naxsi в этом местоположении # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; deny all; } # Только для nginx-naxsi: обработка отклоненных запросов #location /RequestDenied { # Например, вернуть код ошибки #return 418; #} #error_page 404 /404.html; # перенаправить страницы ошибок сервера на статическую страницу /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/www; } # передать PHP-скрипты серверу FastCGI, слушающему на 127.0.0.1:9000 # location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } # запретить доступ к файлам .htaccess, если корневая директория Apache # совпадает с корневой директорией nginx # location ~ /\.ht { deny all; } } [...] |
Раскомментируйте обе строки listen, чтобы сделать nginx доступным на порту 80 IPv4 и IPv6.
servername ; делает это стандартным виртуальным хостом (конечно, вы также можете указать здесь имя хоста, например www.example.com).
Я добавил index.php в строку индекса. root /usr/share/nginx/www; означает, что корневая директория — это каталог /usr/share/nginx/www.
Важная часть для PHP — это блок location ~ .php$ {}. Раскомментируйте его, чтобы включить его. Обратите внимание, что я добавил строку try_files $uri =404; для предотвращения нулевых уязвимостей (см. http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP и http://forum.nginx.org/read.php?2,88845,page=3). В качестве альтернативы, если вы не хотите использовать строку try_files $uri =404;, вы можете установить cgi.fix_pathinfo = 0; в /etc/php5/fpm/php.ini (не забудьте перезагрузить PHP-FPM после этого).
Теперь сохраните файл и перезагрузите nginx:
/etc/init.d/nginx reloadТеперь создайте следующий PHP-файл в корневой директории /usr/share/nginx/www:
vi /usr/share/nginx/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-xslXcache — это бесплатный и открытый кэш PHP opcode для кэширования и оптимизации промежуточного кода PHP. Он похож на другие кэши PHP opcode, такие как eAccelerator и APC. Настоятельно рекомендуется установить один из них, чтобы ускорить вашу страницу PHP.
Xcache можно установить следующим образом:
apt-get install php5-xcacheТеперь перезагрузите PHP-FPM:
/etc/init.d/php5-fpm reloadТеперь перезагрузите http://192.168.0.100/info.php в вашем браузере и снова прокрутите вниз до раздела модулей. Теперь вы должны найти много новых модулей, включая модуль MySQL:

7 Настройка 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Затем пройдите через вашу конфигурацию nginx и все ваши виртуальные хосты и измените строку fastcgi_pass 127.0.0.1:9000; на fastcgi_pass unix:/tmp/php5-fpm.sock;, например, так:
vi /etc/nginx/sites-available/default| [...] location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } [...] |
Наконец, перезагрузите nginx:
/etc/init.d/nginx reload8 CGI/Perl скрипты
Если вы хотите обслуживать CGI/Perl скрипты с помощью nginx, пожалуйста, прочитайте этот учебник: Обслуживание CGI-скриптов с помощью Nginx на Debian Squeeze/Ubuntu 11.04
Рекомендуемый способ — использовать fcgiwrap (глава 4).
9 Ссылки
- nginx: http://nginx.net/
- Вики nginx: http://wiki.codemongers.com/Main
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MySQL: http://www.mysql.com/
- Ubuntu: http://www.ubuntu.com/
Об авторе
Фалко Тимме является владельцем Timme Hosting (ультрабыстрая веб-хостинг на nginx). Он является ведущим куратором HowtoForge (с 2005 года) и одним из основных разработчиков ISPConfig (с 2000 года). Он также внес вклад в книгу O’Reilly “Администрирование систем Linux”.
Get new posts in your inbox
No spam. Unsubscribe anytime.