Модуль 3

Встановлення Nginx на Linux

Ось повноцінний урок, створений у стилі CS50, де ми не просто вводимо команди, а розуміємо суть процесу.


🎓 Тема: Встановлення Nginx на Linux

(або: Як змусити ваш сервер "говорити" зі світом)


1. 🔥 Вступ: проблема та мотивація

Уявіть, що ви написали геніальний код. Це може бути простий HTML-сайт або складна веб-програма. Цей код лежить у папці на вашому віддаленому сервері (наприклад, на AWS чи DigitalOcean). Ви знаєте, що він там. Файли існують.

Але якщо ви введете IP-адресу вашого сервера в браузері прямо зараз — що ви побачите? Швидше за все — помилку "Connection Refused" (З'єднання відхилено).

Чому? Бо ваш сервер мовчить. Він як бібліотека, у якої зачинені двері, забиті вікна і немає жодного бібліотекаря. Книги (ваші файли) всередині є, але ніхто ззовні не може їх отримати.

Питання до вас: Як браузер (клієнт) має дізнатися, який саме файл йому віддати, коли він стукає по IP-адресі?

Нам потрібен посередник. Нам потрібен хтось, хто стоятиме на вході, прийматиме запити від відвідувачів ("Я хочу головну сторінку!") і швидко віддаватиме потрібні файли.

Цей "бібліотекар" або "адміністратор готелю" у світі Linux — це Web Server. І сьогодні найпопулярнішим, найшвидшим і найефективнішим із них є Nginx (читається як "Engine-X").

Без нього ваш сервер — це просто дорога флешка. З ним — це повноцінний веб-сайт.


2. 🧠 Теоретична база (без нудних лекцій)

Перш ніж ми відкриємо термінал, давайте заглянемо "під капот".

Що таке Nginx?

Це програмне забезпечення, яке слухає. Уявіть, що у вашого сервера є тисячі "дверей" (ми називаємо їх портами). * Веб-браузери за замовчуванням стукають у двері під номером 80 (для HTTP) або 443 (для HTTPS). * Nginx — це процес, який сидить біля цих дверей і чекає.

Як це працює (логіка процесу):

  1. Request (Запит): Користувач вводить адресу сайту. Запит летить через інтернет і вдаряється у 80-й порт вашого сервера.
  2. Routing (Маршрутизація): Nginx прокидається. Він дивиться в свої інструкції (конфігураційні файли). Там написано: "Якщо хтось стукає у двері 80, візьми файл index.html з папки /var/www/html і віддай його".
  3. Response (Відповідь): Nginx віддає файл браузеру. Користувач бачить сайт.

❗️ Що треба запам'ятати залізно: Nginx не виконує ваш код (він не запускає Python чи PHP сам по собі). Його головна задача — приймати запити та віддавати контент (або передавати запит далі, але про це пізніше).

Це як офіціант. Він не готує їжу (це робить кухар — ваш бекенд), він лише приймає замовлення і приносить страву. Але якщо страва вже готова (статичний сайт), він віддає її миттєво.


3. 🧪 Приклади: Від чорного екрану до "Hello World"

Ми будемо використовувати найпопулярніший дистрибутив Linux — Ubuntu. Готові?

Крок 0. Що ми очікуємо?

Якщо ми зараз спробуємо встановити програму, не оновивши списки пакетів, ми можемо отримати застарілу версію. Тому правило гарного тону №1: спочатку оновлюємо "меню".

Крок 1. Оновлення та встановлення

sudo apt update
sudo apt install nginx -y

(Прапор -y означає "Yes", щоб система не питала нас "Ви впевнені?", а просто робила справу).

Крок 2. Перевірка пульсу

Встановили? Чудово. Але чи працює він? Чи "б'ється серце" нашого сервера?

systemctl status nginx

Що ви маєте побачити: Зелений напис active (running). Це означає, що бібліотекар вийшов на роботу і вже сидить за столом.

Якщо ви бачите це — вітаю! Ви щойно відкрили свій сервер для світу.

Крок 3. Момент істини

Відкрийте браузер на своєму комп'ютері. Введіть IP-адресу вашого сервера (наприклад, http://192.168.1.50 або вашу публічну IP).

Ви побачите білу сторінку з написом:

Welcome to nginx!

Чому результат саме такий? Тому що Nginx після встановлення вже має дефолтну конфігурацію. Він налаштований так: "Якщо я працюю, покажи людям цей файл-заглушку, щоб вони знали, що все ОК".

Цей файл зазвичай лежить тут: /var/www/html/index.html.


4. 🛠 Практична частина

Тепер ваша черга. Дивитися, як я пишу код — нудно. Робіть це своїми руками.

Завдання 1: Знайди та знищ (жартую, зміни) Зайдіть у файл, який Nginx показує за замовчуванням. 1. Відкрийте файл редактором (наприклад, nano): sudo nano /var/www/html/index.html 2. Зітріть все і напишіть: <h1>Привіт, це мій перший сервер на Nginx!</h1>. 3. Збережіть (Ctrl+O, Enter) і вийдіть (Ctrl+X). 4. Оновіть сторінку в браузері. Текст змінився? Чому? (Бо Nginx читає файл щоразу при запиті).

Завдання 2: Управління живленням Уявіть, що треба закрити сайт на технічне обслуговування. 1. Зупиніть Nginx: sudo systemctl stop nginx. 2. Спробуйте зайти на сайт через браузер. Що бачите? (Має бути помилка з'єднання). 3. Запустіть знову: sudo systemctl start nginx.

Завдання 3: "А що, якщо..." (Firewall) Дуже часта проблема новачків: Nginx запущено, але сайт не вантажиться. Причина — брандмауер (firewall). Перевірте, чи дозволено трафік: sudo ufw app list Якщо бачите Nginx HTTP, дозвольте його: sudo ufw allow 'Nginx HTTP'

Завдання 4: Міні-кейс Створіть у папці /var/www/html новий файл secret.html. Напишіть там будь-який текст. Спробуйте відкрити його через браузер: http://ваш-ip/secret.html. Питання: Чи довелося вам перезавантажувати Nginx, щоб цей файл стало видно? (Спойлер: Ні. Чому? Бо це статичний файл, Nginx просто шукає його на диску в момент запиту).


5. 💡 Мислення як у розробника

Ви встановили Nginx. Але чим новачок відрізняється від сеньйора?

1. Перевірка конфігурації

Новачок змінює налаштування і одразу перезапускає сервер (restart). Якщо в налаштуваннях помилка (забули крапку з комою ;) — сайт падає для всіх користувачів.

Як думає профі: "Я спочатку перевірю, чи не написав я дурниць, а тільки потім застосую зміни". Команда-рятівник:

sudo nginx -t

(t = test. Запам'ятайте це на все життя. Якщо там написано "syntax is ok" — тільки тоді робіть reload).

2. Restart vs Reload

  • Restart: Вбиває процес і запускає новий. Сайт на секунду "лягає". З'єднання обриваються.
  • Reload: Nginx перечитує інструкції "на льоту", не перериваючи обслуговування поточних клієнтів.

Порада: Завжди використовуйте sudo systemctl reload nginx для зміни налаштувань. Бережіть нерви користувачів.

3. Права доступу (Permissions)

Типова помилка: ви завантажили файли на сервер, але Nginx пише "403 Forbidden". Це означає, що "бібліотекар" не має права брати цю книгу. Nginx зазвичай працює від імені користувача www-data. Переконайтеся, що файли доступні для читання.


6. 🧩 Підсумок

Отже, що ми сьогодні зробили? Ми не просто ввели apt install. Ми: 1. Зрозуміли, що серверу потрібен "слухач" портів. 2. Встановили Nginx і перевірили його статус. 3. Змінили HTML-код і побачили результат у реальному часі. 4. Навчилися тестувати конфігурацію, щоб не "покласти" продакшн (nginx -t).

Тепер ви вмієте: перетворювати "німий" Linux-сервер на публічний веб-ресурс, який може побачити будь-хто в інтернеті.

🔜 Що далі? Зараз ми віддаємо лише прості HTML-файли. Але сучасний веб — це динаміка (бази даних, логіка, Python, Node.js). На наступному уроці ми дізнаємося, як налаштувати Nginx як Reverse Proxy — щоб він не просто віддавав файли, а передавав складні задачі "на кухню" до Python або Node.js.

Це було CS50... тобто, це був урок про Nginx. 😉