⚙️ Паровой сервер ROADIT

LAMP-стек на Ubuntu: как собрать надёжный веб-движок из шестерёнок Apache, PHP и MariaDB

Протестировано на:

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 status

PHP-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 и в нашем Телеграф-канале.
📋 Все команды


Оставьте комментарий