Установка LAMP стека на Ubuntu: настройка сервера
LAMP — это стек веб-разработки, который проверен временем и практикой. Он позволяет без лишних сложностей развернуть полноценный веб-сервер, ведь все его компоненты бесплатны и поддерживаются активным сообществом. Рассказываем, как установить LAMP и создать устойчивую основу для работы сайтов и веб-приложений.

Что такое LAMP
LAMP — классический стек технологий для запуска сайтов и приложений. В названии зашифрованы первые буквы таких компонентов, как Linux, Apache, MySQL и PHP. Вместе технологии образуют полноценную среду, в которой веб-ресурсы будут безопасно и стабильно работать.
Linux — операционная система сервера. Она отвечает за стабильную работу, безопасность и управление ресурсами. Большинство веб-серверов работают именно на Linux, поскольку эта операционка известна надежностью и гибкостью.
Apache — веб-сервер, который обрабатывает пользовательские запросы и выдает веб-страницы. Он управляет хостами, SSL-сертификатами, маршрутизацией и балансировкой нагрузки.
MySQL — СУБД, которая используется для хранения данных веб-ресурса. Она поддерживает целостность информации и обеспечивает быстрый доступ к нужным записям.
PHP — серверный язык программирования для создания динамических страниц. Он используется для написания скриптов для управления серверами, резервного копирования данных, парсинга и других важных задач.
LAMP
LAMP остается надежным выбором для многих проектов, особенно для систем управления контентом (CMS) вроде WordPress. Однако сегодня также широко используются стеки на основе Nginx (LEMP), а также облачные бессерверные и контейнеризированные (Docker, Kubernetes) решения. Выбор стека зависит от требований проекта к производительности, масштабируемости и архитектуре.

Подготовка к установке
Перед установкой LAMP нужно подготовить сервер. Так можно снизить риск ошибок и проблем с зависимостями, избежать появления уязвимостей. Подготовка займет немного времени, если действовать по четкому плану.
Обновление системы
Обновите ОС и все предустановленные пакеты с помощью команды:
Первая команда обновляет списки пакетов, вторая — устанавливает обновления для уже установленного ПО.
Обновление поможет предупредить конфликты версий при установке Apache, MySQL и PHP. Многие проблемы при развертывании стека как раз из-за устаревших пакетов. Чтобы потом не тратить время на устранение ошибок, лучше проверить все заранее.
Подготовка облачного сервера
Перед установкой LAMP нужно подключиться к серверу по SSH с помощью учетных данных, выданных провайдером. SSH-доступ позволит удаленно управлять сервером и выполнять все необходимые команды.
Где развернуть LAMP
Для тестирования и разработки вы можете использовать локальный компьютер или виртуальную машину. Для продакшн-среды рекомендуем облачные решения, например, виртуальные машины Evolution Compute от Cloud.ru с предустановленными конфигурациями и гибкими тарифами.
После подключения выполните базовые настройки безопасности. Для этого создайте пользователя без прав администратора и поставьте ограничения для входа под root-аккаунтом. Это поможет снизить риски компрометации сервера.
Шаг 1. Установка Apache
Apache — веб-сервер, принимающий HTTP-запросы от пользователей Он обрабатывает их и возвращает запрошенные страницы. После Apache запросы поступают к PHP и другим компонентам LAMP-стека.
После установки Apache работает в качестве системной службы. Он автоматически запускается и слушает входящие подключения.
Команды для установки
Установите Apache из официальных репозиториев:
Когда завершится процесс установки, Apache автоматически запустится. Убедитесь, что он нормально работает, проверив статус:
Если служба не выдает ошибок, значит, Apache готов к нормальной работе.
Настройка брандмауэра
За безопасность на сервере отвечает брандмауэр UFW. Проверьте, что он работает:
Создайте в настройках UFW профиль для Apache и разрешите принимать HTTP-трафик на порту 80, применив команду:
Проверьте, применились ли новые правила:
Чтобы Apache мог работать с HTTP-запросами, в настройках брандмауэра должен появиться его профиль и открытый порт 80.
Проверка работы Apache
Для проверки работы веб-сервера Apache, откройте в своем браузере его IP-адрес:
Если установка прошла успешно, вы увидите стандартную приветственную страницу Apache2. Это значит, что Apache активно обрабатывает запросы.
Убедитесь, что Apache использует порт 80. Для этого выполните следующую команду:
Настройка HTTPS (SSL/TLS)
Для защиты передаваемых данных настоятельно рекомендуется настроить шифрование HTTPS. Для этого:
Установите клиент Certbot для получения бесплатных сертификатов от Let's Encrypt:
Получите и настройте сертификат для вашего домена:
Брандмауэр UFW должен разрешать трафик на порт 443 (HTTPS). Если вы использовали профиль Apache, он открывает только порт 80. Для открытия обоих портов можно использовать профиль Apache Full:
Шаг 2. Установка MySQL
MySQL — система для управления базами данных, где хранится и обрабатывается информация веб-ресурсов. В LAMP-стеке она помогает работать с пользователями, контентом, настройками.
После установки MySQL запускается как системная служба — в фоновом режиме. Она через PHP обрабатывает запросы от веб-приложений.
Команда для установки
Установите сервер MySQL:
После установки MySQL автоматически запустится, но все же проверьте состояние системы:
Если система нормально запускается, можно переходить к настройкам базы данных.
Во многих дистрибутивах Linux, включая Ubuntu, пакет mysql-server теперь часто является метапакетом, устанавливающим MariaDB — полностью совместимый и активно развиваемый форк MySQL. Все приведённые команды работают с MariaDB идентично.
Настройка безопасности MySQL
Основные команды:
Действие | Команда | Что делает |
Базовая настройка безопасности | sudo mysql_secure_installation | Помогает задать пароль для пользователя root, удалить тестовую базу данных и ненужных пользователей |
Вход в MySQL под учетной записью root | sudo mysql | Подключение к MySQL с правами администратора |
Установка или смена пароля root | ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongPassword'; | Задает надежный пароль и методы аутентификации |
Удаление анонимных пользователей | DELETE FROM mysql.user WHERE User=''; | Удаляет безымянные учетные записи, которые могут использовать злоумышленники |
Запрет удаленного доступа под учетной записью root | UPDATE mysql.user SET Host='localhost' WHERE User='root'; | Разрешает доступ root только на локальной машине |
Удаление тестовой базы данных | DROP DATABASE IF EXISTS test; | Убирает базу данных, которая не будет использоваться в продакшене |
Удаление прав доступа и применение изменений | FLUSH PRIVILEGES; | Применяет изменения в правах доступа, сделанные напрямую в таблицах MySQL (через UPDATE, INSERT). При использовании команд GRANT или CREATE USER выполняется автоматически. |
Просмотр пользователей | SELECT User, Host FROM mysql.user; | Позволяет проверить, какие в системе есть учетные записи |
Проверка метода аутентификации | SELECT user, host, plugin FROM mysql.user; | Помогает выявить небезопасные или устаревшие методы входа |
Создание пользователя приложения | CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword'; | Создает пользователя для веб-приложения перед выдачей прав |
Проверка назначенных полномочий | SHOW GRANTS FOR 'app_user'@'localhost'; | Контроль доступа и аудит прав пользователя |
Выдача прав пользователю | GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app_user'@'localhost'; | Дает приложению права на базу данных mydb |
В MySQL 8.0 и выше используется более безопасный плагин аутентификации caching_sha2_password по умолчанию. Приведённая команда использует его. Если вам необходимо использовать старый плагин mysql_native_password для совместимости с некоторыми приложениями, выполните:
Проверка работы MySQL
Чтобы убедиться, что СУБД MySQL работает надлежащим образом, попробуйте подключиться к ее серверу под пользователем root. Примените команду:
Если увидите консоль MySQL, значит, сервер работает. Для уверенности можете посмотреть список баз данных. Используйте команду:
Если все базы видны, значит, система MySQL готова к работе в составе LAMP-стека.
Установка PHP
Установите PHP и модули, которые нужны для работы с базами данных и веб-приложениями:
Что включено в команду:
libapache2-mod-php — интеграция PHP с Apache;
php-mysql — работа с базами данных MySQL;
php-curl — HTTP-запросы к внешним сервисам;
php-mbstring и php-xml — поддержка строк и XML;
php-gd — работа с изображениями;
php-zip — работа с архивами.
Чтобы применить изменения, перезапустите Apache командой:
Проверка установки PHP
Проверьте в системе версию PHP:
Создайте файл, который поможет проверить интеграцию PHP с Apache:
Добавьте в файл код:
Сохраните файл и откройте его в браузере:
Файл info.php раскрывает детали конфигурации вашего сервера и должен быть удален сразу после проверки. Не оставляйте его на рабочем сервере. Для удаления выполните команду:
Настройка виртуальных хостов
Виртуальные хосты (VirtualHosts) Apache — это не виртуальные машины, а механизм для запуска нескольких веб-сайтов на одном физическом или виртуальном сервере. Они нужны, если хотите запустить несколько сайтов на одном сервере с разными доменами или поддоменами либо отделить тестовые веб-ресурсы от рабочих. Apache поддерживает виртуальные хосты «из коробки», дополнительное ПО не потребуется.
Можно использовать виртуальные машины Evolution Compute от Cloud.ru с готовыми конфигурациями вычислительных мощностей.
Создание директорий и прав доступа
Для каждого сайта рекомендуется создать свою директорию в каталоге /var/www. Пример для сайта example.com:
Затем назначьте владельца директории. Это может быть пользователь, от имени которого вы работаете и используемая Apache группа www-data. Как выглядит команда:
Затем установите корректные права доступа, чтобы Apache мог читать файлы сайта. Пример:
Для проверки создайте тестовый файл:
Можно добавить простой HTML-текст для проверки работы виртуального хоста.
Создание и запуск виртуальных хостов
Конфигурации виртуальных хостов вы найдете в каталоге Apache /etc/apache2/sites-available. Создайте там новый конфигурационный файл:
Как может выглядеть стандартная конфигурация виртуального хоста:
Сохраните созданный файл и запустите сайт. Пример команды:
Чтобы применить изменения, перезапустите веб-сервер:
Если у вас несколько сайтов, на всякий случай отключите стандартный виртуальный хост:
Проверка работы виртуального хоста
Чтобы проверить работу виртуального хоста в Ubuntu, убедитесь, что все в порядке с конфигурацией. Для этого выполните команду:
Если все в порядке, появится сообщение Syntax OK. Увидев его, перезапустите веб-сервер. Команды:
Потом откройте браузер и перейдите по адресу виртуальной машины, например, http://example.com. Если отображается сайт, значит, хост нормально работает. Если домен пока не зарегистрирован, добавьте его в локальный файл /etc/hosts и укажите строку 127.0.0.1 example.com. Это необходимо, чтобы браузер направлял запросы на локальный сервер.
Дополнительно можно применять команду curl -I http://example.com, которая показывает заголовки HTTP-ответа. Если код ответа 200,подключение произошло успешно.
Чтобы следить за настройками виртуального хоста, смотрите логи Apache. В файле /var/log/apache2/error.log отображаются ошибки, в /var/log/apache2/access.log — запросы.
Заключение
Выполнив инструкции, вы получите LAMP-стек, который готов поддерживать работу веб-приложений, блогов, интернет-магазинов и онлайн-сервисов. Apache обрабатывает запросы пользователей, MySQL — сохраняет данные, PHP — отвечает за логику веб-ресурса. Чтобы проект работал стабильно, не забывайте о безопасности, своевременных обновлениях компонентов, резервном копировании и мониторинге сервера.
