Ось повноцінний урок, створений у стилі CS50, де ми не просто вводимо команди, а розуміємо суть процесу.
🎓 Тема: Встановлення Nginx на Linux
(або: Як змусити ваш сервер "говорити" зі світом)
1. 🔥 Вступ: проблема та мотивація
Уявіть, що ви написали геніальний код. Це може бути простий HTML-сайт або складна веб-програма. Цей код лежить у папці на вашому віддаленому сервері (наприклад, на AWS чи DigitalOcean). Ви знаєте, що він там. Файли існують.
Але якщо ви введете IP-адресу вашого сервера в браузері прямо зараз — що ви побачите? Швидше за все — помилку "Connection Refused" (З'єднання відхилено).
Чому? Бо ваш сервер мовчить. Він як бібліотека, у якої зачинені двері, забиті вікна і немає жодного бібліотекаря. Книги (ваші файли) всередині є, але ніхто ззовні не може їх отримати.
Питання до вас: Як браузер (клієнт) має дізнатися, який саме файл йому віддати, коли він стукає по IP-адресі?
Нам потрібен посередник. Нам потрібен хтось, хто стоятиме на вході, прийматиме запити від відвідувачів ("Я хочу головну сторінку!") і швидко віддаватиме потрібні файли.
Цей "бібліотекар" або "адміністратор готелю" у світі Linux — це Web Server. І сьогодні найпопулярнішим, найшвидшим і найефективнішим із них є Nginx (читається як "Engine-X").
Без нього ваш сервер — це просто дорога флешка. З ним — це повноцінний веб-сайт.
2. 🧠 Теоретична база (без нудних лекцій)
Перш ніж ми відкриємо термінал, давайте заглянемо "під капот".
Що таке Nginx?
Це програмне забезпечення, яке слухає. Уявіть, що у вашого сервера є тисячі "дверей" (ми називаємо їх портами). * Веб-браузери за замовчуванням стукають у двері під номером 80 (для HTTP) або 443 (для HTTPS). * Nginx — це процес, який сидить біля цих дверей і чекає.
Як це працює (логіка процесу):
- Request (Запит): Користувач вводить адресу сайту. Запит летить через інтернет і вдаряється у 80-й порт вашого сервера.
- Routing (Маршрутизація): Nginx прокидається. Він дивиться в свої інструкції (конфігураційні файли). Там написано: "Якщо хтось стукає у двері 80, візьми файл
index.htmlз папки/var/www/htmlі віддай його". - 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. 😉