Установка LAMP на Ubuntu 24.04 и 22.04: Apache2, PHP 8, MySQL и phpMyAdmin
Apache2, PHP 8, MySQL или MariaDB и phpMyAdmin на Ubuntu 24.04 LTS или 22.04 LTS: вся настройка шаг за шагом, включая защиту доступа к базе данных.
Вы хотите установить Apache2, PHP 8, MySQL и phpMyAdmin, то есть полноценный стек LAMP, на своём сервере с Ubuntu 24.04 LTS или Ubuntu 22.04 LTS? Это руководство шаг за шагом проведёт вас через всю настройку, от веб-сервера до защищённого доступа к базе данных.
Преимущество перед Debian: в репозиториях Ubuntu есть оба сервера баз данных, и mysql-server, и mariadb-server. Выбор остаётся за вами. Debian же поставляет исключительно MariaDB. В этом руководстве показаны оба варианта, все остальные шаги одинаковы.
Что потребуется
Вам нужен доступ по SSH с правами root (или пользователь с правом sudo) на актуальной системе Ubuntu. Рекомендуются Ubuntu 24.04 LTS «Noble Numbat» и Ubuntu 22.04 LTS «Jammy Jellyfish». У Ubuntu 20.04 LTS обычная поддержка закончилась в мае 2025 года, в продуктивной среде эту версию использовать больше не стоит.
Сначала обновите список пакетов и установите доступные обновления:
apt update && apt upgrade -y
Установка Apache2 и базовых пакетов
Установите веб-сервер вместе со вспомогательными пакетами, которые понадобятся вам на следующих шагах:
apt install -y nano curl wget unzip ca-certificates apt-transport-https lsb-release gnupg software-properties-common apache2
Затем откройте в браузере http://<IP-вашего-сервера>/. Если появилась стандартная страница Apache2, веб-сервер уже работает.
Если на сервере активен файрвол, откройте порты веб-сервера:
ufw allow "Apache Full"
Установка PHP 8
Какую версию PHP вы получите из репозиториев, зависит от вашего дистрибутива. Поэтому команда с жёстко заданным номером версии, например apt install php8.3, на Ubuntu 22.04 LTS завершается ошибкой. В этой таблице показано, какая версия входит в каждый выпуск (по состоянию на июль 2026 года):
| Дистрибутив | Версия PHP из репозиториев |
|---|---|
| Ubuntu 24.04 LTS | PHP 8.3 |
| Ubuntu 22.04 LTS | PHP 8.1 |
Поэтому используйте метапакеты без номера версии. Они автоматически подтягивают подходящую версию для вашего дистрибутива и работают одинаково на любом Ubuntu:
apt install -y php php-cli php-common php-curl php-gd php-intl php-mbstring php-mysql php-opcache php-readline php-xml php-zip php-bz2 libapache2-mod-php
Если вы хотите запускать PHP не через модуль Apache, а через FPM, действует тот же принцип. И здесь метапакет надёжно приводит к цели, тогда как имя с номером версии вроде php8.3-fpm существует только в Ubuntu 24.04 LTS:
apt install -y php-fpm
Какая версия установилась на самом деле, покажет команда:
php -v
Если вам нужна версия, которой в вашем выпуске Ubuntu нет (например, PHP 8.4), подключите известный репозиторий PHP от Ondřej Surý:
add-apt-repository ppa:ondrej/php
apt update
add-apt-repository автоматически сохраняет ключ подписи в отдельный файл keyring и привязывает его именно к этому репозиторию. Раньше широко применялась команда apt-key, но она объявлена устаревшей и использовать её больше не следует, потому что добавленный так ключ действовал бы для всех репозиториев системы.
Только через этот репозиторий имена пакетов с номером версии становятся доступны для всех выпусков Ubuntu. После этого установите нужную версию PHP вместе с привычным набором расширений:
apt install -y php8.4 php8.4-cli php8.4-common php8.4-curl php8.4-gd php8.4-intl php8.4-mbstring php8.4-mysql php8.4-opcache php8.4-readline php8.4-xml php8.4-zip php8.4-bz2 libapache2-mod-php8.4
Если после этого параллельно работают несколько версий PHP, задайте, какую из них должен использовать Apache2:
a2dismod php8.3
a2enmod php8.4
systemctl restart apache2
Командой php -v вы проверите, какая версия активна в командной строке.
Установка и защита сервера баз данных
Ubuntu предлагает вам оба распространённых сервера баз данных, в таких выпусках:
| Пакет | Ubuntu 24.04 LTS | Ubuntu 22.04 LTS |
|---|---|---|
| mysql-server | MySQL 8.0.46 | MySQL 8.0.46 |
| mariadb-server | доступен | доступен |
Для MySQL, то есть оригинала от Oracle:
apt install -y mysql-server mysql-client
mysql_secure_installation
Для MariaDB, сервера, выросшего из MySQL и использующего тот же протокол и тот же язык запросов:
apt install -y mariadb-server mariadb-client
mysql_secure_installation
Устанавливайте только один из двух вариантов, потому что оба занимают один и тот же порт. Для дальнейших шагов этого руководства неважно, что именно вы выбрали.
Скрипт mysql_secure_installation задаёт несколько вопросов. Актуальные версии MariaDB сначала спрашивают, переключиться ли на аутентификацию через unix_socket. Этот вариант разумен, потому что пользователь базы данных root сможет тогда входить только как системный пользователь root. На все остальные вопросы (удалить анонимных пользователей, запретить удалённый вход для root, удалить тестовую базу данных, перезагрузить таблицы привилегий) отвечайте y. Кроме того, задайте надёжный пароль для базы данных.
После этого проверьте, работает ли служба. Имя systemd-юнита зависит от выбранного сервера:
systemctl status mysql
systemctl status mariadb
Установка phpMyAdmin
Для phpMyAdmin у вас есть две возможности. Пакет phpmyadmin лежит в репозиториях всех актуальных версий Ubuntu и устанавливается за один шаг:
apt install phpmyadmin -y
Удобно, но версия часто отстаёт от того, что уже выпустил разработчик. Кому нужен самый свежий выпуск, тот загружает phpMyAdmin напрямую. Именно этот путь описывают следующие шаги:
cd /usr/share && wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip -O phpmyadmin.zip && unzip phpmyadmin.zip && rm phpmyadmin.zip && mv phpMyAdmin-*-all-languages phpmyadmin && chmod -R 0755 phpmyadmin
Затем создайте файл конфигурации:
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
phpMyAdmin требуется случайное значение в качестве blowfish_secret, которым шифруются данные сессии в cookie. Сгенерируйте такое значение:
openssl rand -base64 32
После этого впишите его в файл конфигурации:
nano /usr/share/phpmyadmin/config.inc.php
Нужная строка выглядит так:
$cfg['blowfish_secret'] = 'ВСТАВЬТЕ_СЮДА_СГЕНЕРИРОВАННОЕ_ЗНАЧЕНИЕ';
Подключение phpMyAdmin к Apache2
Создайте отдельный файл конфигурации Apache2 для phpMyAdmin:
nano /etc/apache2/conf-available/phpmyadmin.conf
Содержимое файла phpmyadmin.conf:
#Конфигурация PHPMyAdmin для Apache2
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
</Directory>
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>
Активируйте конфигурацию, перезагрузите Apache2 и создайте временный каталог с нужными правами:
a2enconf phpmyadmin && systemctl reload apache2 && mkdir -p /usr/share/phpmyadmin/tmp/ && chown -R www-data:www-data /usr/share/phpmyadmin/tmp/
Создание пользователя базы данных
Войдите в базу данных как системный пользователь root:
mysql -u root
Теперь создайте собственного пользователя базы данных. При этом не используйте в качестве имени «root», «admin», «user» или «username», возьмите своё имя пользователя и длинный случайный пароль:
#ВАЖНО! ЗАМЕНИТЕ USER И PASSWORD НА СВОИ СОБСТВЕННЫЕ УЧЁТНЫЕ ДАННЫЕ.
CREATE USER 'USER'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON *.* TO 'USER'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Для отдельных приложений стоит дополнительно создавать пользователей с ограниченными правами, которым разрешён доступ только к их собственной базе данных:
CREATE DATABASE myapp;
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON myapp.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;
Выйти из консоли базы данных вы можете в любой момент командой:
exit
Проверка стека LAMP
Откройте phpMyAdmin по адресу http://<IP-вашего-сервера>/phpmyadmin и войдите под только что созданным пользователем. Если вход удался, значит Apache2, PHP и ваш сервер баз данных работают вместе корректно.
Работу PHP вы дополнительно проверите коротким тестовым файлом:
echo "<?php phpinfo();" > /var/www/html/info.php
После обращения к http://<IP-вашего-сервера>/info.php обязательно удалите этот файл, ведь он раскрывает подробности конфигурации вашего сервера:
rm /var/www/html/info.php
Рекомендации по безопасности для продуктивной эксплуатации
Только что установленный стек LAMP ещё не защищён. Эти пункты стоит добавить:
- phpMyAdmin — популярная цель для атак. Ограничьте доступ своим собственным IP-адресом, указав в блоке Directory
Require ip 203.0.113.10вместо открытого доступа. - Настройте HTTPS, чтобы пароли не передавались открытым текстом. Без шифрования ваши учётные данные можно прочитать по пути к серверу.
- Поддерживайте phpMyAdmin в актуальном состоянии. Так как вы установили его вручную,
apt upgradeне обновляет его автоматически. - Регулярно создавайте резервные копии баз данных и храните их вне сервера.
Частые ошибки и их решения
Браузер скачивает PHP-файл вместо того, чтобы выполнить его: модуль PHP не активен в Apache2. Активируйте его командой a2enmod php8.4 и перезапустите веб-сервер командой systemctl restart apache2.
phpMyAdmin сообщает «The configuration file now needs a secret passphrase»: в config.inc.php отсутствует значение для blowfish_secret. Сгенерируйте его командой openssl rand -base64 32 и впишите в файл.
«Access denied for user» при входе в phpMyAdmin: после mysql_secure_installation пользователь базы данных root обычно использует аутентификацию unix_socket и поэтому не может войти через веб-интерфейс. Используйте дополнительно созданного пользователя.
Apache2 больше не запускается после изменения конфигурации: проверьте конфигурацию командой apachectl configtest, в выводе указаны файл и строка с ошибкой.
Частые вопросы
Что устанавливать в Ubuntu: MySQL или MariaDB?
Какая версия PHP входит в состав Ubuntu?
Как получить версию PHP новее той, что предлагает Ubuntu?
Почему браузер скачивает PHP-файл вместо того, чтобы выполнить его?
Почему не получается войти в phpMyAdmin под root?
2022-2026 KernelHost GmbH. Все права защищены. Эта инструкция охраняется авторским правом. Публикация на других сайтах, в том числе частично или в изменённом виде, без нашего письменного согласия не разрешается. Цитирование с указанием источника и активной ссылкой мы приветствуем.

