Як встановити Linux, Nginx, MySQL, PHP (LEMP) Stack на Ubuntu: Повний посібник
LEMP stack — абревіатура для Linux, Nginx, MySQL та PHP — є однією з найбільш широко використовуваних конфігурацій веб-серверів для живлення динамічних веб-сайтів та високопродуктивних веб-додатків. Поєднуючи надійну стабільність Linux, блискавичну швидкість Nginx, надійні можливості управління даними MySQL та універсальність PHP, LEMP stack забезпечує потужне, масштабоване та ресурсоефективне середовище хостингу.
Незалежно від того, розгортаєте ви особистий блог, веб-сайт компанії чи складний корпоративний додаток, правильно налаштований LEMP stack забезпечує вам кращу масштабованість, швидше завантаження сторінок та ефективне управління пам’яттю — особливо в умовах високого трафіку.
Якщо вам потрібна надійна основа для запуску цього стеку, VPS Hosting AlexHost забезпечує високопродуктивні віртуальні сервери на базі Linux з повним доступом root, надаючи вам повний контроль над кожним компонентом вашого LEMP середовища. Поєднайте це з SSL сертифікатом, щоб захистити ваш додаток з першого дня.
У цьому комплексному посібнику ми проведемо вас через кожен крок встановлення та налаштування повного LEMP стеку на сервері Ubuntu — від початкової підготовки системи до тестування вашого живого PHP середовища.
1. Передумови
Перед тим як почати, переконайтеся, що у вас є наступне:
- Сервер з Ubuntu 18.04, 20.04 або 22.04 LTS
- Обліковий запис користувача з привілеями sudo
- SSH доступ або прямий доступ до терміналу вашого сервера
- Зареєстроване доменне ім’я (опціонально, але рекомендується для виробничих розгортань — ви можете зареєструвати його через AlexHost Domain Registration)
> Корисна порада: Для чистого, ізольованого середовища з гарантованими ресурсами, план VPS Hosting є ідеальною відправною точкою для будь-якого розгортання LEMP.
2. Оновіть вашу систему
Перед встановленням будь-яких пакетів критично важливо оновити індекс пакетів і застосувати всі очікуючі оновлення. Це гарантує, що ви працюєте з найновішими, найбезпечнішими версіями всього програмного забезпечення.
Відкрийте ваш термінал і запустіть:
sudo apt update && sudo apt upgrade -yЦя команда оновлює локальну базу даних пакетів і оновлює всі встановлені пакети до їхніх найновіших доступних версій.
3. Встановлення Nginx
Nginx (вимовляється “engine-x”) — це високопродуктивний, керований подіями веб-сервер і зворотний проксі. На відміну від Apache, Nginx обробляє одночасні з’єднання з мінімальним споживанням пам’яті, що робить його переважним вибором для середовищ з високим трафіком.
Крок 1: Встановлення Nginx
sudo apt install nginx -yКрок 2: Запуск і активація Nginx
Після встановлення запустіть сервіс Nginx і налаштуйте його на автоматичний запуск при завантаженні системи:
sudo systemctl start nginx
sudo systemctl enable nginxКрок 3: Перевірка роботи Nginx
Перевірте статус сервісу, щоб підтвердити, що Nginx активний:
sudo systemctl status nginxВи повинні побачити вихідні дані, що вказують на те, що сервіс активний (запущений). Ви також можете відкрити веб-браузер і перейти на IP-адресу вашого сервера:
http://your_server_ipЯкщо Nginx працює правильно, вас привітає сторінка за замовчуванням “Welcome to nginx!”.
Крок 4: Налаштування брандмауера (якщо застосовується)
Якщо у вас увімкнено UFW (Uncomplicated Firewall), дозвольте трафік HTTP і HTTPS:
sudo ufw allow 'Nginx Full'
sudo ufw status4. Встановлення MySQL
MySQL — це потужна, відкрита система управління реляційними базами даних (RDBMS), яка служить основою даних для більшості динамічних веб-додатків, включаючи WordPress, Joomla та користувацькі PHP-додатки.
Крок 1: Встановлення сервера MySQL
sudo apt install mysql-server -yКрок 2: Захист встановлення MySQL
Після встановлення запустіть вбудований скрипт посилення безпеки. Цей скрипт допомагає встановити надійний пароль root, видалити анонімних користувачів, вимкнути віддалене входження root та видалити тестову базу даних:
sudo mysql_secure_installationВам буде запропонована серія запитань. Рекомендовані відповіді для виробничого сервера:
| Запит | Рекомендована відповідь |
|---|---|
| Налаштувати компонент VALIDATE PASSWORD? | Так |
| Рівень політики перевірки пароля | 2 (STRONG) |
| Видалити анонімних користувачів? | Так |
| Заборонити віддалене входження root? | Так |
| Видалити тестову базу даних? | Так |
| Перезавантажити таблиці привілеїв? | Так |
Крок 3: Перевірка роботи MySQL
sudo systemctl status mysqlКрок 4: Вхід до MySQL (необов’язкова перевірка)
sudo mysql -u root -pВведіть пароль root, коли буде запропоновано. Введіть exit для виходу з оболонки MySQL.
5. Встановлення PHP
PHP (Hypertext Preprocessor) — це мова сценаріїв на стороні сервера, яка обробляє динамічний вміст і взаємодіє з MySQL для надання веб-сторінок, керованих даними. При використанні Nginx PHP обробляється через PHP-FPM (FastCGI Process Manager), який обробляє PHP-запити незалежно від веб-сервера для підвищення продуктивності.
Крок 1: Встановлення PHP-FPM та розширення MySQL
sudo apt install php-fpm php-mysql -yВи також можете встановити часто використовувані розширення PHP для ширшої сумісності додатків:
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip -yКрок 2: Налаштування PHP-FPM для безпеки
Відкрийте файл конфігурації PHP-FPM. Замініть 8.1 на встановлену версію PHP (перевірте за допомогою php -v):
sudo nano /etc/php/8.1/fpm/php.iniЗнайдіть директиву cgi.fix_pathinfo і встановіть її на 0 для запобігання критичній вразливості безпеки:
cgi.fix_pathinfo=0> Чому це важливо: Якщо cgi.fix_pathinfo встановлено на 1, PHP спробує виконати найближчий файл, який він може знайти, якщо запитаний PHP-файл не існує. Цю поведінку можуть використовувати зловмисники для виконання довільного коду.
Збережіть і закрийте файл (Ctrl+X, потім Y, потім Enter).
Крок 3: Перезавантаження PHP-FPM
Застосуйте зміни конфігурації, перезавантаживши службу PHP-FPM:
sudo systemctl restart php8.1-fpm6. Налаштування Nginx для обробки PHP
За замовчуванням Nginx не знає, як обробляти файли PHP. Вам потрібно створити блок сервера (еквівалент віртуального хоста Apache в Nginx), який інструктує Nginx передавати PHP-запити до PHP-FPM для обробки.
Крок 1: Створення каталогу веб-кореня
Створіть каталог, де будуть зберігатися файли вашого веб-сайту:
sudo mkdir -p /var/www/your_domain
sudo chown -R www-data:www-data /var/www/your_domain
sudo chmod -R 755 /var/www/your_domainЗамініть your_domain на вашу фактичну назву домену або описову назву проекту.
Крок 2: Створення нового блоку сервера Nginx
Створіть новий файл конфігурації Nginx для вашого сайту:
sudo nano /etc/nginx/sites-available/your_domainДодайте наступний блок конфігурації. Уважно прочитайте вбудовані коментарі — вони пояснюють, що робить кожна директива:
server {
listen 80;
listen [::]:80;
server_name your_domain www.your_domain; # Replace with your domain or server IP
root /var/www/your_domain; # Document root — where your files live
index index.php index.html index.htm; # Default files to serve
# Handle all requests; return 404 if file not found
location / {
try_files $uri $uri/ =404;
}
# Pass PHP scripts to PHP-FPM for processing
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # Adjust PHP version as needed
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Deny access to hidden files (e.g., .htaccess)
location ~ /.ht {
deny all;
}
}> Важливо: Замініть your_domain на вашу фактичну назву домену та відрегулюйте php8.1-fpm.sock відповідно до встановленої версії PHP.
Крок 3: Активація блоку сервера
Створіть символічне посилання з sites-available на sites-enabled для активації конфігурації:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/Щоб уникнути потенційної проблеми з пам’яттю хеш-бакету, також рекомендується відкрити основну конфігурацію Nginx та переконатися, що директива server_names_hash_bucket_size розкомментована:
sudo nano /etc/nginx/nginx.confЗнайдіть та розкомментуйте:
server_names_hash_bucket_size 64;Крок 4: Тестування конфігурації Nginx
Перед перезавантаженням Nginx завжди тестуйте конфігурацію на помилки синтаксису:
sudo nginx -tЯкщо вивід показує:
nginx: configuration file /etc/nginx/nginx.conf test is successfulВи можете продовжувати.
Крок 5: Перезавантаження Nginx
Застосуйте всі зміни, перезавантаживши сервіс Nginx:
sudo systemctl restart nginx7. Створення та тестування файлу PHP Info
Щоб підтвердити, що Nginx правильно передає PHP запити до PHP-FPM, створіть простий PHP тестовий файл у кореневій папці документів.
Крок 1: Створення файлу PHP Info
sudo nano /var/www/your_domain/info.phpДодайте такий вміст:
<?php
phpinfo();
?>Збережіть та закрийте файл.
Крок 2: Доступ до сторінки PHP Info
Відкрийте веб-браузер та перейдіть на:
http://your_domain/info.phpАбо, якщо ви ще не налаштували домен:
http://your_server_ip/info.phpВи повинні побачити сторінку інформації PHP — детальний огляд вашої інсталяції PHP, завантажених модулів, значень конфігурації та змінних середовища. Це підтверджує, що всі три компоненти (Nginx, PHP-FPM та MySQL) працюють разом правильно.
Крок 3: Видалення файлу PHP Info (критичний крок безпеки)
Після того як ви підтвердили, що все працює, негайно видаліть файл info.php. Цей файл розкриває чутливі деталі конфігурації сервера, які можуть бути використані зловмисниками:
sudo rm /var/www/your_domain/info.php8. Наступні кроки: Посиліть та оптимізуйте ваш LEMP Stack
З вашим LEMP stack запущеним та працюючим, розгляньте наступні додаткові кроки для підготовки вашого сервера до виробництва:
Увімкніть HTTPS з безплатним SSL сертифікатом
Захистіть ваш сайт за допомогою шифрування TLS/SSL, використовуючи Certbot та Let’s Encrypt:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain -d www.your_domainКрім того, дослідіть SSL сертифікати AlexHost для преміум, комерційно перевірених сертифікатів, які забезпечують вищі рівні довіри для бізнес та електронної комерції додатків.
Оптимізуйте продуктивність Nginx
Додайте наступні директиви до конфігурації Nginx для покращення продуктивності:
# Enable Gzip compression
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
# Enable browser caching for static assets
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}Налаштуйте виділеного користувача MySQL
Уникайте використання облікового запису root MySQL для ваших додатків. Створіть виділеного користувача бази даних з обмеженими привілеями:
CREATE DATABASE your_app_db;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON your_app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;Розгляньте панель керування для простішого управління
Якщо ви віддаєте перевагу графічному інтерфейсу для управління вашим LEMP stack, віртуальними хостами Nginx, базами даних та обліковими записами електронної пошти, розгляньте розгортання панелі керування. AlexHost пропонує VPS з cPanel та низку інших панелей керування VPS для спрощення адміністрування сервера без втрати продуктивності або контролю.
9. Висновок
Ви успішно встановили та налаштували повний LEMP stack (Linux, Nginx, MySQL, PHP) на своєму сервері Ubuntu. Ось короткий огляд того, що ви досягли:
- ✅ Nginx встановлений, запущений та налаштований як ваш веб-сервер
- ✅ MySQL встановлений та захищений скриптом посилення безпеки
- ✅ PHP-FPM встановлений з конфігурацією, орієнтованою на безпеку
- ✅ Nginx server block налаштований для маршрутизації PHP запитів до PHP-FPM
- ✅ PHP обробка перевірена через
phpinfo()тестову сторінку
Цей stack надає вам готову до виробництва основу для розміщення практично будь-якого PHP-додатку — від WordPress та Laravel до спеціально розроблених платформ. Комбінація архітектури на основі подій Nginx та управління процесами PHP-FPM робить її особливо придатною для робочих навантажень з високою одночасністю.
Для найкращої продуктивності та надійності розмістіть ваш LEMP stack у спеціально розробленому середовищі Linux. Плани VPS Hosting AlexHost пропонують сховище на основі SSD, гарантовану RAM, повний root доступ та цілодобову технічну підтримку — все, що вам потрібно для запуску швидкого, безпечного та масштабованого веб-додатку.
Пам’ятайте про регулярне оновлення всіх компонентів, моніторинг журналів вашого сервера та впровадження брандмауера та системи виявлення вторгнень як частини вашої постійної позиції безпеки.
на всіх хостингових послугах