← База знаний

Ubuntu Server + LAMP и phpMyAdmin: разворачиваем веб-сервер с нуля

LAMP — это связка Linux, Apache, MySQL и PHP, основа для большинства динамических сайтов: WordPress, Drupal, Joomla и любых PHP-приложений. Развернём её на Ubuntu Server с нуля. Инструкция подойдёт и для одноплатника, и для VPS, и для домашнего сервера.

Что такое LAMP

Каждый компонент отвечает за свой слой. Linux — операционная система. Apache — веб-сервер, принимает HTTP-запросы от браузера. PHP — исполняет серверную логику. MySQL (или совместимая MariaDB) — хранит данные. Когда посетитель открывает страницу: Apache принимает запрос, передаёт скрипт интерпретатору PHP, тот при необходимости обращается к базе, и PHP отдаёт готовый HTML обратно браузеру.

Подготовка системы

Инструкция актуальна для Ubuntu 24.04 и 26.04 LTS. Начните с подключения к серверу по SSH под пользователем с правами sudo и обновите пакеты:

bash
sudo apt update && sudo apt upgrade -y

Если обновилось ядро — перезагрузите сервер.

Шаг 1. Устанавливаем Apache

Apache — веб-сервер, первый компонент стека:

bash
sudo apt install apache2 -y

Проверьте, что сервис запущен:

bash
sudo systemctl status apache2

Должно быть active (running). Теперь откройте в браузере IP-адрес сервера — увидите стандартную страницу Apache. Если не знаете IP:

bash
hostname -I

Шаг 2. Настраиваем фаервол

Откройте порты для веб-сервера и SSH, чтобы не потерять доступ:

bash
sudo ufw allow 'Apache Full'
sudo ufw allow OpenSSH
sudo ufw enable

«Apache Full» открывает порты 80 (HTTP) и 443 (HTTPS). Проверить правила:

bash
sudo ufw status

Шаг 3. Устанавливаем MySQL

База данных для хранения информации сайта:

bash
sudo apt install mysql-server -y

После установки обязательно запустите скрипт защиты — он задаёт пароль root, удаляет анонимных пользователей, запрещает удалённый вход root и убирает тестовую базу:

bash
sudo mysql_secure_installation

Отвечайте Y на все вопросы и задайте надёжный пароль root. Если предпочитаете полностью открытую MariaDB вместо MySQL — ставится так же: sudo apt install mariadb-server, а защита через sudo mariadb-secure-installation.

Шаг 4. Устанавливаем PHP

PHP и модуль, связывающий его с Apache, плюс расширение для работы с MySQL:

bash
sudo apt install php libapache2-mod-php php-mysql -y

Полезные дополнительные модули (нужны многим приложениям, включая WordPress):

bash
sudo apt install php-curl php-gd php-mbstring php-xml php-zip -y

Проверьте версию PHP:

bash
php -v

Шаг 5. Проверяем связку

Создайте тестовый файл в корне сайта. Document root в Ubuntu — /var/www/html:

bash
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

Откройте в браузере http://ваш-ip/info.php — должна появиться подробная страница с версией PHP и модулями. Если видите не страницу, а исходный код — значит PHP не подхватился Apache, проверьте установку libapache2-mod-php.

Важно: сразу после проверки удалите этот файл — он раскрывает системную информацию и опасен на боевом сервере:

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

Шаг 6. Создаём базу для сайта

Войдите в MySQL:

bash
sudo mysql

Создайте базу и отдельного пользователя (не используйте root для сайтов):

sql
CREATE DATABASE mysite CHARACTER SET utf8mb4;
CREATE USER 'mysite_user'@'localhost' IDENTIFIED BY 'надёжный_пароль';
GRANT ALL PRIVILEGES ON mysite.* TO 'mysite_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Теперь у сайта своя база и свой пользователь с доступом только к ней — так безопаснее.

Шаг 7. Устанавливаем phpMyAdmin

Управлять базами из командной строки не всегда удобно. phpMyAdmin (PMA) — веб-интерфейс, через который можно создавать базы, таблицы, выполнять SQL-запросы и импорт/экспорт прямо в браузере.

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

bash
sudo apt install phpmyadmin -y

Во время установки появятся диалоги — тут важно не ошибиться:

Выбор веб-сервера: apache2 будет подсвечен, но НЕ выбран. Обязательно нажмите ПРОБЕЛ, чтобы поставить звёздочку напротив apache2, затем TAB и ENTER. Если пропустить этот шаг, установщик не перенесёт файлы и интерфейс не откроется.

Настройка базы: на вопрос про dbconfig-common ответьте Yes — это создаст служебную базу, которую phpMyAdmin использует для своих настроек.

Пароль: задайте пароль для служебного пользователя phpmyadmin (или оставьте пустым — сгенерируется случайный).

После установки включите расширение mbstring и перезапустите Apache:

bash
sudo phpenmod mbstring
sudo systemctl restart apache2

Создаём пользователя для входа в phpMyAdmin

Важный момент: в Ubuntu 20.04 и новее пользователь root в MySQL входит через системный плагин auth_socket, а не по паролю. Поэтому войти в phpMyAdmin под root не получится — и не нужно. Создайте отдельного администратора для веб-интерфейса.

Войдите в MySQL:

bash
sudo mysql

Создайте пользователя с полными правами (замените пароль на надёжный):

sql
CREATE USER 'pmauser'@'localhost' IDENTIFIED BY 'надёжный_пароль';
GRANT ALL PRIVILEGES ON *.* TO 'pmauser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

Вход в phpMyAdmin

Откройте в браузере адрес http://ваш-ip/phpmyadmin — появится страница входа. Введите логин pmauser и пароль, который задали. Вы попадёте в веб-интерфейс, где слева список баз, а справа — таблицы, SQL-редактор, импорт и экспорт.

Безопасность phpMyAdmin

phpMyAdmin — одна из самых частых мишеней ботов и брутфорса, потому что стоит по предсказуемому адресу /phpmyadmin. Минимум, что стоит сделать на боевом сервере:

Никогда не открывайте phpMyAdmin по обычному HTTP на публичном сервере — только по HTTPS, иначе логин и пароль от базы можно перехватить. Настройте SSL через Let's Encrypt.

Добавьте второй уровень входа через Apache — базовую HTTP-аутентификацию (.htpasswd). Тогда прежде чем дойти до страницы phpMyAdmin, злоумышленник упрётся в отдельный запрос логина и пароля.

По возможности смените стандартный адрес /phpmyadmin на нестандартный — это отсекает автоматических ботов, которые ломятся по типовому пути.

Если phpMyAdmin нужен только вам, лучший вариант — вообще не открывать его наружу, а подключаться через SSH-туннель к локальному серверу.

Что дальше

Стек готов: Apache отдаёт страницы, PHP исполняет код, MySQL хранит данные. Дальше вы можете залить свой сайт в /var/www/html, развернуть WordPress или настроить виртуальные хосты для нескольких сайтов на одном сервере.

Для боевого сервера обязательно настройте HTTPS — бесплатный сертификат Let's Encrypt ставится за пару команд через certbot. И держите систему в актуальном состоянии: регулярный apt update && apt upgrade закрывает уязвимости.

Если сервер собран на одноплатнике, для стабильной работы под нагрузкой важно охлаждение — при постоянной работе веб-сервера плата греется, поэтому корпус с активным обдувом продлит ей жизнь.

Корпус Eruscus Blade 19" 1U Стоечный корпус на 4 платы Raspberry Pi с активным охлаждением.
Смотреть корпус →