*Cube-Host — повний спектр хмарних послуг!!

Як встановити та налаштувати LAMP на VPS під управлінням Linux

How to install and configure LAMP on Linux VPS

LAMP (Linux Apache MySQL/MariaDB PHP) — це класичний і надійний стек для веб-сайтів, API та багатьох популярних CMS-платформ. У цьому посібнику ви налаштуєте Apache, забезпечите безпеку MySQL, встановите модулі PHP, налаштуєте віртуальний хост Apache, перевірите зв’язок між PHP та базою даних, а також, за бажанням, увімкнете HTTPS за допомогою Let’s Encrypt.

Для виробничих проектів почніть зі стабільного VPS на базі Linux, який має достатню потужність процесора, оперативної пам’яті та дискової системи, щоб веб-сервер і база даних залишалися чуйними під навантаженням.

Підготовка

  • VPS з Ubuntu 20.04/22.04/24.04 або Debian 11/12.
  • Користувач із доступом до sudo та SSH.
  • Доменне ім’я (не обов’язкове, але рекомендується для HTTPS) та відкриті порти 80/443 у брандмауері/панелі провайдера.

Порада: спочатку виконайте початкове оновлення. Це зменшить проблеми з інсталяцією та застосує виправлення безпеки.

sudo apt update && sudo apt -y upgrade

Apache: інсталяція, автозапуск та перевірка

sudo apt install -y apache2
sudo systemctl enable --now apache2

# Quick checks
sudo systemctl status apache2 --no-pager
curl -I http://127.0.0.1
Apache installation and verification on Linux VPS

Ви повинні побачити HTTP/1.1 200 OK. Кореневим каталогом веб-сервера за замовчуванням зазвичай є /var/www/html/.

Брандмауер UFW для HTTP/HTTPS та стан служби

Якщо ви використовуєте UFW (Ubuntu/Debian), застосуйте політику «за замовчуванням забороняти вхідний трафік» і дозвольте лише необхідні порти. Завжди спочатку дозвольте SSH, щоб уникнути блокування доступу.

sudo apt install -y ufw

# Safe defaults
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Allow SSH first
sudo ufw allow OpenSSH

# Allow Apache ports
sudo ufw allow 'Apache Full'

# Enable and verify
sudo ufw enable
sudo ufw status verbose
UFW rules for HTTP and HTTPS on Linux VPS

Якщо ви не використовуєте UFW, переконайтеся, що порти 80/443 дозволені у хмарному брандмауері/групі безпеки вашого провайдера.

Сервер MySQL: встановлення та базовий захист

У Debian/Ubuntu mysql-server встановлює MySQL (часто з безпечною автентифікацією за замовчуванням). Якщо ви віддаєте перевагу MariaDB, ви можете встановити mariadb-server замість нього.

sudo apt install -y mysql-server
sudo systemctl enable --now mysql

# Security hardening wizard
sudo mysql_secure_installation

Рекомендовані відповіді в mysql_secure_installation:

  • Увімкнути перевірку надійності пароля: Так (якщо пропонується).
  • Видалити анонімних користувачів: Так.
  • Заборонити віддалений вхід користувача root: Так.
  • Видалити тестову базу даних: Так.
  • Перезавантажити привілеї: Так.
mysql_secure_installation on Linux VPS

Створення бази даних та користувача для додатка

Створіть виділену базу даних та виділеного користувача з лише необхідними привілеями. Уникайте використання облікового запису root MySQL у додатках.

sudo mysql

У консолі MySQL:

CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD_HERE';

GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';

FLUSH PRIVILEGES;

EXIT;
Creating MySQL database and user on Linux VPS

Примітка щодо безпеки: для віддаленого доступу до бази даних використовуйте окремого користувача, наприклад 'appuser'@'%' лише якщо це дійсно необхідно, а потім обмежте доступ за допомогою правил брандмауера та налаштувань прив’язки MySQL. У більшості випадків зберігайте MySQL приватним та локальним.

PHP: Встановлення модулів та тестова сторінка

Встановіть PHP та загальні модулі, які використовуються CMS та фреймворками. Ви можете додати більше пізніше, залежно від вашого додатка.

sudo apt install -y php libapache2-mod-php php-mysql php-cli php-curl php-xml php-mbstring php-zip php-gd php-intl

Створіть тимчасовий phpinfo() файл, щоб перевірити, чи працює PHP через Apache:

echo "" | sudo tee /var/www/html/info.php

Відкрийте http:///info.php у браузері та переконайтеся, що сторінка завантажується. Потім видаліть файл (залишення його створює ризик для безпеки):

sudo rm -f /var/www/html/info.php
PHP module installation and phpinfo test on Linux VPS

Продуктивний каталог та віртуальний хост Apache

Для виробничого середовища найкраще створити окремий каталог для кожного домену та налаштувати виділений віртуальний хост.

# Replace example.com with your domain
sudo mkdir -p /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/example.com
sudo chmod -R 755 /var/www/example.com

# Simple test page
echo "" > /var/www/example.com/public_html/index.php

Створіть файл конфігурації /etc/apache2/sites-available/example.com.conf:

sudo nano /etc/apache2/sites-available/example.com.conf

Приклад віртуального хосту:


    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /var/www/example.com/public_html

    
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    

    ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
Apache virtual host configuration for LAMP on Linux VPS

Примітка: AllowOverride All потрібен лише у випадку, якщо ви використовуєте .htaccess (перенаправлення, правила кешування тощо). Якщо це вам не потрібно, встановіть AllowOverride None для кращої продуктивності та безпеки.

Активуйте сайт, увімкніть mod_rewrite та перезавантажте

sudo a2ensite example.com.conf
sudo a2enmod rewrite headers

# Optional: disable default site to avoid conflicts
# sudo a2dissite 000-default.conf

sudo apache2ctl configtest
sudo systemctl reload apache2
Enable Apache site and reload configuration on Linux VPS

Тепер відкрийте свій домен (або IP-адресу сервера) і переконайтеся, що завантажується сторінка Hello from LAMP!

Перевірка з’єднання PHP ↔ MySQL (PDO)

Створіть /var/www/example.com/public_html/dbtest.php (використовуйте ім’я вашої БД/користувача/пароль):

 PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]);
    echo "1";
} catch (Throwable $e) {
    http_response_code(500);
    echo "DB connection failed";
}

Відкрийте http://example.com/dbtest.php → ви повинні побачити 1. Потім видаліть файл (він призначений лише для тестування):

rm -f /var/www/example.com/public_html/dbtest.php
PDO test for PHP and MySQL connection on Linux VPS

HTTPS за 2 хвилини (бонус)

Якщо ваш домен вказує на сервер і порт 80 доступний, встановіть безкоштовний сертифікат за допомогою Certbot. Він також налаштує перенаправлення та автоматичне поновлення.

sudo apt update
sudo apt install -y certbot python3-certbot-apache

sudo certbot --apache -d example.com -d www.example.com --redirect 
  --agree-tos -m admin@example.com --no-eff-email

# Test renewal
sudo certbot renew --dry-run

Налаштування PHP для виробничого середовища (коротко)

Відредагуйте конфігурацію Apache PHP (шлях залежить від версії): /etc/php/*/apache2/php.ini. Рекомендовані базові значення:

  • expose_php = Off
  • memory_limit = 256M (налаштуйте відповідно до навантаження вашого додатка)
  • upload_max_filesize та post_max_size відповідно до вашої CMS
  • date.timezone = UTC (або вашому місцевому часовому поясу)
sudo systemctl reload apache2

Аналоги для AlmaLinux/Rocky/CentOS (RHEL)

У системах на базі RHEL Apache httpd, БД зазвичай є MariaDB, а брандмауер зазвичай firewalld.

sudo dnf -y update
sudo dnf install -y httpd mariadb-server php php-mysqlnd php-cli php-gd php-mbstring php-xml php-opcache

sudo systemctl enable --now httpd mariadb

# Open firewall
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

# Check Apache
curl -I http://127.0.0.1

Конфігурації віртуальних хостів зазвичай розміщуються в /etc/httpd/conf.d/ (наприклад, /etc/httpd/conf.d/example.com.conf), після чого перезавантажується httpd.

Перелік перевірок при запуску LAMP

  • Apache працює, порти 80/443 відкриті, правила перенаправлення працюють, якщо потрібно.
  • MySQL захищений, створено appdb та appuser.
  • PHP встановлено з необхідними модулями; тестові файли (info.php, dbtest.php) видалено.
  • Віртуальний хост увімкнено, і він вказує на правильний DocumentRoot.
  • HTTPS увімкнено (якщо домен існує), а автоматичне поновлення перевірено.

Розгортання LAMP на готовому до роботи VPS під Linux

Потрібна стабільна платформа для Apache, MySQL та PHP? Почніть із надійного VPS на базі Linux та розгорніть чистий стек LAMP менш ніж за годину, виконавши наведені вище кроки.

Prev
Menu