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

Установка LAMP на Ubuntu 24.04 «Noble Numbat»

• 7 min read • Серверы • Обновлено 28 Nov 2025
Установка LAMP на Ubuntu 24.04
Установка LAMP на Ubuntu 24.04

О чём эта инструкция

В этом руководстве подробно показаны базовые и продвинутые шаги по развёртыванию LAMP‑стека на сервере Ubuntu 24.04. Оно будет полезно системным администраторам, девопс-инженерам и разработчикам, которые хотят поднимать веб‑сервисы на собственном сервере.

Важно: команды выполняйте от имени пользователя с правами sudo или от root. Все команды и файлы в статье совместимы с Ubuntu 24.04.

Логотип LAMP и компоненты стека

Предпосылки

  • Установленная Ubuntu 24.04 “Noble Numbat”.
  • Доступ с правами root или пользователя в sudoers.
  • Подключение к интернету для загрузки пакетов.
  • Базовое представление о работе с терминалом и текстовым редактором (nano, vim).

Быстрая модель принятия решения

Если вам нужен лёгкий и широко совместимый стек для PHP‑приложений — LAMP подходит. Для высоконагруженных проектов рассмотрите Nginx + PHP‑FPM и кластерные решения для БД.


Установка Apache

Apache — один из самых распространённых веб‑серверов. Он модульный, надёжен и совместим с множеством модулей и расширений.

Обновите списки пакетов и установите apache2:

sudo apt update

Обновление списков пакетов apt

sudo apt install apache2

Установка пакета apache2

После установки служба Apache запускается автоматически и включается в автозагрузку. Проверьте статус:

sudo systemctl is-enabled apache2
sudo systemctl status apache2

Вы увидите, что сервис включён (enabled) и работает (active (running)).

Проверка статуса служба apache2

Если на сервере включён UFW (Uncomplicated Firewall), откройте HTTP/HTTPS:

sudo ufw allow 'Apache Full'
sudo ufw status

Разрешение трафика HTTP и HTTPS в UFW

Откройте в браузере IP сервера, например http://192.168.5.30/. Вы должны увидеть стандартную страницу Apache (index.html).

Стандартная стартовая страница Apache

Если не знаете IP сервера, проверьте командой:

ip a

Установка MariaDB

MariaDB — свободная реляционная СУБД, совместимая с MySQL. Она часто используется в LAMP вместо оригинального MySQL.

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

sudo apt install mariadb-server

Установка MariaDB через apt

Проверьте, что сервис работает и включён:

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

Статус службы MariaDB

После установки обязательно запустите утилиту безопасной настройки:

sudo mariadb-secure-installation

Основные шаги, которые нужно выполнить в утилите:

  • Нажать Enter, если root‑пароль пока не задан.
  • Не переключаться на unix_socket (обычно ответ n), если хотите задать классический пароль для root.
  • Установить пароль root (Y).
  • Удалить анонимных пользователей (Y).
  • Запретить удалённый вход под root (Y).
  • Удалить тестовую базу данных (Y).
  • Перезагрузить таблицы привилегий (Y).

Ожидаемое завершение:

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Установка PHP и расширений

PHP — серверный язык для веб‑приложений. Здесь мы ставим версию, доступную в репозиториях Ubuntu 24.04 (например, PHP 8.3), и набор распространённых расширений.

Основные пакеты и их назначение:

  • libapache2-mod-php — интеграция PHP с Apache.
  • php-mysql — драйвер для работы с MySQL/MariaDB.
  • php-opcache и php-apcu — ускорение и кэширование PHP.

Установите набор пакетов:

sudo apt install php libapache2-mod-php php-mysql php-curl php-gd php-json php-intl php-bcmath php-opcache php-apcu php-mbstring php-fileinfo php-xml php-soap php-tokenizer php-zip

Установка PHP и расширений

Настройте php.ini для Apache:

sudo nano /etc/php/8.3/apache2/php.ini

Примеры важных изменений. Установите таймзону и лимиты под характеристики сервера:

date.timezone = Europe/Paris
memory_limit = 256M
upload_max_file_size = 64M
max_execution_time = 300

Сохраните и перезапустите Apache:

sudo systemctl restart apache2

Проверка интеграции Apache и PHP

Создайте файл phpinfo в DocumentRoot по умолчанию (/var/www/html):

echo "" > /var/www/html/info.php

Откройте http://192.168.5.30/info.php. Должна отобразиться страница с информацией о PHP: версия, загруженные модули, настройки.

Страница phpinfo: описание версии PHP и модулей

Проверьте, что модуль mysqli или pdo_mysql присутствует:

Раздел с модулем mysqli в phpinfo

Проверьте наличие модулей кеширования APCu/OPcache:

Раздел с APCu в phpinfo

Удалите info.php после проверки, чтобы не раскрывать конфигурацию сервера в продакшене:

sudo rm /var/www/html/info.php

Создание виртуального хоста Apache

Виртуальные хосты позволяют хостить несколько сайтов на одном сервере (например, mysite.com и site2.com).

  1. Создайте структуру каталогов и простой index:
mkdir -p /var/www/mysite/public_html
echo "Welcome to mysite.com" > /var/www/mysite/public_html/index.html
  1. Измените владельца на www-data:
sudo chown -R www-data:www-data /var/www/mysite
  1. Создайте конфигурацию виртуального хоста:
sudo nano /etc/apache2/sites-available/mysite.conf

Вставьте пример конфигурации и измените ServerName на ваш домен:



 ServerAdmin [email protected]

 ServerName mysite.com
 ServerAlias www.mysite.com

 DocumentRoot /var/www/mysite/public_html

 ErrorLog ${APACHE_LOG_DIR}/mysite-error.log
 CustomLog ${APACHE_LOG_DIR}/mysite-access.log combined

  1. Активируйте сайт и проверьте синтаксис Apache:
sudo a2ensite mysite.conf
sudo apachectl configtest

Если синтаксис корректен, вы увидите “Syntax OK”. Перезапустите Apache:

sudo systemctl restart apache2

Создание виртуального хоста Apache

Тестирование виртуального хоста локально

Чтобы протестировать новый виртуальный хост без DNS, добавьте запись в hosts на вашей локальной машине:

  • Windows: C:\Windows\System32\drivers\etc\hosts (запускать как администратор).
  • Linux/Mac: /etc/hosts (редактировать с sudo).

Добавьте строку:

192.168.5.30 mysite.com

Откройте http://mysite.com/ — вы должны увидеть содержимое /var/www/mysite/public_html/index.html.

Тестирование виртуального хоста в браузере

Дополнительные рекомендации по безопасности и эксплуатации

Ниже приведены важные практики для продакшн‑сервера.

Настройка брандмауэра и ограничение доступа

  • Разрешайте только конкретные сервисы (HTTP/HTTPS, SSH) через UFW.
  • Ограничьте доступ по SSH: используйте non‑standard порт, отключите вход под root и включите двухфакторную аутентификацию при возможности.
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enable

Настройка HTTPS с Let’s Encrypt

Для публичных сайтов используйте бесплатные сертификаты Let’s Encrypt и certbot:

sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d mysite.com -d www.mysite.com

certbot автоматически добавит перенаправление с HTTP на HTTPS и обновит конфигурацию Apache.

Резервное копирование баз данных и файлов

  • Дамп БД: используйте mariadb‑dump или mysqldump.
mysqldump -u root -p database_name > database_name.sql
  • Регулярно копируйте /var/www и конфигурационные файлы (/etc/apache2, /etc/php).
  • Храните бэкапы в удалённом хранилище или на отдельном сервере.

Мониторинг и логирование

  • Подключите систему сбора метрик (Prometheus, Grafana) и логов (ELK или облачный сервис).
  • Настройте ротацию логов через logrotate и мониторинг дискового пространства.

Обновления и патчи

  • На продакшне тестируйте обновления на стадии тестирования перед развертыванием.
  • Планируйте окна обслуживания для обновлений пакетов и ядра.

MySQL vs MariaDB — выбор СУБД

MariaDB является форком MySQL. Ключевые различия:

  • Совместимость: MariaDB сохраняет совместимость на уровне SQL и клиентов, но некоторые расширения/модули могут отличаться.
  • Развитие: MariaDB развивается открыто и имеет дополнительные оптимизации и движки.
  • Поддержка: MySQL поддерживается Oracle; выбор зависит от политики обновлений и корпоративных требований.

Для большинства проектов MariaDB — оптимальный выбор по соотношению производительности и открытости.

Отладка и частые ошибки

  1. Ошибка «Address already in use» при старте Apache — проверьте, не занят ли порт 80 другим процессом (например, nginx).
sudo ss -tulpn | grep :80
  1. Ошибка прав доступа 403 — проверьте владельца и права на DocumentRoot и убедитесь, что конфигурация виртуального хоста указывает на существующую папку.
ls -la /var/www/mysite/public_html
sudo chown -R www-data:www-data /var/www/mysite
sudo chmod -R 755 /var/www/mysite
  1. PHP не работает — проверьте, установлен ли модуль libapache2-mod-php и перезапущен ли Apache.
sudo a2enmod php8.3
sudo systemctl restart apache2
  1. Модуль mysqli отсутствует — убедитесь, что установлен php-mysql и перезапущен Apache.
sudo apt install php-mysql
sudo systemctl restart apache2

Роль‑базированные чеклисты

Администратор сервера:

  • Установить и обновить пакеты.
  • Настроить брандмауэр и SSH.
  • Настроить бэкапы и мониторинг.

Девопс / инженер развертывания:

  • Автоматизировать развертывание конфигураций (Ansible, Terraform).
  • Настроить CI/CD для сброса и тестирования миграций баз данных.

Разработчик:

  • Проверить совместимость кода с PHP 8.3.
  • Настроить окружение .env и конфигурации соединения с базой.

Мини‑плейбук для стандартного деплоя сайта (SOP)

  1. Подготовка сервера: обновить пакеты и установить LAMP.
  2. Создать виртуальный хост и выдачи права владельца на www‑каталог.
  3. Настроить SSL через certbot.
  4. Развернуть код приложения в /var/www/mysite.
  5. Выполнить миграции базы данных и проверить логи.
  6. Настроить мониторинг и бэкап.
  7. Документировать изменения и дать тестовой группе доступ.

Критерии приёмки

  • Apache запускается и отвечает на HTTP(S) запросы.
  • PHP корректно обрабатывает скрипты (phpinfo отсутствует в продакшне).
  • MariaDB принимает подключения от локальных приложений и защищена паролем root.
  • Виртуальный хост возвращает ожидаемый контент по домену.
  • SSL сертификаты валидны и автоматическое обновление работает.

Тесты и контрольные кейсы

  • Проверка страницы / после деплоя (HTTP 200).
  • Проверка переадресации на HTTPS.
  • Проверка соединения с БД из приложения (успешный SELECT).
  • Проверка логов Apache и MariaDB на наличие ошибок.
  • Тест восстановления из бэкапа БД.

Краткий глоссарий

  • LAMP — набор: Linux, Apache, MariaDB (или MySQL), PHP.
  • DocumentRoot — корневая директория web‑сайта.
  • VirtualHost — конфигурация Apache для отдельного домена.
  • phpinfo — скрипт отображения текущих настроек PHP.

Типичные сценарии, когда LAMP не подходит

  • Требуются асинхронные или высокопроизводительные API — лучше Nginx + PHP‑FPM или Node.js/Go.
  • Высоконагруженные сайты с горизонтальным масштабированием — потребуется балансировщик нагрузки и кластер БД.

Быстрый чеклист перед переходом в продакшн

  • Удалён файл info.php
  • Включён HTTPS и настроено перенаправление
  • Настроен бэкап БД
  • Проверена автозагрузка и мониторинг
  • Правила UFW минимально достаточны

Итог

Вы успешно установили LAMP на Ubuntu 24.04, проверили интеграцию Apache и PHP, обезопасили MariaDB и настроили виртуальный хост. Дальше рекомендуется автоматизировать развёртывание и настроить регулярный бэкап и мониторинг.

Важно: храните конфигурации и секреты в безопасном хранилище. Планируйте тестирование обновлений и регулярные проверки безопасности.


Краткое напоминание: инструкции по командам в этой статье предполагают выполнение в окружении Ubuntu 24.04. Настройки таймзоны, лимитов памяти и портов адаптируйте под ваш сервер.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро