Зміст

Встановлення LEMP в Ubuntu

Linux, Nginx, MySQL, PHP

Крок 1 - Встановлення та налаштування веб-сервера nginx

Оновлюємо систему:

sudo apt update

Інсталюємо сам веб-сервер

sudo apt install nginx

Перевіряємо:

sudo ufw status

Відкриваємо порти для роботи веб-сервера:

sudo ufw allow 'Nginx HTTP'

Крок 2 - Встановлення MySQL

sudo apt install mysql-server

Для захисту інсталяції в комплект MySQL входить скрипт, що запитує підтвердження небезпечних змін параметрів за замовчуванням. Запустіть скрипт, ввівши таку команду:

sudo mysql_secure_installation

1. Налаштування VALIDATE PASSWORD PLUGIN відмовляємось натиснувши N

Цю функцію можна увімкнути, але після цього ви не зможете встановити легкий пароль для користувача бази даних

2. Встановлюємо пароль для root

3. На всі інші питання натискаємо Y

Крок 3 - Встановлення PHP і налаштування Nginx для використання процесора PHP

Встановіть модуль php-fpm з додатковим допоміжним пакетом php-mysql, який дасть змогу PHP взаємодіяти з серверною частиною вашої бази даних. Під час встановлення буде завантажено необхідні файли ядра PHP. Введіть наступне:

sudo apt install php-fpm php-mysql

Тепер у вас встановлені всі необхідні компоненти набору LEMP, однак вам потрібно внести ще кілька змін конфігурації, щоб Nginx використовував процесор PHP для динамічного контенту.

Ця зміна конфігурації виконується на рівні блоку сервера (блоки сервера схожі на віртуальні хости в Apache). Відкрийте новий файл конфігурації блоку сервера в каталозі /etc/nginx/sites-available/. У цьому прикладі новий файл конфігурації блоку сервера має ім'я example.com, хоча ви можете використовувати будь-яке бажане ім'я:

sudo nano /etc/nginx/sites-available/example.com

Якщо вам буде потрібно відновити конфігурацію за замовчуванням, ви можете відредагувати новий файл конфігурації блоку сервера, а не змінювати використовуваний за замовчуванням файл.

Додайте до нового файлу конфігурації блоку такий вміст, який взято з деякими модифікаціями з файлу конфігурації блоку сервера за замовчуванням:

server {
        listen 80;
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name example.com;
 
        location / {
                try_files $uri $uri/ =404;
        }
 
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }
 
        location ~ /\.ht {
                deny all;
        }
}

ВАЖЛИВО! Певіряйте версію PHP-FPM в конфігураціонному файлі в рядку fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;

Нижче описано дію цих директив і блоків розташування:

Після додавання цього змісту слід зберегти і закрити файл. Для активації нового серверного блоку створіть символічне посилання від нового файлу конфігурації серверного блоку (в каталозі /etc/nginx/sites-available/) на каталог /etc/nginx/sites-enabled/:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Потім приберіть посилання на файл конфігурації за замовчуванням з каталогу /sites-enabled/:

sudo unlink /etc/nginx/sites-enabled/default

Примітка. Якщо вам буде потрібно відновити конфігурацію за замовчуванням, ви можете зробити це за допомогою відтворення символічного посилання:

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

Протестуйте новий файл конфігурації на помилки синтаксису:

sudo nginx -t

Якщо з'являться повідомлення про будь-які помилки, поверніться і повторно перевірте ваш файл, перш ніж продовжувати.

Коли ви будете готові, перезавантажте Nginx для внесення необхідних змін:

sudo systemctl reload nginx

Крок 4 - Створення файлу PHP для тестової конфігурації

Тепер набір LEMP має бути повністю налаштований. Ви можете протестувати його, щоб переконатися, що Nginx може правильно передавати файли .php на процесор PHP.

Використовуйте текстовий редактор, щоб створити тестовий файл PHP з ім'ям info.php у кореневому каталозі документа:

sudo nano /var/www/html/info.php

Введіть у новий файл такі рядки: Це коректний код PHP, який повертатиме інформацію про ваш сервер:

<?php
phpinfo();

Підключення SSL сертифікату від Let's Encrypt за допомогою certbot

Натисніть сюди

Іноді після встановлення деяких компонентів, apache може встановитись як залежність і він буде забирати 80 порт у nginx. Для цього його порібно видалити виконавши:

sudo apt remove apache2