Модуль 33

Налаштування серверного середовища

Ось готовий урок, згенерований за твоїм майстер-промптом.


🎓 CS50-style: Налаштування серверного середовища

Привіт, друзі! 👋 Це CS50 (умовно 😉), і сьогодні ми виходимо із «пісочниці».

Досі ви писали код на своєму власному ноутбуці. Ви запускали програму, бачили результат, раділи, а потім закривали кришку ноутбука. І що ставалося з вашою програмою? Правильно, вона «засинала» разом із комп'ютером.

Але ж сайти Google, Facebook або «Дія» не лягають спати, коли їхні розробники йдуть додому, правда?

Сьогодні ми поговоримо про те, як змусити ваш код жити вічно (або хоча б доки ви платите за хостинг). Тема нашого заняття: Налаштування серверного середовища.


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

Уявіть, що ви — шеф-кухар. Ваш ноутбук — це ваша домашня кухня. Тут зручно, все під рукою, ви можете смажити яєчню в піжамі, і ніхто вас не сварить, якщо ви розлили молоко.

Але раптом ви хочете відкрити ресторан для тисяч людей. Чи можете ви готувати для них на своїй домашній кухні? Риторичне питання: Звісно, ні. Вам не вистачить місця, потужності плити, і, зрештою, ваша мама (або сусід) вижене вас із дому через постійний натовп клієнтів.

Вам потрібна професійна кухня. У світі IT ця «професійна кухня» — це Сервер.

Проблема: Ваш код працює на вашому комп'ютері («It works on my machine»), але це не означає, що він працюватиме в інтернеті. Чому це важливо: Без налаштованого сервера ваш геніальний стартап побачить лише ваша кішка. Щоб світ побачив ваш продукт, ви маєте перенести його в середовище, яке: 1. Працює 24/7. 2. Доступне з будь-якої точки світу. 3. Захищене і стабільне.

Ми переїжджаємо з "Localhost" у "Production". Поїхали! 🚀


2. 🧠 Теоретична база (без нудьги)

Давайте розберемо, що таке цей «сервер», не занурюючись у мікросхеми.

Що таке сервер?

Це просто комп'ютер. Серйозно. Тільки він стоїть не у вас під столом, а у великому холодному приміщенні (дата-центрі), десь у Франкфурті чи Вірджинії. У нього немає монітора, клавіатури та мишки.

Як же ми ним керуємо? Уявіть довгу-довгу невидиму руку, яка тягнеться через інтернет і натискає клавіші на тому комп'ютері. Ця «рука» називається SSH (Secure Shell).

Що «під капотом»?

Коли ви орендуєте сервер (VPS), ви зазвичай отримуєте «голу» операційну систему (найчастіше Linux). Вона як нова квартира без меблів.

Вам потрібно завезти туди «меблі» — Залежності (Dependencies): 1. Web Server (Nginx/Apache) — це «швейцар», який зустрічає запити користувачів і направляє їх куди треба. 2. Runtime (Node.js, Python, PHP) — це «перекладач», який розуміє ваш код. 3. Database (PostgreSQL, MySQL) — це «архів», де лежить інформація.

⚠️ Що треба запам’ятати залізобетонно:

  • IP-адреса — це унікальна адреса будинку вашого сервера (наприклад, 192.168.1.50).
  • Порт — це конкретні двері в цьому будинку. Веб-сайти зазвичай заходять через двері №80 або №443.
  • Root — це "бог" у системі Linux. Користувач із необмеженими правами. З ним треба бути обережним, як із бензопилою.

3. 🧪 Приклади (від простого до реального)

Давайте спробуємо налаштувати це подумки (і на практиці).

Приклад 1: Підключення (Magic Portal)

У вас є IP-адреса сервера 45.33.22.11 і пароль. Ви відкриваєте термінал на своєму ноутбуці.

Питання до вас: Що станеться, якщо ви просто напишете цей IP у браузері? Відповідь: Скоріш за все, нічого (помилка підключення), бо там ще немає «швейцара» (веб-сервера), який би відкрив двері.

Нам треба зайти всередину. Пишемо в терміналі:

ssh root@45.33.22.11

(Вводимо пароль)... Бам! Тепер ваш термінал керує не вашим ноутбуком, а комп'ютером десь у Німеччині. Ви в Матриці. 😎

Приклад 2: "Меблювання квартири" (Встановлення ПЗ)

Уявімо, ми хочемо запустити простий сайт на Python. Але сервер «голий». Якщо ми напишемо python3 app.py, сервер скаже: "Я не знаю, що таке python".

Нам треба його навчити (аналогія: замовити доставку меблів):

sudo apt update        # Оновлюємо каталог товарів (список програм)
sudo apt install python3 # Купуємо і ставимо Python

Тепер сервер розуміє Python.

Приклад 3: Проблема "Зникнення" (Реальний кейс)

Ви запустили свою програму на сервері. Ура! Вона працює. Ви закриваєте термінал, і... сайт падає.

Чому? Тому що ви запустили програму в своїй поточній сесії. Ви вийшли з кімнати — світло згасло.

Рішення: Нам потрібен хтось, хто триматиме програму включеною завжди. Це називається Process Manager (наприклад, systemd або PM2). Це як найняти чергового, який стежить: якщо програма впала — підніми її. Якщо сервер перезавантажився — запусти її знову.


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

Час бруднити руки! Якщо у вас немає справжнього VPS, уявіть, що віртуальна машина на вашому ПК — це віддалений сервер.

Завдання 1: "Hello Server"

  1. Зайдіть на сервер (або віртуальну машину) через SSH.
  2. Створіть папку my_project (mkdir my_project).
  3. Створіть там файл index.html і напишіть туди "Привіт з мого сервера!".

Завдання 2: "Швейцар на вході"

  1. Встановіть веб-сервер Nginx (sudo apt install nginx).
  2. Перевірте, чи він працює (systemctl status nginx).
  3. Тепер введіть IP-адресу сервера у своєму звичайному браузері.
    • Очікування: Ви побачите "Welcome to nginx".
    • Якщо не працює: Чому? (Підказка: перевірте Firewall/Брандмауер).

Завдання 3: Міні-кейс "Вбивство процесу"

  1. Запустіть будь-який довготривалий процес (наприклад, простий скрипт, що виводить час кожну секунду).
  2. Примусово «вбийте» його (Ctrl+C). Він зупинився.
  3. Челендж: Знайдіть спосіб запустити його так, щоб він працював навіть після того, як ви закриєте термінал (підказка: погугліть nohup або tmux, або pm2).

Завдання 4: Питання "А що, якщо..."

А що, якщо хакери дізнаються пароль root? Завдання: Створіть нового користувача з вашим ім'ям, дайте йому права sudo, а вхід для root заблокуйте. Це перше правило безпеки клубу адмінів.


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

Як відрізнити новачка від профі в налаштуванні серверів?

1. Новачок все робить під root-ом. Це як різати хліб самурайським мечем. Один хибний рух (rm -rf /) — і ви видалили всю операційну систему. Профі створює окремого юзера з обмеженими правами.

2. Новачок редагує файли прямо на сервері. Він відкриває vim на сервері і пише код там. Профі пише код локально, пушить на GitHub, а на сервері робить git pull. Сервер — це місце для виконання, а не для творчості.

3. Новачок хардкодить паролі. Він пише пароль від бази даних прямо в коді: password = "12345". Профі використовує Змінні Середовища (Environment Variables). Це як секретний сейф, ключ від якого є тільки у сервера, а не у всіх, хто читає код.

Головна порада: Ставтеся до серверів як до худоби, а не як до домашніх улюбленців (принцип "Cattle vs Pets"). * Улюбленець: Ви даєте йому ім'я, лікуєте, коли він хворіє. (Це ваш ручний сервер, який страшно чіпати). * Худоба: Якщо одна корова захворіла, ви її замінюєте іншою. (Це сучасний підхід: автоматичне розгортання серверів). Але про це — в наступних серіях.


6. 🧩 Підсумок

Отже, що ми сьогодні зробили? 1. Зрозуміли, що сервер — це просто чужий комп'ютер без екрана. 2. Навчилися заходити туди через SSH (наш телепорт). 3. Зрозуміли, що сервер треба «меблювати» (встановлювати залежності). 4. Дізналися, що програми треба запускати у фоновому режимі, щоб вони не вмирали.

Тепер ви вмієте: Не просто писати код, а створювати для нього дім, де він житиме і служитиме людям.

Тизер: Але стривайте... А якщо завтра на ваш сайт зайде мільйон людей одночасно? Один сервер просто згорить від навантаження. Що робити? Купувати суперкомп'ютер? Ні. На наступному уроці ми поговоримо про Масштабування та Балансування навантаження. Ми навчимося створювати армію клонів ваших серверів!

А поки що — це було CS50. Побачимось! 🎬