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. Оновлення системи

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

Оновлення системи.
  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

6. Перевірка статусу сервісів

Після встановлення всіх компонентів LAMP, перевірте їх статус та переконайтеся, що вони налаштовані на автозапуск:

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

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

Переконайтеся, що всі служби додані до автозапуску:

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

7. Налаштування файрвола для 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

8. Тестування після перезавантаження

Щоб переконатися, що всі компоненти LAMP запускаються автоматично після перезавантаження сервера, виконайте такі дії:

Перезавантаження сервера.
  1. sudo reboot

Після перезавантаження сервера перевірте статус служб:

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

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

9. Перевірте працездатність веб-сервера

Для перевірки роботи 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) для додаткового захисту веб-додатків.