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. Обновление системы
Перед началом установки обновите список пакетов и саму систему:
- sudo apt update && sudo apt upgrade -y
2. Установка Apache
Установите веб-сервер Apache:
- sudo apt install apache2 -y
- sudo systemctl enable apache2
3. Установка MySQL
Установите MySQL сервер:
- sudo apt install mysql-server -y
- sudo systemctl enable mysql
После установки запустите скрипт безопасной установки MySQL:
- 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 репозиторий:
- sudo add-apt-repository ppa:ondrej/php -y
- sudo apt update
Затем установите PHP и необходимые модули:
- 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 или другой нужной версии используйте сторонний репозиторий:
- sudo apt install apt-transport-https lsb-release ca-certificates -y
- sudo wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
- echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
- sudo apt update
Затем установите PHP и необходимые модули:
- 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 -v
Вывод команды отобразит установленную версию PHP:
5. Настройка Apache для PHP
Создайте тестовый PHP файл:
- echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/phpinfo.php
5. Проверка статуса сервисов
После установки всех компонентов LAMP, проверьте их статус и убедитесь, что они настроены на автозапуск:
- sudo systemctl status apache2 mysql php8.1-fpm
При проверке, должен отобразиться статус с текстом active (running) – это будет означать что все корректно установилось.
Убедитесь, что все службы добавлены в автозапуск:
- sudo systemctl enable apache2 mysql php8.1-fpm
6. Настройка файрвола для Debian и Ubuntu
Если Вы используете UFW (Uncomplicated Firewall), разрешите HTTP и HTTPS трафик:
- sudo ufw allow "Apache Full"
Альтернативно: если Вы планируете работать с утилитой IPTables.
Выполните команды для автозагрузки правил:
- sudo apt install iptables-persistent
- systemctl enable netfilter-persistent.service
Затем, разрешите доступ HTTP и HTTPS, выполнив следующие команды:
- iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
- iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
7. Тестирование после перезагрузки
Чтобы убедиться, что все компоненты LAMP запускаются автоматически после перезагрузки сервера, выполните следующие действия:
- sudo reboot
После перезагрузки сервера, проверьте статус служб:
- sudo systemctl status apache2 mysql php8.1-fpm
При проверке, должен отобразиться статус с текстом active (running) – это будет означать что все корректно установилось.
8. Проверьте работоспособность веб-сервера
Для проверки работы PHP проверьте созданный ранее файл, откройте его в адресной строке браузера.
http://255.255.255.255/phpinfo.php
, где вместо чисел 255 (255.255.255.255
) нужно указать IP, который был выдан при создании сервера.
Посмотреть IP адрес можете в письме об открытии услуги.
Информируем: установка успешно выполнена. Теперь можете выполнять загрузку файлов Вашего сайта у папку /var/www/html/
Установка для CentOS, AlmaLinux и RockyLinux
1. Обновление системы
Перед началом установки обновите систему:
- sudo dnf update -y
2. Установка Apache
Установите веб-сервер Apache:
- sudo dnf install httpd -y
- sudo systemctl start httpd
- sudo systemctl enable httpd
3. Установка MySQL (MariaDB)
Установите MariaDB:
- sudo dnf install mariadb-server -y
- sudo systemctl start mariadb
- sudo systemctl enable mariadb
После установки запустите скрипт безопасной установки MariaDB:
- 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 выполните следующие команды:
- sudo dnf install epel-release -y
- sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm -y
- sudo dnf module enable php:remi-8.1 -y
- 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
- sudo systemctl restart httpd
CentOS 8, AlmaLinux 8, RockyLinux 8: установка PHP 8.1.
Для CentOS 8, AlmaLinux 8 и RockyLinux 8 используйте dnf
и установите репозитории:
- sudo dnf install epel-release -y
- sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
- sudo dnf module enable php:remi-8.1 -y
- 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
- sudo systemctl restart httpd
CentOS 7: установка PHP 8.1.
Для CentOS 7 используйте yum
и установите репозиторий EPEL и Remi:
- sudo yum install epel-release -y
- sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
- sudo yum-config-manager --enable remi-php81
- 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
- sudo systemctl restart httpd
Примечание: если Вам нужна другая версия PHP (например, PHP 7.4 или PHP 8.2), замените php8.1
на нужную версию.
Вы можете проверить установленную версию PHP командой:
- php -v
Вывод команды отобразит установленную версию PHP:
5. Настройка Apache для PHP
Создайте тестовый PHP файл:
- echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/phpinfo.php
6. Проверка статуса сервисов
После установки всех компонентов LAMP, проверьте их статус и убедитесь, что они настроены на автозапуск:
- sudo systemctl status httpd mariadb php-fpm
При проверке, должен отобразиться статус с текстом active (running) – это будет означать что все корректно установилось.
Убедитесь, что все службы добавлены в автозапуск:
- sudo systemctl enable httpd mariadb php-fpm
7. Настройка файрвола для CentOS, AlmaLinux и RockyLinux
Разрешите HTTP и HTTPS трафик через файрвол:
- sudo firewall-cmd --permanent --add-service=http
- sudo firewall-cmd --permanent --add-service=https
- sudo firewall-cmd --reload
Альтернативно: если Вы планируете работать с утилитой IPTables.
- Установите
iptables-services
для обеспечения автозагрузки правил:
- sudo yum install iptables-services
- Включите и запустите службу
iptables
:
- sudo systemctl enable iptables
- sudo systemctl start iptables
- Разрешите доступ по HTTP и HTTPS с помощью следующих команд:
- sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
- sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
- Сохраните правила
iptables
:
- sudo service iptables save
- Чтобы убедиться, что правила применяются при перезагрузке, выполните:
- sudo systemctl restart iptables
8. Тестирование после перезагрузки
Чтобы убедиться, что все компоненты LAMP запускаются автоматически после перезагрузки сервера, выполните следующие действия:
- sudo reboot
После перезагрузки сервера, проверьте статус служб:
- sudo systemctl status httpd mariadb php-fpm
При проверке, должен отобразиться статус с текстом active (running) – это будет означать что все корректно установилось.
9. Проверьте работоспособность веб-сервера
Для проверки работы PHP проверьте созданный ранее файл, откройте его в адресной строке браузера.
http://255.255.255.255/phpinfo.php
, где вместо чисел 255 (255.255.255.255
) нужно указать IP, который был выдан при создании сервера.
Посмотреть IP адрес можете в письме об открытии услуги.
Информируем: установка успешно выполнена. Теперь можете выполнять загрузку файлов Вашего сайта у папку /var/www/html/
Рекомендации безопасности
Теперь у Вас установлен и настроен LAMP стек на Вашей системе. Это базовая конфигурация, которую можно дальше настраивать под конкретные нужды Вашего проекта. Рекомендуется регулярно обновлять компоненты LAMP для обеспечения безопасности и стабильности работы.
Напоминаем:
после завершения тестирования рекомендуется удалить файл phpinfo.php
, так как он может предоставить потенциальным злоумышленникам информацию о Вашей системе:
- sudo rm /var/www/html/phpinfo.php
Дополнительно:
-
Рассмотрите возможность изменения стандартного порта SSH (22) на нестандартный для уменьшения количества автоматизированных атак.
-
Используйте аутентификацию по ключам вместо паролей для SSH.
-
Настройте fail2ban для защиты от брутфорс-атак.
-
Регулярно проверяйте логи сервера на наличие подозрительной активности.
-
Рассмотрите возможность использования Web Application Firewall (WAF) для дополнительной защиты веб-приложений.