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

Linux, Nginx, MySQL, PHP

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

sudo apt update

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

sudo apt install nginx

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

sudo ufw status

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

sudo ufw allow 'Nginx HTTP'
sudo apt install mysql-server

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

sudo mysql_secure_installation

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

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

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

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

Встановіть модуль 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;

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

  • listen - визначає, що буде прослуховувати порт Nginx. У цьому випадку він прослуховуватиме порт 80, який використовується за замовчуванням для протоколу HTTP.
  • root - визначає кореневий каталог документа, де зберігаються файли, що обслуговуються сайтом.
  • index - задає для Nginx пріоритет обслуговування файлів з ім'ям index.php (за наявності) під час запиту файлу індексу.
  • server_name - визначає, який серверний блок має використовуватися для заданого запиту вашого сервера. Ця директива має вказувати на доменне ім'я або публічну IP-адресу вашого сервера.
  • location / - перший блок розташування включає директиву try_files, яка перевіряє наявність файлів, що відповідають запиту URI. Якщо Nginx не зможе знайти відповідний файл, буде повернуто помилку 404.
  • location ~ \.php$ - цей блок розташування відповідає за фактичну обробку PHP за допомогою вказівки Nginx на файл конфігурації fastcgi-phphp.conf і файл php7.2-fpm.sock file, який оголошує, який сокет асоційований з php-fpm.
  • location ~ /\.ht - останній блок розташування відповідає за файли .htaccess, які Nginx не обробляє. У разі додавання директиви deny all з файлів .htaccess у кореневий каталог документа вони не будуть виводитися відвідувачам.

Після додавання цього змісту слід зберегти і закрити файл. Для активації нового серверного блоку створіть символічне посилання від нового файлу конфігурації серверного блоку (в каталозі /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

Тепер набір 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
  • linux/webserver/lemp.txt
  • Востаннє змінено: 09/05/2024 05:34
  • (зовнішнє редагування)