Гид по технологиям

Установка LEMP (Nginx + MySQL + PHP) на Ubuntu 12.04

5 min read Серверы Обновлено 09 Nov 2025
Установка LEMP на Ubuntu 12.04
Установка LEMP на 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.

Стартовая страница 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;
}

Добавление index.php и разблокировка блока обработки PHP

Сохраните (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 работает правильно.

Страница phpinfo с конфигурацией PHP

Установка MySQL

Установите сервер MySQL:

sudo apt-get install mysql-server

Во время установки вам предложат задать пароль для пользователя root MySQL.

Запрос пароля root при установке MySQL

После установки MySQL доступен и настроен как часть стека LEMP.

Опционально: установка phpMyAdmin

phpMyAdmin не обязателен, но удобен для управления базами.

sudo apt-get install phpmyadmin

При появлении запроса выбора веб‑сервера отметьте ни один (Select none) и нажмите OK. Когда спросят про конфигурацию базы через dbconfig‑common, можно выбрать No.

Выбор веб‑сервера при установке phpMyAdmin

Выбор конфигурации базы данных для phpMyAdmin

После установки откройте конфигурацию 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 для phpMyAdmin

Сохраните файл и перезапустите Nginx:

sudo service nginx restart

После этого phpMyAdmin будет доступен по адресу http://localhost/phpmyadmin или http://your-ip-address/phpmyadmin.

Модель обработки запроса в LEMP — коротко

  1. Клиент делает HTTP(S) запрос на порт 80/443.
  2. Nginx принимает запрос, ищет статический ресурс.
  3. Если ресурс — PHP, Nginx передаёт запрос в PHP‑FPM через FastCGI (TCP 127.0.0.1:9000 или UNIX‑сокет).
  4. PHP‑FPM выполняет скрипт и возвращает результат Nginx.
  5. 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.
  • Если нужна быстрая изоляция и переносимость — рассмотрите контейнеры.

Мини‑методология тестирования после установки

  1. Проверка статического контента (index.html).
  2. Проверка динамического контента (phpinfo.php).
  3. Подключение к MySQL из командной строки и создание тестовой БД.
  4. Загрузка простого 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 заметно упростит поддержку и повысит безопасность.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Herodotus — Android‑троян и защита
Кибербезопасность

Herodotus — Android‑троян и защита

Как включить новый Пуск в Windows 11
Windows

Как включить новый Пуск в Windows 11

Панель полей сводной таблицы в Excel — быстрый разбор
Excel

Панель полей сводной таблицы в Excel — быстрый разбор

Включение нового меню Пуск в Windows 11
Windows

Включение нового меню Пуск в Windows 11

Дубликаты Диспетчера задач в Windows 11 — как исправить
Windows

Дубликаты Диспетчера задач в Windows 11 — как исправить

Как посмотреть историю просмотров Reels в Instagram
Социальные сети

Как посмотреть историю просмотров Reels в Instagram