Протестировано на:
Ubuntu: 24.04
LAMP — это не магическое заклинание из старых фолиантов, а вполне конкретный набор шестерёнок: Linux, Apache, MariaDB (или MySQL) и PHP. Когда эти четыре механизма правильно сцеплены, получается классический паровоз для динамических сайтов и веб-приложений. Я ставлю этот стек уже больше десяти лет — от древних Ubuntu 14.04 до нынешних LTS. Сегодня разберём установку на Ubuntu так, чтобы после пятнадцати минут работы у вас был не просто “сервер”, а отлаженный механизм, готовый к бою.
Что понадобится
- Чистый сервер Ubuntu (VPS, dedicated или даже локальная виртуалка).
- Пользователь с правами sudo (root тоже подойдёт, но лучше работать от обычного аккаунта).
- 15–20 минут свободного времени и чашка кофе — шестерёнки любят, когда их смазывают.
Шаг 1. Обновляем систему и готовим фундамент
Прежде чем навешивать новые детали, нужно убедиться, что базовый каркас не скрипит. Всегда начинаю с полного обновления:
sudo apt update && sudo apt upgrade -yПосле этого иногда полезно перезагрузить машину, особенно если ядро тоже обновилось:
sudo reboot
Шаг 2. Ставим Apache — главный паровой котёл
Apache до сих пор остаётся самым предсказуемым веб-сервером для классического LAMP. Ставим его одной командой:
sudo apt install apache2 -yВключаем автозапуск и сразу поднимаем службу:
sudo systemctl enable --now apache2Проверяем, что котёл работает:
sudo systemctl status apache2Должен быть зелёный active (running). Теперь откройте браузер и зайдите по IP-адресу сервера — увидите стандартную страницу Apache «It works!». Если страница открылась — первая шестерёнка уже крутится.
Полезно сразу включить модуль rewrite (он почти всегда нужен):
sudo a2enmod rewrite
sudo systemctl restart apache2
Шаг 3. PHP и необходимые расширения
В Ubuntu из коробки идёт PHP, вполне рабочей версии для большинства проектов. Ставим сам интерпретатор и набор расширений, которые реально используются в современных CMS и фреймворках:
sudo apt install php php-cli php-common php-mysql php-xml php-mbstring php-curl php-zip php-gd php-intl php-bcmath libapache2-mod-php -yЕсли вам нужны дополнительные модули (redis, imagick, soap и т.д.) — просто добавьте их в ту же строку. После установки проверьте версию:
php -vДолжно показать PHP 8.x.x. Apache уже подхватил модуль, но на всякий случай перезапустим:
sudo systemctl restart apache2Шаг 4. MariaDB — хранилище данных
MariaDB в Ubuntu — это форк MySQL, полностью совместимый и чуть более “лёгкий” на ресурсах. Ставим:
sudo apt install mariadb-server -yЗапускаем и включаем автозапуск:
sudo systemctl enable --now mariadbТеперь самое важное — базовая безопасность. Запускаем скрипт:
sudo mysql_secure_installationОтвечаем примерно так:
- Set root password? → Y (задайте надёжный пароль)
- Remove anonymous users? → Y
- Disallow root login remotely? → Y
- Remove test database? → Y
- Reload privilege tables? → Y
Проверяем, что служба жива:
sudo systemctl status mariadbИ версию:
mysql -V
Шаг 5. Проверяем связку и создаём тестовый виртуальный хост
Создадим простую конфигурацию, чтобы убедиться, что Apache + PHP работают вместе. Сначала сделаем тестовый файл:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.phpОткройте в браузере http://IP-сервера/info.php. Вы должны увидеть большую таблицу с информацией о PHP. Если страница открылась — все шестерёнки сцепились правильно.
Теперь сделаем минимальный виртуальный хост (на будущее). Создаём конфиг:
sudo nano /etc/apache2/sites-available/test.local.confВставляем:
<VirtualHost *:80>
ServerName test.local
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/test.local-error.log
CustomLog ${APACHE_LOG_DIR}/test.local-access.log combined
</VirtualHost>Включаем сайт и перезапускаем Apache:
sudo a2ensite test.local.conf
sudo apachectl configtest
sudo systemctl restart apache2Если configtest выдал Syntax OK — можно работать дальше.
После проверки обязательно удалите info.php:
sudo rm /var/www/html/info.phpОставлять phpinfo() на продакшене — плохая идея.
Неочевидные нюансы, которые экономят нервы
Права на файлы. После установки часто забывают, что Apache работает от пользователя www-data. Если будете заливать сайт через git или rsync, не забывайте:
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;Firewall. Если на сервере включён ufw, откройте 80 и 443 порты:
sudo ufw allow 'Apache Full'
sudo ufw statusPHP-FPM vs mod_php. В этом гайде мы используем классический mod_php. Для высоконагруженных проектов позже можно перейти на PHP-FPM + Apache event MPM, но для начала mod_php проще и понятнее.
Логи. Когда что-то не работает, первым делом смотрите:
sudo tail -f /var/log/apache2/error.logЗаключение
За четверть часа мы собрали рабочий LAMP-стек: Apache принимает запросы, PHP их обрабатывает, MariaDB хранит данные. Это базовый фундамент, на котором можно ставить WordPress, Laravel, Symfony или свой самописный движок. Дальше уже можно добавлять SSL через Certbot, настраивать виртуальные хосты под разные домены и оптимизировать производительность.
Шестерёнки крутятся — можно строить.
⚙️ Машинное отделение ROADIT благодарит за прочтение.
Больше команд, шпаргалок и обзоров — на roadit.ru и в нашем Телеграф-канале.
📋 Все команды