Установка LEMP (Nginx + MySQL + PHP) на Ubuntu 12.04
О чём этот материал
LEMP — это сочетание Linux, Nginx, MySQL и PHP (или Perl/Python). Он похож на LAMP, но вместо Apache использует Nginx, который обычно легче использует ресурсы и лучше масштабируется при больших нагрузках. Этот материал предназначен для систем с уже установленной Ubuntu 12.04 и включает команды в терминале.
Важно: Ubuntu 12.04 устарела и не получает обновлений безопасности. По возможности используйте более свежую LTS‑версию Ubuntu.
Nginx vs Apache
Nginx — это свободный веб‑сервер, который при высокой нагрузке часто работает быстрее и потребляет меньше памяти, чем Apache. При лёгкой нагрузке разница несущественна. Apache мощный и гибкий, но в тяжёлых сценариях может требовать значительно больше оперативной памяти.
Важно: если на системе уже запущен Apache, его нужно остановить, чтобы Nginx мог слушать порты 80/443.
Предварительные требования
- Доступ к терминалу с правами sudo.
- Ubuntu 12.04 установлена и имеет сетевой доступ.
- Свободные порты 80 и 443 или перенастроенный брандмауэр.
Установка Nginx
В терминале выполните:
sudo add-apt-repository ppa:nginx/stable
sudo apt-get update
sudo apt-get install nginxЭта команда добавит PPA Nginx и установит стабильную версию.
Если Apache запущен, остановите его:
sudo service apache2 stopЗапустите Nginx:
sudo service nginx startЕсли команда не сработала, используйте альтернативный способ:
sudo /etc/init.d/nginx startОткройте браузер и перейдите на http://localhost или на IP‑адрес сервера. Вы должны увидеть стартовую страницу Nginx.

Установка и настройка PHP
PHP устанавливается просто, но для работы с Nginx требуется PHP‑FPM.
Установите PHP и необходимые модули:
sudo apt-get install php5-cli php5-fpm php5-mysqlМодуль php5-fpm обеспечивает взаимодействие PHP с Nginx через FastCGI.
Настройка Nginx для работы с PHP
Откройте файл конфигурации сайта по умолчанию:
sudo nano /etc/nginx/sites-available/defaultНайдите строку с index и добавьте index.php перед точкой с запятой. Пример:
index index.html index.htm index.php;Ниже найдите блок для обработки PHP и приведите его в рабочее состояние — добавьте директиву try_files и раскомментируйте блок. Пример рабочего блока:
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone
fastcgi_pass 127.0.0.1:9000;
# With php5-fpm;
# fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
Сохраните (Ctrl+O) и выйдите (Ctrl+X).
Перезапустите Nginx:
sudo service nginx restartТестирование PHP
Создайте файл с информацией о PHP:
sudo nano /usr/share/nginx/www/phpinfo.phpВставьте:
Сохраните и откройте в браузере http://localhost/phpinfo.php или http://your-ip-address/phpinfo.php. Если страница с информацией PHP отображается, PHP‑FPM работает правильно.

Установка MySQL
Установите сервер MySQL:
sudo apt-get install mysql-serverВо время установки вам предложат задать пароль для пользователя root MySQL.

После установки MySQL доступен и настроен как часть стека LEMP.
Опционально: установка phpMyAdmin
phpMyAdmin не обязателен, но удобен для управления базами.
sudo apt-get install phpmyadminПри появлении запроса выбора веб‑сервера отметьте ни один (Select none) и нажмите OK. Когда спросят про конфигурацию базы через dbconfig‑common, можно выбрать No.


После установки откройте конфигурацию Nginx и добавьте блоки для phpMyAdmin после блока обработки PHP:
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/*/phpmyadmin last;
}
Сохраните файл и перезапустите Nginx:
sudo service nginx restartПосле этого phpMyAdmin будет доступен по адресу http://localhost/phpmyadmin или http://your-ip-address/phpmyadmin.
Модель обработки запроса в LEMP — коротко
- Клиент делает HTTP(S) запрос на порт 80/443.
- Nginx принимает запрос, ищет статический ресурс.
- Если ресурс — PHP, Nginx передаёт запрос в PHP‑FPM через FastCGI (TCP 127.0.0.1:9000 или UNIX‑сокет).
- PHP‑FPM выполняет скрипт и возвращает результат Nginx.
- Nginx отправляет ответ клиенту.
Это важная последовательность для понимания запросов, логов и отладки.
Практические советы по безопасности и доработке
- Обновите систему и пакеты, если это возможно. Ubuntu 12.04 не поддерживается — миграция рекомендована.
- В php.ini установите cgi.fix_pathinfo = 0, чтобы предотвратить обходы путей.
- Используйте резервные копии конфигураций и данных перед изменениями.
- Защитите phpMyAdmin: ограничьте доступ по IP или добавьте HTTP‑аутентификацию в Nginx.
- Настройте firewall (ufw/iptables) и закройте ненужные порты.
Отладка и распространённые проблемы
- Nginx не стартует: проверьте синтаксис конфигурации
sudo nginx -tи журналы в /var/log/nginx/. - PHP‑страницы не обрабатываются: проверьте, что php5-fpm запущен (
sudo service php5-fpm status) и fastcgi_pass соответствует адресу/сокету. - Белая страница или 502 Bad Gateway: вероятно, PHP‑FPM упал или listening‑адрес не совпадает.
- Проблемы с правами на файлы: убедитесь, что веб‑пользователь (обычно www-data) имеет доступ к документам.
Альтернативные подходы
- LAMP: использовать Apache вместо Nginx, если вам нужна модульная поддержка .htaccess и старые модули.
- Контейнеризация: запускать Nginx, PHP‑FPM и MySQL в Docker‑контейнерах для изоляции и простоты развёртывания.
- Современные дистрибутивы: использовать Ubuntu 20.04/22.04 и современные версии PHP (7.x/8.x) и MySQL/MariaDB.
Чек‑лист для развёртывания (роль: системный инженер)
- Есть доступ по sudo.
- Резервная копия системы/данных.
- Установлен и протестирован Nginx.
- Установлен php5-fpm и настроен блок location для .php.
- Создан тестовый phpinfo.php и проверена его работа.
- Установлен и настроен mysql-server.
- При необходимости установлен phpMyAdmin и настроен блок Nginx.
- Перезапущен Nginx, проверены логи и доступность сервисов.
Когда этот подход может не подойти
- Если требуются новые версии PHP или патчи безопасности, Ubuntu 12.04 не подходит — лучше обновить ОС.
- Для сайтов, сильно завязанных на .htaccess, проще использовать Apache.
- Если нужна быстрая изоляция и переносимость — рассмотрите контейнеры.
Мини‑методология тестирования после установки
- Проверка статического контента (index.html).
- Проверка динамического контента (phpinfo.php).
- Подключение к MySQL из командной строки и создание тестовой БД.
- Загрузка простого PHP‑приложения и проверка логов.
Резюме
Установка LEMP на Ubuntu 12.04 включает три основных шага: установка Nginx, настройка PHP‑FPM и инсталляция MySQL. Дополнительно можно подключить phpMyAdmin для удобного управления базами. Для производственного использования рекомендуется применять более свежие версии ОС и PHP, а также соблюдать базовые правила безопасности.
Ключевые файлы и команды, которые вы использовали:
- /etc/nginx/sites-available/default — конфигурация сайта.
- /usr/share/nginx/www/phpinfo.php — тестовый файл PHP.
- sudo service nginx restart — перезапуск Nginx.
Примечание: переход на современные версии Ubuntu и PHP заметно упростит поддержку и повысит безопасность.
Похожие материалы
Herodotus — Android‑троян и защита
Как включить новый Пуск в Windows 11
Панель полей сводной таблицы в Excel — быстрый разбор
Включение нового меню Пуск в Windows 11
Дубликаты Диспетчера задач в Windows 11 — как исправить