6.4.10 Установка и настройка LAMP

Банер LAMP – это набор программного обеспечения представляет собой популярный стек технологий для разработки и развертывания веб-приложений. LAMP широко используется благодаря своей надежности, гибкости и открытому исходному коду. Данная аббревиатура расшифровывается как:

  • L — операционная система семейства Linux.
  • A — веб-сервер Apache.
  • M — система управления базами данных MySQL или MariaDB.
  • P — язык программирования PHP для создания веб-страниц.

В этой статье мы рассмотрим процесс установки и настройки LAMP на различных дистрибутивах Linux, включая Debian, Ubuntu, CentOS, AlmaLinux и RockyLinux.

Важно: перед началом установки убедитесь, что у Вас есть права суперпользователя (root) или возможность использовать sudo. Также рекомендуется создать резервную копию важных данных перед внесением изменений в систему.

Все описанные ниже действия рекомендуем производить именно на чистом образе ОС, без предустановленных панелей управления или другого функционала.

Примечание: инструкции проверены на следующих версиях ОС: Ubuntu 18.04-22.04; Debian 8–12; CentOS 7, 8; AlmaLinux 8, 9. Работоспособность на более поздних версиях не гарантируется.

Установка для Debian и Ubuntu

1. Обновление системы

Перед началом установки обновите список пакетов и саму систему:

Обновление системы.
  1. sudo apt update && sudo apt upgrade -y

2. Установка Apache

Установите веб-сервер Apache:

Установка Apache2 и включение автозапуска.
  1. sudo apt install apache2 -y
  2. sudo systemctl enable apache2

3. Установка MySQL

Установите MySQL сервер:

Установка MySQL и включение автозапуска.
  1. sudo apt install mysql-server -y
  2. sudo systemctl enable mysql

После установки запустите скрипт безопасной установки MySQL:

Запуск скрипта безопасности.
  1. sudo mysql_secure_installation

Ответьте на вопросы скрипта, рекомендуется отвечать Y на все вопросы для повышения безопасности:

  • Set root password? [Y/n] – Установка пароля для root, если он не был установлен ранее.
  • Remove anonymous users? [Y/n] – Удаление анонимного пользователя.
  • Disallow root login remotely? [Y/n] – Запрет удаленного входа под root.
  • Remove test database and access to it? [Y/n] – Удаление тестовой базы данных.
  • Reload privilege tables now? [Y/n] – Применение изменений.

4. Установка PHP

Установка PHP и необходимых модулей. В этом примере мы будем использовать PHP 8.1, но Вы можете заменить версию на актуальную для Вашего случая:

Ubuntu 18.04-22.04 и Debian 9–12: установка PHP 8.1.

Для установки PHP 8.1 или другой нужной версии используйте PPA репозиторий:

Установка дополнительного репозитория PHP.
  1. sudo add-apt-repository ppa:ondrej/php -y
  2. sudo apt update

Затем установите PHP и необходимые модули:

Установка PHP 8.1 и компонентов.
  1. sudo apt install php8.1 php8.1-fpm libapache2-mod-php8.1 php8.1-mysql php8.1-common php8.1-cli -y
Debian 8 и более старые версии: установка PHP 8.1.

Для установки PHP 8.1 или другой нужной версии используйте сторонний репозиторий:

Добавление репозитория sury.org для PHP.
  1. sudo apt install apt-transport-https lsb-release ca-certificates -y
  2. sudo wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
  3. echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
  4. sudo apt update

Затем установите PHP и необходимые модули:

Установка PHP 8.1 и компонентов.
  1. sudo apt install php8.1 php8.1-fpm libapache2-mod-php8.1 php8.1-mysql php8.1-common php8.1-cli -y

Примечание: если Вам нужна другая версия PHP (например, PHP 7.4 или PHP 8.2), замените php8.1 на нужную версию.

Вы можете проверить установленную версию PHP командой:

Проверка версии PHP по умолчанию.
  1. php -v

Вывод команды отобразит установленную версию PHP: Версия PHP

5. Настройка Apache для PHP

Создайте тестовый PHP файл:

Создание тестового скрипта.
  1. echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/phptest.php

5. Проверка статуса сервисов

После установки всех компонентов LAMP, проверьте их статус и убедитесь, что они настроены на автозапуск:

Проверка состояния служб.
  1. sudo systemctl status apache2 mysql php8.1-fpm

При проверке, должен отобразиться статус с текстом active (running) – это будет означать что все корректно установилось. Статус служб

Убедитесь, что все службы добавлены в автозапуск:

Активация автозапуска.
  1. sudo systemctl enable apache2 mysql php8.1-fpm

6. Настройка файрвола для Debian и Ubuntu

Если Вы используете UFW (Uncomplicated Firewall), разрешите HTTP и HTTPS трафик:

Постоянное разрешение HTTP и HTTPS трафика.
  1. sudo ufw allow "Apache Full"
Альтернативно: если Вы планируете работать с утилитой IPTables.

Выполните команды для автозагрузки правил:

Автоматическая загрузка правил IPTables.
  1. sudo apt install iptables-persistent
  2. systemctl enable netfilter-persistent.service

Затем, разрешите доступ HTTP и HTTPS, выполнив следующие команды:

Проброска 80 и 443 порта.
  1. iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
  2. iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT

7. Тестирование после перезагрузки

Чтобы убедиться, что все компоненты LAMP запускаются автоматически после перезагрузки сервера, выполните следующие действия:

Перезагрузка сервера.
  1. sudo reboot

После перезагрузки сервера, проверьте статус служб:

Проверка состояния служб.
  1. sudo systemctl status apache2 mysql php8.1-fpm

При проверке, должен отобразиться статус с текстом active (running) – это будет означать что все корректно установилось. Статус служб

8. Проверьте работоспособность веб-сервера

Для проверки работы PHP проверьте созданный ранее файл, откройте его в адресной строке браузера.

http://255.255.255.255/phptest.php, где вместо чисел 255 (255.255.255.255) нужно указать IP, который был выдан при создании сервера. Посмотреть IP адрес можете в письме об открытии услуги.

Пример

Информируем: установка успешно выполнена. Теперь можете выполнять загрузку файлов Вашего сайта у папку /var/www/html/

Установка для CentOS, AlmaLinux и RockyLinux

1. Обновление системы

Перед началом установки обновите систему:

Обновление системы.
  1. sudo dnf update -y

2. Установка Apache

Установите веб-сервер Apache:

Установка Apache и включение автозапуска.
  1. sudo dnf install httpd -y
  2. sudo systemctl start httpd
  3. sudo systemctl enable httpd

3. Установка MySQL (MariaDB)

Установите MariaDB:

Установка MariaDB и включение автозапуска.
  1. sudo dnf install mariadb-server -y
  2. sudo systemctl start mariadb
  3. sudo systemctl enable mariadb

После установки запустите скрипт безопасной установки MariaDB:

Активация скрипта безопасности.
  1. sudo mysql_secure_installation

Ответьте на вопросы скрипта, рекомендуется отвечать Y на все вопросы для повышения безопасности:

  • Set root password? [Y/n] – Установка пароля для root, если он не был установлен ранее.
  • Remove anonymous users? [Y/n] – Удаление анонимного пользователя.
  • Disallow root login remotely? [Y/n] – Запрет удаленного входа под root.
  • Remove test database and access to it? [Y/n] – Удаление тестовой базы данных.
  • Reload privilege tables now? [Y/n] – Применение изменений.

4. Установка PHP

В зависимости от версии вашей операционной системы, выполните соответствующие команды для установки PHP 8.1.

AlmaLinux 9 и RockyLinux 9: установка PHP 8.1.

Для AlmaLinux 9 и RockyLinux 9 выполните следующие команды:

Установка EPEL репозитория.
  1. sudo dnf install epel-release -y
Установка репозитория Remi.
  1. sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm -y
Активация модуля PHP 8.1.
  1. sudo dnf module enable php:remi-8.1 -y
Установка PHP и необходимых модулей.
  1. sudo dnf install php php-cli php-common php-fpm php-mysqlnd php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json -y
Перезапуск Apache.
  1. sudo systemctl restart httpd
CentOS 8, AlmaLinux 8, RockyLinux 8: установка PHP 8.1.

Для CentOS 8, AlmaLinux 8 и RockyLinux 8 используйте dnf и установите репозитории:

Установка EPEL репозитория.
  1. sudo dnf install epel-release -y
Установка репозитория Remi.
  1. sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
Активация модуля PHP 8.1.
  1. sudo dnf module enable php:remi-8.1 -y
Установка PHP и необходимых модулей.
  1. sudo dnf install php php-cli php-common php-fpm php-mysqlnd php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json -y
Перезапуск Apache.
  1. sudo systemctl restart httpd
CentOS 7: установка PHP 8.1.

Для CentOS 7 используйте yum и установите репозиторий EPEL и Remi:

Установка EPEL репозитория.
  1. sudo yum install epel-release -y
Установка репозитория Remi.
  1. sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
Активация модуля PHP 8.1.
  1. sudo yum-config-manager --enable remi-php81
Установка PHP и необходимых модулей.
  1. sudo yum install php php-cli php-common php-fpm php-mysqlnd php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json -y
Перезапуск Apache.
  1. sudo systemctl restart httpd

Примечание: если Вам нужна другая версия PHP (например, PHP 7.4 или PHP 8.2), замените php8.1 на нужную версию.

Вы можете проверить установленную версию PHP командой:

Проверка версии PHP по умолчанию.
  1. php -v

Вывод команды отобразит установленную версию PHP: Версия PHP

5. Настройка Apache для PHP

Создайте тестовый PHP файл:

Создание тестового скрипта.
  1. echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/phptest.php

6. Проверка статуса сервисов

После установки всех компонентов LAMP, проверьте их статус и убедитесь, что они настроены на автозапуск:

Проверка состояния служб.
  1. sudo systemctl status httpd mariadb php-fpm

При проверке, должен отобразиться статус с текстом active (running) – это будет означать что все корректно установилось. Статус служб

Убедитесь, что все службы добавлены в автозапуск:

Включение автозапуска.
  1. sudo systemctl enable httpd mariadb php-fpm

7. Настройка файрвола для CentOS, AlmaLinux и RockyLinux

Разрешите HTTP и HTTPS трафик через файрвол:

Настройка Firewall.
  1. sudo firewall-cmd --permanent --add-service=http
  2. sudo firewall-cmd --permanent --add-service=https
  3. sudo firewall-cmd --reload
Альтернативно: если Вы планируете работать с утилитой IPTables.
  1. Установите iptables-services для обеспечения автозагрузки правил:
Автозагрузка правил.
  1. sudo yum install iptables-services
  1. Включите и запустите службу iptables:
Включение и запуск службы.
  1. sudo systemctl enable iptables
  2. sudo systemctl start iptables
  1. Разрешите доступ по HTTP и HTTPS с помощью следующих команд:
Проброска 80 и 443 порта.
  1. sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
  2. sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
  1. Сохраните правила iptables:
Сохранение правил.
  1. sudo service iptables save
  1. Чтобы убедиться, что правила применяются при перезагрузке, выполните:
Перезагрузите утилиту, для проверки успешности.
  1. sudo systemctl restart iptables

8. Тестирование после перезагрузки

Чтобы убедиться, что все компоненты LAMP запускаются автоматически после перезагрузки сервера, выполните следующие действия:

Перезагрузка сервера.
  1. sudo reboot

После перезагрузки сервера, проверьте статус служб:

Проверка состояния служб.
  1. sudo systemctl status httpd mariadb php-fpm

При проверке, должен отобразиться статус с текстом active (running) – это будет означать что все корректно установилось. Статус служб

9. Проверьте работоспособность веб-сервера

Для проверки работы PHP проверьте созданный ранее файл, откройте его в адресной строке браузера.

http://255.255.255.255/phptest.php, где вместо чисел 255 (255.255.255.255) нужно указать IP, который был выдан при создании сервера. Посмотреть IP адрес можете в письме об открытии услуги.

Пример

Информируем: установка успешно выполнена. Теперь можете выполнять загрузку файлов Вашего сайта у папку /var/www/html/

Рекомендации безопасности

Теперь у Вас установлен и настроен LAMP стек на Вашей системе. Это базовая конфигурация, которую можно дальше настраивать под конкретные нужды Вашего проекта. Рекомендуется регулярно обновлять компоненты LAMP для обеспечения безопасности и стабильности работы.

Напоминаем: после завершения тестирования рекомендуется удалить файл phptest.php, так как он может предоставить потенциальным злоумышленникам информацию о Вашей системе:

  1. sudo rm /var/www/html/phptest.php

Дополнительно:

  1. Рассмотрите возможность изменения стандартного порта SSH (22) на нестандартный для уменьшения количества автоматизированных атак.

  2. Используйте аутентификацию по ключам вместо паролей для SSH.

  3. Настройте fail2ban для защиты от брутфорс-атак.

  4. Регулярно проверяйте логи сервера на наличие подозрительной активности.

  5. Рассмотрите возможность использования Web Application Firewall (WAF) для дополнительной защиты веб-приложений.