Модуль 38

Linux для backend-розробника

Ось готовий урок, написаний у стилі CS50, спеціально для бекенд-розробника.


🐧 Linux: Ваша перепустка за лаштунки інтернету

(Або чому чорний екран — це не страшно, а потужно)


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

Привіт, друзі! 👋

Уявіть ситуацію. Ви написали ідеальний код на Python, Java чи Node.js. На вашому ноутбуці (Windows чи Mac) все працює як швейцарський годинник. Кнопки натискаються, дані зберігаються, API відповідає. Ви відправляєте код на сервер (деплоїте), і… нічого не працює.

Сайт лежить. Логів немає. А замість звичного віконного інтерфейсу перед вами лише чорний екран і миготливий курсор.

Питання: Що ви будете робити?

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

Чому Linux? Тому що 96.3% (так, майже всі!) топ-мільйона серверів у світі працюють на Linux.

Аналогія: Використовувати Windows/Mac для розробки, але не знати Linux для деплою — це як вміти водити легковик на автоматі, а потім сісти за кермо боліда Формули-1 і шукати там підстаканник.

Сьогодні ми не будемо вчити "все про Linux". Ми розберемо набір для виживання бекендера. Ми навчимося говорити з сервером його мовою.


2. 🧠 Теоретична база (без сухої академічності)

Давайте заглянемо під капот. Що таке Linux насправді?

Якщо спростити, це конструктор, що складається з двох головних частин: 1. Ядро (Kernel): Це серце і мозок. Воно керує "залізом" — пам’яттю, процесором, дисками. 2. Оболонка (Shell): Це той самий чорний екран. Це перекладач. Ви пишете команду англійською, Shell перекладає її в нулі та одиниці для ядра.

🔑 Головна концепція, яку треба "витатуювати" в пам'яті:

В Linux все є файлом.

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

Як це працює "під капотом"? У Linux немає дисків C: або D:. Є одне велике дерево каталогів, яке починається з кореня — слеша /. * /bin — тут лежать програми (binary). * /home — тут живуть користувачі (як C:\Users). * /var — тут часто лежать змінні дані, наприклад, логи (це для нас, бекендерів, найважливіше!).

Інтуїтивно: Уявіть величезну картотеку. Щоб щось зробити, вам треба знати: де це лежить (шлях) і що з цим зробити (команда).


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

Давайте перейдемо від слів до діла. Ми в терміналі.

Приклад 1: "Де я?" (Навігація)

Перше, що відчуває новачок — дезорієнтація. Ми пишемо команду pwd (print working directory).

Запитання до вас: Що ви очікуєте побачити? ... ... Правильно, повний шлях до папки, де ми зараз стоїмо.

$ pwd
/home/user/my_project

Тепер подивимось, що навколо, командою ls (list):

$ ls
app.py  requirements.txt  logs/

Приклад 2: Реальний кейс (Права доступу)

Уявіть, ви завантажили скрипт deploy.sh на сервер, намагаєтесь його запустити, а система каже: Permission denied. Чому?

Давайте глянемо детальніше за допомогою ls -l (long format):

$ ls -l deploy.sh
-rw-r--r-- 1 user user 512 Jan 28 10:00 deploy.sh

Бачите ці дивні літери -rw-r--r--? * r (read) — читати. * w (write) — писати/змінювати. * x (execute) — виконувати (запускати як програму).

Тут немає x. Сервер думає, що це просто текст, а не програма. Рішення: Нам треба дати команду "зроби це виконуваним".

$ chmod +x deploy.sh

Тепер сервер знає: це можна запускати!

Приклад 3: Магія пайпів (Pipes |)

Це "секретна зброя" Linux. Уявіть, що у вас є лог-файл на 10 мільйонів рядків (server.log). Ваш сайт впав, і треба знайти слово "Error".

Читати очима? Неможливо. Ми візьмемо команду cat (читати файл) і передамо її результат команді grep (фільтрувати) через вертикальну риску |.

Запитання: Що буде результатом цієї команди?

$ cat server.log | grep "Error"

... Вона виплюне на екран тільки ті рядки, де є слово "Error".

А якщо нам треба останні 5 помилок? Додамо ще одну ланку!

$ cat server.log | grep "Error" | tail -n 5

Це як конструктор LEGO. Ви поєднуєте прості інструменти, щоб вирішувати надскладні задачі.


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

А тепер ваша черга! Відкрийте термінал (або емулятор) і спробуйте:

🔹 Завдання 1: Дослідник Зайдіть у кореневу папку (cd /), подивіться, що там є (ls), і поверніться додому (cd ~).

🔹 Завдання 2: Творець 1. Створіть папку backend_test (mkdir). 2. Зайдіть у неї. 3. Створіть пустий файл .env (touch .env). Перевірте, чи бачить його звичайний ls? (Спойлер: ні, бо файли з крапкою — приховані. Спробуйте ls -a).

🔹 Завдання 3: Детектив (Міні-кейс) У вас є файл access.log (можете створити його самі і написати туди кілька рядків). Завдання: знайдіть всі рядки, де зустрічається код 404 (сторінка не знайдена), і збережіть їх у новий файл errors_only.txt. Підказка: використовуйте grep і перенаправлення >.

🔹 Завдання 4: "А що, якщо..." Що буде, якщо ви спробуєте видалити системну папку? Наприклад rm -rf /var? (Не хвилюйтесь, система, скоріш за все, скаже "Permission denied". Але чому? Бо ви не Суперкористувач. Спробуйте зрозуміти різницю між user і root).


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

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

1. Новачок боїться помилок. Він вводить команду і заплющує очі. Досвідчений розробник читає помилки. Linux дуже чесний. Якщо він пише No such file or directory, значить ви помилились у назві файлу або шляху. Не шукайте містику, перевірте орфографію.

2. Синдром "Sudo-маніяка". Новачки, коли щось не працює, просто ставлять sudo (права адміністратора) перед кожною командою. Не робіть так. Це як різати хліб бензопилою. Ви можете випадково змінити права на файли так, що ваш веб-сервер потім не зможе їх прочитати. Використовуйте sudo тільки тоді, коли ви свідомо змінюєте систему.

3. Лінь — двигун прогресу. Якщо ви вводите одну й ту ж довгу команду тричі на день — автоматизуйте це. Напишіть скрипт або створіть "аліас" (alias). Бекендер повинен бути лінивим у правильному сенсі.


6. 🧩 Підсумок

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

Тепер, коли ви побачите чорний термінал сервера, у вас не буде паніки. Ви просто закотите рукави і скажете: "Окей, ls -la, показуй, що тут у нас".

🚀 Що далі? У наступному уроці ми поговоримо про те, як запакувати вашу програму у "контейнер", щоб вона працювала однаково і на вашому Mac, і на Linux-сервері. Готуйтеся, ми будемо говорити про Docker!

Це був CS50... тобто, це був "Linux для бекендера". До зустрічі!