AlmaLinux 9: установка LAMP с нуля
LAMP — классический набор для сайтов на PHP: Linux, Apache, MariaDB и PHP. AlmaLinux 9, стабильный клон RHEL, — надёжная корпоративная платформа под такие задачи. Установка LAMP на AlmaLinux 9 с нуля имеет свои особенности: веб-сервер Apache здесь называется httpd, пакетный менеджер — dnf, а SELinux включён и требует внимания. Мы поставим веб-сервер, базу и PHP, откроем порты в firewalld и проверим, что стек работает.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Чем LAMP отличается от LEMP
Разница — в веб-сервере: в LAMP это Apache, в LEMP — Nginx. Apache гибче в совместимости: он понимает файлы .htaccess, которыми многие CMS управляют правилами доступа прямо из папки сайта, без правки глобального конфига. Для переноса готового проекта с общего хостинга это удобно. Плата за гибкость — Apache расходует больше памяти на соединение, но на небольшом VPS это редко проблема.
Важный нюанс именно для AlmaLinux: в RHEL-семействе пакет Apache называется httpd, и служба тоже. Если вы привыкли к Ubuntu, где всё зовётся apache2, не удивляйтесь — это тот же самый веб-сервер, просто под историческим именем. Кроме того, современный подход в EL9 — запускать PHP не встроенным модулем, как в старом LAMP, а через отдельную службу PHP-FPM, к которой httpd обращается. Это надёжнее и экономнее, поэтому мы соберём именно такую связку. Понимание этих отличий сэкономит вам время при первой же настройке.
Обновляем систему и ставим Apache
Обновите пакеты, поставьте httpd, включите и запустите его:
dnf upgrade -y
dnf install -y httpd
systemctl enable --now httpd
Команда systemctl enable --now и запускает службу, и добавляет в автозагрузку — в RHEL-семействе это делают явно. Теперь откройте веб-порты в firewalld:
firewall-cmd --permanent --add-service=http --add-service=https
firewall-cmd --reload
Откройте http://ВАШ_IP в браузере — должна появиться тестовая страница AlmaLinux HTTP Server. Её наличие подтверждает, что веб-сервер работает и доступен снаружи. Если страница не открывается, проверьте состояние службы командой systemctl status httpd и правила фаервола командой firewall-cmd --list-all.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS на AlmaLinux 9Ставим MariaDB
Установите сервер базы данных, включите его и запустите скрипт первичной защиты:
dnf install -y mariadb-server
systemctl enable --now mariadb
mariadb-secure-installation
Скрипт предложит задать пароль root, удалить анонимных пользователей, тестовую базу и запретить удалённый вход администратора. Отвечайте «Y» на вопросы об удалении лишнего и задайте надёжный пароль — незащищённая база на публичном IP взламывается одной из первых. Для каждого проекта позже заведите отдельного пользователя MariaDB с правами только на его базу: так компрометация одного сайта не откроет доступ к остальным. Это несколько минут на старте, окупающиеся многократно.
Устанавливаем PHP через PHP-FPM
Поставьте PHP, обработчик FPM и модуль для работы с базой:
dnf install -y php php-fpm php-mysqlnd
systemctl enable --now php-fpm
В AlmaLinux 9 базовый репозиторий даёт PHP 8.0; новее включают через модульные потоки dnf module или из репозитория Remi. Многие движки требуют дополнительных расширений: php-gd для картинок, php-mbstring для многобайтовых строк, php-xml для разбора XML. Поставьте их сразу той же командой. В EL9 httpd по умолчанию передаёт PHP-запросы службе php-fpm, поэтому после установки обеих служб и их перезапуска Apache уже будет исполнять PHP — отдельный модуль mod_php здесь не используется, и это правильно с точки зрения производительности и стабильности.
Настраиваем виртуальный хост
Виртуальный хост позволяет держать на одном сервере несколько сайтов. Создайте конфиг, например /etc/httpd/conf.d/mysite.conf, где укажите ServerName с доменом и DocumentRoot на папку сайта. Проверьте синтаксис и перезагрузите httpd:
apachectl configtest
systemctl reload httpd
Команда apachectl configtest проверяет конфиг на ошибки — если ответ «Syntax OK», можно смело перезагружать через reload, который применяет изменения без остановки сервера. В RHEL-семействе конфиги сайтов принято класть в папку /etc/httpd/conf.d/, откуда httpd подхватывает их автоматически, — здесь нет команд a2ensite, как в Debian. Достаточно положить файл конфига в эту папку и перезагрузить службу.
Стоит пояснить разницу в организации конфигов между семействами, чтобы не искать несуществующие команды. В Debian и Ubuntu применяется схема «доступно отдельно, включено отдельно»: конфиги лежат в sites-available, а включаются символической ссылкой в sites-enabled через a2ensite. В RHEL-семействе такого разделения нет — все файлы с расширением .conf в папке /etc/httpd/conf.d/ считаются активными и загружаются автоматически при старте httpd. Чтобы временно отключить сайт, здесь просто переименовывают файл, убрав расширение .conf, или переносят его в другую папку. Подход проще, но менее гибкий, поэтому на серверах с десятками сайтов администраторы часто наводят порядок вручную, давая файлам говорящие имена. Зная эту логику, вы не будете тщетно искать в AlmaLinux команды включения сайтов из мира Debian.
Учитываем SELinux и проверяем стек
Ключевая особенность AlmaLinux — SELinux, который может заблокировать доступ httpd к нестандартной папке сайта, хотя обычные права верны. Если вы разместили сайт вне стандартного /var/www/html, задайте правильный SELinux-контекст: пометьте папку типом httpd_sys_content_t командами semanage fcontext и restorecon. Если сайт обращается к сети (например, к внешнему API), разрешите это командой sudo setsebool -P httpd_can_network_connect 1.
Теперь проверьте, что PHP исполняется: создайте в корне сайта файл info.php с вызовом phpinfo() и откройте его в браузере. Подробная таблица с версией PHP означает, что httpd и PHP работают вместе, а строки mysqli или pdo_mysql подтверждают связь с MariaDB. После проверки сразу удалите файл — на боевом сервере он раскрывает детали конфигурации. На этом рабочий LAMP на AlmaLinux готов. Следующим шагом стоит выпустить бесплатный SSL-сертификат Let's Encrypt через certbot для HTTPS.
Стоит с самого начала привыкнуть к нескольким командам управления службами, которые понадобятся ежедневно при работе с LAMP на AlmaLinux. Состояние веб-сервера показывает systemctl status httpd, базы — systemctl status mariadb, обработчика PHP — systemctl status php-fpm. Если какая-то из служб не запускается, причину почти всегда видно в её логе, который выводит journalctl -u имя_службы. После правки конфигов применяйте изменения через systemctl reload, а полный перезапуск restart держите про запас на случай обновления самого пакета. Эта тройка служб — httpd, mariadb и php-fpm — и есть ваш стек LAMP, и умение быстро проверить состояние каждой экономит массу времени при диагностике.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS на AlmaLinux 9Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Почему Apache называется httpd?
Это историческое имя веб-сервера Apache в RHEL-семействе. Функционально это тот же Apache, что и apache2 в Ubuntu, просто пакет и служба носят имя httpd.
PHP-файл скачивается вместо выполнения — почему?
Не запущена или не связана с httpd служба php-fpm. Убедитесь, что php-fpm установлен и включён командой systemctl status php-fpm, затем перезапустите httpd.
Сайт не открывается, хотя права верные — в чём дело?
Почти наверняка SELinux. Проверьте его сообщения через sudo ausearch -m avc -ts recent и задайте правильный контекст папке, а не отключайте SELinux.
Как оплатить VPS на AlmaLinux из России?
У MAATRIX доступна оплата картой российского банка, по СБП, криптовалютой и токеном MAAT — иностранная карта не требуется.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.