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; RockyLinux 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
6. Перевірка статусу сервісів
Після встановлення всіх компонентів LAMP, перевірте їх статус та переконайтеся, що вони налаштовані на автозапуск:
- sudo systemctl status apache2 mysql php8.1-fpm
При перевірці має відобразитися статус з текстом active (running) – це означатиме, що все коректно встановилося.
Переконайтеся, що всі служби додані до автозапуску:
- sudo systemctl enable apache2 mysql php8.1-fpm
7. Налаштування файрвола для 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
8. Тестування після перезавантаження
Щоб переконатися, що всі компоненти LAMP запускаються автоматично після перезавантаження сервера, виконайте такі дії:
- sudo reboot
Після перезавантаження сервера перевірте статус служб:
- sudo systemctl status apache2 mysql php8.1-fpm
При перевірці має відобразитися статус з текстом active (running) – це означатиме, що все коректно встановилося.
9. Перевірте працездатність веб-сервера
Для перевірки роботи 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) для додаткового захисту веб-додатків.