До списку уроків
8A · Урок 1 з 16

Операційні системи, Linux і твій сервер

виконано0%
Крок 1

Що робимо сьогодні

Після уроку ти вмієш

Хід уроку

ЕтапХвЩо робимо
Вступ10Що відбувається між кнопкою живлення і робочим столом
Що таке ОС20Ядро, системні виклики, процеси, права
Linux проти Windows15Розбір відмінностей і чому вони такі
Файли і права15Одне дерево, перекладач шляхів, rwx
Перерва10
Сервер, VPS і порти10Чим відрізняється від домашнього ПК
Перше підключення20SSH, зміна пароля, структура теки
FTP і перша сторінка15Файл у ~/www/ — і він онлайн
Правила, тест, підсумок5Три правила спільного сервера, домашнє завдання
Разом120
Крок 2

Операційна система

Програма, яка стоїть між тобою і залізом

Операційна система запускається першою і роздає програмам процесор, пам'ять і диск. Windows, macOS, Linux — це ОС.

Чотири роботи, які вона виконує

Кожен рядок ти побачиш на сервері, коли дійдеш до практики на кроці 8.

РоботаЩо це означає на практиці
Ядророзподіляє процесор і пам'ять; коли програм 200, а ядер 4 — вирішує, хто працює зараз
Файлова системаперетворює байти на диску в теки й файли з іменами
Процесикожна запущена програма має свій номер; список можна подивитися й зупинити зайвий
Правахто який файл читає, змінює й запускає; тому ти не бачиш чужі роботи

Ядро зблизька

Чіпати залізо напряму дозволено одній програмі — ядру.

програма просить ядро повертає результат Програми браузер, nano, ffmpeg, твій скрипт — заліза не бачать зовсім Системні виклики open, read, write, fork — єдині двері з програми в ядро Ядро черга до процесора, пам'ять, диск, мережа, перевірка прав Залізо процесор, оперативна пам'ять, SSD, мережева карта

Читай схему знизу вгору: залізо, ядро, системні виклики, програми. Униз можна пройти лише через ядро. Тому програма з помилкою впаде сама і не забере з собою весь комп'ютер.

Рядок open, read, write, fork — це і є ті двері. Браузер не пише на диск сам: він подає ядру команду write(), а ядро перевіряє права й робить запис за нього.

Скільки процесів насправді Ядер 4–8, а процесів сотні. Ядро дає кожному кілька мілісекунд і перемикається далі.
Питання

Ти відкрив 30 вкладок, і комп'ютер почав гальмувати. Хто вирішує, якій програмі зараз дістанеться процесор?

Процеси: хто зараз працює

Запущена копія програми зветься процес і має номер — PID.

У Windows цей список показує Диспетчер завдань: Ctrl+Shift+Esc. У Linux ту саму таблицю друкує команда ps.

Ось як це має вигляд у терміналі. Це приклад для читання — набирати його зараз не треба.

хто працює під моїм логіном
$ ps -u $(whoami) -o pid,%cpu,%mem,cmd PID %CPU %MEM CMD 4821 0.0 0.1 -bash 5137 0.3 0.4 nano /home/ТВІЙ-ЛОГІН/www/index.html $ kill 5137

Перша колонка — PID, далі відсоток процесора, відсоток пам'яті й сама команда. У прикладі процес nano має номер 5137.

Команда kill 5137 зупиняє саме цей процес, а не всі одразу. У відповідь термінал нічого не друкує. Якщо процес уже закрився, він відповість No such process.

Вивід ps — це текст. Його можна зберегти у файл, відсортувати й переслати вчителю. Вікно диспетчера так не вміє.

Числа у виводі — приклад: PID і відсотки на твоєму акаунті будуть свої.

Питання

Кулер виє, ноутбук гарячий, а ти нічого не запускав. Що зробити першим, щоб зрозуміти причину?

Які ОС бувають

Windows — домашні комп'ютери, macOS — техніка Apple, Linux — сервери й роутери.

На нашому сервері працює Linux. За даними W3Techs близько 86% сайтів стоять на Unix-подібних системах, а зі списку 500 найпотужніших комп'ютерів планети Linux займає всі 500 із листопада 2017 року.

Linux безкоштовний, працює місяцями без перезавантаження і керується командами.

Питання

Чому саме Linux майже завжди стоїть на серверах?

Крок 3

Linux проти Windows

Відмінності, які ти відчуєш уже сьогодні

Зліва те, до чого ти звик, справа те, що побачиш на сервері на кроці 8.

WindowsLinux
Шлях до файлуC:\Users\Петренко\doc.txt/home/petrenko.o.8a/doc.txt
Роздільникзворотний слеш \прямий слеш /
Дискиокремі: C:, D:одне дерево від /
Домашня текаC:\Users\Петренко/home/petrenko.o.8a, скорочено ~
Регістр іменFoto.jpg = foto.jpgце різні файли
Тип файлуза розширеннямза вмістом: перші байти
Права доступуACL у властивостях файлуявні rwx — видно в ls -l
Налаштуванняреєстр — двійкова базатекстові файли
Запуск програмиклік по .exechmod +x, потім ./script.sh
Основний інструментвікнатермінал; графіки на сервері немає
Ціналіцензія коштує грошейбезкоштовний, код відкритий

Найважливіші рядки — Регістр імен і Права доступу: на них спотикаються найчастіше. Тому імена файлів на сервері пиши малими літерами.

Найчастіша помилка початківця Index.html замість index.html — і сайт не відкривається. У Windows це те саме ім'я, у Linux — два різні файли.
Питання

Ти завантажив на сервер файл Style.css, а в HTML написав <link href="style.css">. Що станеться?

Головна відмінність — термінал

У Linux головний інструмент — термінал: ти пишеш команду текстом, і система її виконує.

Приклад: у теці двісті фотографій, і всім треба змінити закінчення з .jpeg на .jpg. Мишею це година роботи, командою — один рядок. Набирати його зараз не треба: подивись, який він має вигляд.

одна команда замість десяти кліків
# перейменувати всі .jpeg на .jpg у теці $ for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done

Команда бере кожен файл .jpeg у поточній теці й дає йому те саме ім'я із закінченням .jpg. Працює вона три секунди й нічого не друкує: просто повертає рядок із $.

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

Питання

У чому головна практична перевага роботи командами замість миші?

Крок 4

Одне дерево замість дисків

У Windows кожен диск окремий. У Linux початок один — корінь /, усе інше всередині: і другий диск, і флешка. Флешку монтують у теку /media/usb.

Linux — одне дерево / корінь — початок усього /home теки людей /home/petrenko.o.8a твоя, коротко ~ /etc усі налаштування, текстом /var логи, черги, дані сайтів /usr програми й бібліотеки /media точки монтування /media/usb тут флешка Флешка не стає окремим диском — вона з'являється всередині дерева. Шлях завжди починається з / Windows — окремі диски C:\ системний диск \Users \Users\Петренко твоя \Windows \Program Files D:\ другий диск \Фото \Ігри × Спільного кореня немає: з C:\ не існує жодного шляху до файла на D:\.

Головні теки Linux

ТекаЩо всерединіНайближче в Windows
/корінь; з нього починається будь-який шляхC:\
/homeпо теці на кожного користувача; твоя — /home/логін, скорочено ~C:\Users
/etcналаштування всієї системи, звичайними текстовими файламиреєстр + C:\ProgramData
/varте, що постійно росте: логи, черги, бази, дані вебсервераC:\ProgramData, журнали подій
/usrвстановлені програми (/usr/bin) і їхні файлиC:\Program Files
/tmpтимчасове; чиститься при перезавантаженніC:\Users\…\AppData\Local\Temp
/mediaсюди монтуються флешки й зовнішні дискилітери E:, F:

Перекладач шляхів

Той самий шлях у Linux
    Назви файлів На сервері — латиниця, малі літери, без пробілів: foto-1.jpg, а не Фото 1.JPG.
    Питання

    Ти зайшов на сервер по SSH і набрав cd D:, щоб знайти там свої фото. Термінал відповів «No such file or directory». Чому?

    Крок 5

    Права доступу: rwx

    Три дії, три групи людей, десять символів

    Дій три: r — читати, w — змінювати й видаляти, x — запускати файл або зайти в теку. Груп теж три: власник, група і інші, зокрема вебсервер.

    Три дії на три групи — це дев'ять позначок. Плюс перший символ, який каже, файл це чи тека. Разом рядок із десяти символів. Команда ls -l друкує його в першій колонці.

    d r w x r - x r - x тип d — тека - — звичайний файл l — посилання власник ти: petrenko.o.8a 7 4 + 2 + 1 група твій клас 5 4 + 0 + 1 інші усі решта, зокрема вебсервер 5 4 + 0 + 1 drwxr-xr-x = 755 r = 4 читати вміст w = 2 змінювати, видаляти x = 1 запускати · зайти в теку

    Число береться так: r = 4, w = 2, x = 1, ваги складають. rwx = 4+2+1 = 7, r-x = 4+0+1 = 5, rw- = 4+2+0 = 6. Тому drwxr-xr-x — це 755.

    Скільки ставити на практиці

    Учити напам'ять не треба: вистачить п'яти готових наборів.

    Що цеПраваЧислоЧому саме так
    Тека ~/www/drwxr-xr-x755вебсервер заходить усередину, але нічого не міняє
    Файл index.html-rw-r--r--644ти пишеш, усі читають
    Тека ~/data/drwx------700крім тебе, ніхто не зайде
    Скрипт sysinfo.sh-rwxr-xr-x755без x файл не запуститься
    Файл із паролем-rw-------600читає лише власник

    Ось як подивитися права й виправити їх. Ці команди знадобляться на кроці 8, якщо браузер покаже 403.

    подивитися і виправити права
    $ ls -l ~/www/index.html -rw------- 1 ТВІЙ-ЛОГІН ТВІЙ-ЛОГІН 412 Sep 2 10:14 /home/ТВІЙ-ЛОГІН/www/index.html $ chmod 644 ~/www/index.html $ chmod 755 ~/www

    ls -l друкує рядок прав перед іменем файла. У прикладі там -rw-------: власник читає й пише, а більше ніхто нічого не може. Тому вебсервер такий файл не віддасть.

    chmod 644 відкриває файл на читання для всіх, зокрема для вебсервера. chmod 755 на теку ~/www дозволяє вебсерверу зайти всередину. Обидві команди нічого не друкують у відповідь, а ls -l після них показує -rw-r--r--.

    Звідки береться помилка 403 Forbidden Сторінку віддає вебсервер, і для твого файла він просто «інший». Немає r для інших — браузер покаже 403 Forbidden, хоч файл і на місці.
    Питання

    Ти поклав index.html у ~/www/, файл на місці й відкривається в nano, а браузер показує 403 Forbidden. Що перевіряєш першим?

    Крок 6

    Що таке сервер і VPS

    Сервер працює цілодобово, керують ним по мережі. VPS — орендована частина сервера з власною системою й адресою, від кількох доларів на місяць.

    Домашній ПКVPS
    Працюєпоки ти його не вимкнувцілодобово, роками
    Доступсів за ньогопо SSH з будь-якої точки світу
    Адреса в мережізмінюєтьсяпостійна, до неї чіпляють домен
    Хто ще на ньомутільки титвій клас — у кожного свій акаунт
    Питання

    Чому свій сайт не можна просто залишити на домашньому комп'ютері?

    VPS проти хостингу

    Звичайний хостингVPS
    Що даютьтеку й панель у браузеріцілу віртуальну машину з власною ОС
    Що можна поставититільки те, що вже стоїтьбудь-що: свій вебсервер, базу, скрипти
    Доступпанель і FTPSSH з повними правами, FTP, усе інше
    Хто оновлює системупровайдервласник, тобто ти
    Цінадешевшедорожче, але й можливостей більше
    Наш сервер Наш сервер — це VPS. root у вчителя, у тебе звичайний акаунт зі своєю текою.

    Порти

    Програм кілька, адреса спільна — розрізняє їх порт: команди 22, FTP 21, сторінки 80 і 443.

    Термінал ssh petrenko.o.8a@91.219.61.4 FileZilla / WinSCP перетягування файлів мишею Браузер 91.219.61.4/s/petrenko.o.8a інтернет з будь-якої точки світу сервер 91.219.61.4 порт 22 · SSH команди, все зашифровано порт 21 · FTP завантаження файлів 80 і 443 · HTTP твоя сторінка, видно всім решта дверей зачинена

    SSH і FTP

    SSHFTP / SFTP
    Для чоговиконувати команди на серверіпереносити файли туди й назад
    Що бачиштекстовий терміналдва вікна: твій комп'ютер і сервер
    Порт2221, у SFTP — 22
    Програмаssh, Windows Terminal, PuTTYFileZilla, WinSCP
    Логін і парольті самі — акаунт один
    Коли зручнішестворити теку, змінити права, запустити скриптзакинути двадцять картинок мишею
    Пасивний режим Якщо FileZilla зависає на списку файлів — постав Passive і кодування UTF-8.
    Питання

    Тобі треба перенести на сервер двадцять картинок із теки на робочому столі. Чим це робити?

    Твоя тека

    Теку www/ бачить будь-хто, три інші — тільки ти. Різницю роблять права доступу.

    /home/petrenko.o.8a/ www/ index.html, css, картинки · права 755 ПУБЛІЧНЕ upload/ куди FTP кладе принесене · є фільтр ПРИЙМАЛЬНЯ data/ звіти, CSV, логи · права 700 ПРИВАТНЕ notes/ твої робочі нотатки · права 700 ПРИВАТНЕ видно всім браузер будь-кого 91.219.61.4/s/petrenko.o.8a × по HTTP недосяжно лише ти — по SSH або FTP
    Часта помилка Файл із upload/ у браузері не відкриється: публічна лише www/. Перенеси його туди командою mv.
    Крок 7

    Шість команд, щоб не заблукати

    Термінал не показує, де ти. Про це треба питати

    У терміналі немає рядка зі шляхом — лише значок $. Тому робота починається з трьох питань: де я, хто я, що тут лежить.

    Ось шість команд, з яких починається робота на будь-якому сервері. Усі шість ти набереш сам на кроці 8.

    КомандаЩо робитьЩо видно у відповіді
    pwdпоточна текашлях від кореня: /home/petrenko.o.8a
    ls -laсписок файлівправа, власник, розмір, дата, ім'я; -a показує й приховані
    cd wwwзайти в текунічого: мовчання означає успіх
    cd ..піднятися вище.. — батьківська тека
    whoamiтвій логінодин рядок
    idтвої номер і групиuid, gid, перелік груп
    uname -aсистема і ядроLinux, ім'я сервера, версія ядра, x86_64

    Ось як ці команди мають вигляд у терміналі. Це приклад для читання — набирати його зараз не треба.

    перші тридцять секунд на сервері
    $ whoami ТВІЙ-ЛОГІН $ pwd /home/ТВІЙ-ЛОГІН $ id uid=1042(ТВІЙ-ЛОГІН) gid=1042(ТВІЙ-ЛОГІН) groups=1042(ТВІЙ-ЛОГІН),1100(students8a) $ uname -a Linux nstekh 6.8.0-51-generic #52-Ubuntu SMP x86_64 GNU/Linux $ ls -la drwx------ 6 ТВІЙ-ЛОГІН ТВІЙ-ЛОГІН 4096 Sep 2 09:40 . drwxr-xr-x 3 root root 4096 Sep 1 18:02 .. drwx------ 2 ТВІЙ-ЛОГІН ТВІЙ-ЛОГІН 4096 Sep 2 09:41 data drwx------ 2 ТВІЙ-ЛОГІН ТВІЙ-ЛОГІН 4096 Sep 2 09:41 notes drwx------ 2 ТВІЙ-ЛОГІН ТВІЙ-ЛОГІН 4096 Sep 2 09:41 upload drwxr-xr-x 2 ТВІЙ-ЛОГІН ТВІЙ-ЛОГІН 4096 Sep 2 09:41 www

    У відповідь на whoami сервер друкує логін. Слово root означало б, що вхід стався не під твоїм акаунтом.

    У виводі ls -la є два рядки з крапками. Одна крапка . — це тека, у якій ти зараз. Дві крапки .. — та, що вище. Тому cd .. піднімає на рівень вище.

    Тепер перша колонка. У теки www там drwxr-xr-x, у решти — drwx------. Саме ці символи й вирішують, що в інтернеті видно тільки www.

    Дві відповіді, які збивають з пантелику на кроці 8. Порожній список після ls -la означає, що ти не у своїй теці, — це покаже pwd. Помилка No such file or directory після cd www — це майже завжди інший регістр літер.

    Версія ядра і номери uid на твоєму акаунті будуть свої.

    Дві клавіші, які економлять урок Tab дописує ім'я й не дає помилитися в регістрі. Стрілка вгору повертає попередню команду.
    Питання

    Ти виконав nano index.html, зберіг файл, а в браузері сторінка не змінилася. Яка команда першою покаже, у чому річ?

    Крок 8

    Практика: заходимо на сервер

    Виконуй по черзі. Галочки зберігаються — сторінку можна закрити.

    Докладно про кожен крок

    Нижче ті самі сім кроків, тільки з поясненням: що набрати і що з'явиться у відповідь. Номери збігаються зі списком угорі. Позначай галочку у списку вгорі після кожного виконаного кроку.

    1. Отримай логін і пароль

    Візьми в учителя картку з логіном і паролем. Логін має вигляд petrenko.o.8a: прізвище, перша літера імені, клас. Перепиши обидва рядки в зошит.

    Пароль нікому не показуй. Усе, що зроблено на сервері під твоїм логіном, зробив ти.

    2. Підключися по SSH

    Відкрий Windows Terminal або PuTTY. У вікні буде рядок зі значком $. Набери команду з рамки біля кроку 2 у списку вгорі, підставивши замість ТВІЙ-ЛОГІН свій логін, і натисни Enter.

    Першого разу термінал спитає про ключ сервера. Набери yes і натисни Enter. Одна літера y не підійде.

    Далі термінал попросить пароль. Символи під час набору не показуються, курсор стоїть на місці. Це нормально: набирай наосліп і тисни Enter.

    Відповідь Permission denied означає помилку в паролі. Набери його ще раз повільніше. Перевір розкладку клавіатури й Caps Lock.

    Вийшло — рядок зміниться на ТВІЙ-ЛОГІН@nstekh:~$. Тепер команди виконує сервер, а не твій комп'ютер.

    3. Зміни виданий пароль на свій

    Набери passwd і натисни Enter. Термінал попросить спочатку старий пароль, потім новий, потім новий ще раз. Усі три набираються наосліп.

    Відповідь BAD PASSWORD — придумай довший, від восьми символів, із цифрами. Відповідь password updated successfully — пароль змінено. Запиши новий у зошит: відновити його може лише вчитель.

    Цей крок робиться один раз, на першому уроці.

    4. Роздивися свою теку

    Набери команду з рамки біля кроку 4 у списку вгорі. pwd надрукує шлях /home/ТВІЙ-ЛОГІН — це твоя домашня тека. ls -la покаже, що в ній лежить.

    що друкує крок 4
    $ pwd && ls -la /home/ТВІЙ-ЛОГІН drwx------ 6 ТВІЙ-ЛОГІН ТВІЙ-ЛОГІН 4096 Sep 2 09:40 . drwxr-xr-x 3 root root 4096 Sep 1 18:02 .. drwx------ 2 ТВІЙ-ЛОГІН ТВІЙ-ЛОГІН 4096 Sep 2 09:41 data drwx------ 2 ТВІЙ-ЛОГІН ТВІЙ-ЛОГІН 4096 Sep 2 09:41 notes drwx------ 2 ТВІЙ-ЛОГІН ТВІЙ-ЛОГІН 4096 Sep 2 09:41 upload drwxr-xr-x 2 ТВІЙ-ЛОГІН ТВІЙ-ЛОГІН 4096 Sep 2 09:41 www

    Тек чотири. www бачить увесь світ, upload — приймальня FTP, data і notes — тільки ти.

    Порівняй перші колонки: у www стоїть drwxr-xr-x, у решти — drwx------. Саме тому твою сторінку відкриє будь-хто, а в data не зайде ніхто.

    5. Створи першу сторінку

    Набери команду з рамки біля кроку 5 у списку вгорі. mkdir -p ~/www створить теку, якщо її ще немає. Потім відкриється редактор nano з порожнім файлом і підказками внизу екрана.

    Ім'я файла — тільки index.html, усі літери малі. Index.html вебсервер не знайде.

    Набери всередині заголовок, абзац про себе й тег <title> зі своїм ім'ям і прізвищем — його шукає автоперевірка на кроці 9.

    Зберегти — Ctrl+O, потім Enter. Вийти — Ctrl+X. Повернешся в термінал і побачиш рядок із $.

    перевірка після кроку 5
    $ ls -l ~/www/ -rw-r--r-- 1 ТВІЙ-ЛОГІН ТВІЙ-ЛОГІН 412 Sep 2 10:14 index.html

    У списку має бути index.html, і розмір перед датою — більший за нуль. Файла немає — ти зберіг його не в тій теці: набери pwd і повтори крок 5.

    6. Відкрий свою адресу в браузері

    Відкрий нову вкладку й набери ТВІЙ-ЛОГІН.91.219.61.4. З'явиться твоя сторінка. Вона вже онлайн: її бачить будь-хто, кому ти даси посилання.

    404 Not Found — ім'я файла інше. Повернися в термінал, набери ls -l ~/www/ і порівняй ім'я літера в літеру.

    403 Forbidden — це права доступу з розділу «Права доступу: rwx». Файл на місці, але вебсервер не має права його прочитати. Виконай дві команди з рамки нижче й онови сторінку.

    якщо браузер показав 403
    $ chmod 644 ~/www/index.html $ chmod 755 ~/www $ ls -l ~/www/index.html -rw-r--r-- 1 ТВІЙ-ЛОГІН ТВІЙ-ЛОГІН 412 Sep 2 10:14 /home/ТВІЙ-ЛОГІН/www/index.html

    Обидві команди chmod нічого не друкують — так і має бути. Після них ls -l показує -rw-r--r--.

    7. Налаштуй WinSCP

    Запусти WinSCP і створи нове з'єднання. У поле імені хоста впиши 91.219.61.4. Логін і пароль — ті самі, що по SSH: окремо нічого реєструвати не треба.

    У налаштуваннях з'єднання увімкни пасивний режим — Passive. Без нього зі шкільної мережі список файлів не відкриється.

    Після входу буде два вікна: зліва твій комп'ютер, справа сервер. Файли між ними перетягуються мишею. Картинки для сайта клади в www.

    Усі сім галочок стоять — перейди на крок 9 і натисни «Перевірити мою роботу». Спроби не обмежені. Щоб закрити з'єднання з сервером, набери exit.

    Крок 9

    Автоперевірка

    Система зайде у твій акаунт і подивиться, що ти справді зробив. Спроби не обмежені.

    Демонстраційний режим: результат згенеровано для показу. На сервері ця кнопка викликає POST /api/check, який запускає чекер уроку від імені учня.

    Що вчитель дивиться на екрані

    Крок 10

    Шкала виконання

    Це те, що бачить учитель, коли виставляє оцінку.

    СкладникВагаРезультат
    Виконано
    0%
    Рекомендований бал за 12-бальною

    Домашнє завдання

    1. Додай на свою сторінку список із п'яти пунктів: що я хочу навчитися робити цього року. Потім надішли посилання на свій сайт у чат класу.
    2. Вивчи новий пароль напам'ять. Удома запиши його на папері. Не в чаті й не в нотатках телефона.
    3. Подивись, яка система стоїть на твоєму домашньому комп'ютері чи телефоні. Випиши її назву й версію. Випиши також процесор, обсяг пам'яті та сховища. Ці числа знадобляться на наступному уроці.
    Три правила спільного сервера Пароль — нікому, навіть найкращому другові. Чужі теки не чіпаємо, навіть якщо вони раптом відкрилися. Щось зламав чи видалив — одразу скажи вчителю: це не карається, приховування — карається.
    Джерела

    Звідки взяті факти

    Усе, що можна перевірити, — з відкритих стандартів і документації. Перевіряти дозволено й корисно.

    Повний список із поясненнями — у файлі urok-01-джерела.md поруч із цією сторінкою. Приклади виводу команд (uid, версія ядра, дати, PID) складені як типові для навчального сервера: на твоєму акаунті числа будуть свої.