/home/petrenko.o.8a замість
C:\Users\Петренко;www/ і відкривати за своєю адресою.| Етап | Хв | Що робимо |
|---|---|---|
| Вступ | 10 | Що відбувається між кнопкою живлення і робочим столом |
| Що таке ОС | 20 | Ядро, системні виклики, процеси, права |
| Linux проти Windows | 15 | Розбір відмінностей і чому вони такі |
| Файли і права | 15 | Одне дерево, перекладач шляхів, rwx |
| Перерва | 10 | — |
| Сервер, VPS і порти | 10 | Чим відрізняється від домашнього ПК |
| Перше підключення | 20 | SSH, зміна пароля, структура теки |
| FTP і перша сторінка | 15 | Файл у ~/www/ — і він онлайн |
| Правила, тест, підсумок | 5 | Три правила спільного сервера, домашнє завдання |
| Разом | 120 |
Програма, яка стоїть між тобою і залізом
Операційна система запускається першою і роздає програмам процесор, пам'ять і диск. Windows, macOS, Linux — це ОС.
Кожен рядок ти побачиш на сервері, коли дійдеш до практики на кроці 8.
| Робота | Що це означає на практиці |
|---|---|
| Ядро | розподіляє процесор і пам'ять; коли програм 200, а ядер 4 — вирішує, хто працює зараз |
| Файлова система | перетворює байти на диску в теки й файли з іменами |
| Процеси | кожна запущена програма має свій номер; список можна подивитися й зупинити зайвий |
| Права | хто який файл читає, змінює й запускає; тому ти не бачиш чужі роботи |
Чіпати залізо напряму дозволено одній програмі — ядру.
Читай схему знизу вгору: залізо, ядро, системні виклики, програми. Униз можна пройти лише через ядро. Тому програма з помилкою впаде сама і не забере з собою весь комп'ютер.
Рядок open, read, write, fork — це і є ті двері. Браузер не
пише на диск сам: він подає ядру команду write(), а ядро
перевіряє права й робить запис за нього.
Ти відкрив 30 вкладок, і комп'ютер почав гальмувати. Хто вирішує, якій програмі зараз дістанеться процесор?
Запущена копія програми зветься процес і має номер — PID.
У Windows цей список показує Диспетчер завдань: Ctrl+Shift+Esc. У Linux
ту саму таблицю друкує команда ps.
Ось як це має вигляд у терміналі. Це приклад для читання — набирати його зараз не треба.
Перша колонка — PID, далі відсоток процесора, відсоток пам'яті й сама
команда. У прикладі процес nano має номер 5137.
Команда kill 5137 зупиняє саме цей процес, а не всі одразу.
У відповідь термінал нічого не друкує. Якщо процес уже закрився, він відповість
No such process.
Вивід ps — це текст. Його можна зберегти у файл, відсортувати
й переслати вчителю. Вікно диспетчера так не вміє.
Числа у виводі — приклад: PID і відсотки на твоєму акаунті будуть свої.
Кулер виє, ноутбук гарячий, а ти нічого не запускав. Що зробити першим, щоб зрозуміти причину?
Windows — домашні комп'ютери, macOS — техніка Apple, Linux — сервери й роутери.
На нашому сервері працює Linux. За даними W3Techs близько 86% сайтів стоять на Unix-подібних системах, а зі списку 500 найпотужніших комп'ютерів планети Linux займає всі 500 із листопада 2017 року.
Linux безкоштовний, працює місяцями без перезавантаження і керується командами.
Чому саме Linux майже завжди стоїть на серверах?
Відмінності, які ти відчуєш уже сьогодні
Зліва те, до чого ти звик, справа те, що побачиш на сервері на кроці 8.
| Windows | Linux | |
|---|---|---|
| Шлях до файлу | 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 |
| Налаштування | реєстр — двійкова база | текстові файли |
| Запуск програми | клік по .exe | chmod +x, потім ./script.sh |
| Основний інструмент | вікна | термінал; графіки на сервері немає |
| Ціна | ліцензія коштує грошей | безкоштовний, код відкритий |
Найважливіші рядки — Регістр імен і Права доступу: на них спотикаються найчастіше. Тому імена файлів на сервері пиши малими літерами.
Index.html замість index.html — і сайт не
відкривається. У Windows це те саме ім'я, у Linux — два різні файли.Ти завантажив на сервер файл Style.css, а в HTML написав
<link href="style.css">. Що станеться?
У Linux головний інструмент — термінал: ти пишеш команду текстом, і система її виконує.
Приклад: у теці двісті фотографій, і всім треба змінити закінчення
з .jpeg на .jpg. Мишею це година роботи, командою —
один рядок. Набирати його зараз не треба: подивись, який він має вигляд.
Команда бере кожен файл .jpeg у поточній теці й дає йому те
саме ім'я із закінченням .jpg. Працює вона три секунди й нічого
не друкує: просто повертає рядок із $.
Цей рядок можна зберегти у файл. Далі він працюватиме сам щодня о третій ночі, поки ти спиш. Мишею так не вийде.
У чому головна практична перевага роботи командами замість миші?
У Windows кожен диск окремий. У Linux початок один — корінь
/, усе інше всередині: і другий диск, і флешка. Флешку
монтують у теку /media/usb.
| Тека | Що всередині | Найближче в 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: |
foto-1.jpg, а не Фото 1.JPG.Ти зайшов на сервер по SSH і набрав cd D:, щоб знайти там свої
фото. Термінал відповів «No such file or directory». Чому?
Три дії, три групи людей, десять символів
Дій три: r — читати, w — змінювати й видаляти, x — запускати файл або зайти в теку. Груп теж три: власник, група і інші, зокрема вебсервер.
Три дії на три групи — це дев'ять позначок. Плюс перший символ, який каже,
файл це чи тека. Разом рядок із десяти символів. Команда ls -l
друкує його в першій колонці.
Число береться так: 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-x | 755 | вебсервер заходить усередину, але нічого не міняє |
Файл index.html | -rw-r--r-- | 644 | ти пишеш, усі читають |
Тека ~/data/ | drwx------ | 700 | крім тебе, ніхто не зайде |
Скрипт sysinfo.sh | -rwxr-xr-x | 755 | без x файл не запуститься |
| Файл із паролем | -rw------- | 600 | читає лише власник |
Ось як подивитися права й виправити їх. Ці команди знадобляться на кроці 8, якщо браузер покаже 403.
ls -l друкує рядок прав перед іменем файла. У прикладі там
-rw-------: власник читає й пише, а більше ніхто нічого не може.
Тому вебсервер такий файл не віддасть.
chmod 644 відкриває файл на читання для всіх, зокрема для
вебсервера. chmod 755 на теку ~/www дозволяє
вебсерверу зайти всередину. Обидві команди нічого не друкують у відповідь,
а ls -l після них показує -rw-r--r--.
r для інших — браузер покаже 403 Forbidden,
хоч файл і на місці.Ти поклав index.html у ~/www/, файл на місці й
відкривається в nano, а браузер показує 403 Forbidden.
Що перевіряєш першим?
Сервер працює цілодобово, керують ним по мережі. VPS — орендована частина сервера з власною системою й адресою, від кількох доларів на місяць.
| Домашній ПК | VPS | |
|---|---|---|
| Працює | поки ти його не вимкнув | цілодобово, роками |
| Доступ | сів за нього | по SSH з будь-якої точки світу |
| Адреса в мережі | змінюється | постійна, до неї чіпляють домен |
| Хто ще на ньому | тільки ти | твій клас — у кожного свій акаунт |
Чому свій сайт не можна просто залишити на домашньому комп'ютері?
| Звичайний хостинг | VPS | |
|---|---|---|
| Що дають | теку й панель у браузері | цілу віртуальну машину з власною ОС |
| Що можна поставити | тільки те, що вже стоїть | будь-що: свій вебсервер, базу, скрипти |
| Доступ | панель і FTP | SSH з повними правами, FTP, усе інше |
| Хто оновлює систему | провайдер | власник, тобто ти |
| Ціна | дешевше | дорожче, але й можливостей більше |
root у вчителя, у тебе звичайний
акаунт зі своєю текою.Програм кілька, адреса спільна — розрізняє їх порт: команди 22, FTP 21, сторінки 80 і 443.
| SSH | FTP / SFTP | |
|---|---|---|
| Для чого | виконувати команди на сервері | переносити файли туди й назад |
| Що бачиш | текстовий термінал | два вікна: твій комп'ютер і сервер |
| Порт | 22 | 21, у SFTP — 22 |
| Програма | ssh, Windows Terminal, PuTTY | FileZilla, WinSCP |
| Логін і пароль | ті самі — акаунт один | |
| Коли зручніше | створити теку, змінити права, запустити скрипт | закинути двадцять картинок мишею |
Тобі треба перенести на сервер двадцять картинок із теки на робочому столі. Чим це робити?
Теку www/ бачить будь-хто, три інші — тільки ти.
Різницю роблять права доступу.
upload/ у браузері не відкриється: публічна лише
www/. Перенеси його туди командою mv.Термінал не показує, де ти. Про це треба питати
У терміналі немає рядка зі шляхом — лише значок $. Тому
робота починається з трьох питань: де я, хто я, що тут лежить.
Ось шість команд, з яких починається робота на будь-якому сервері. Усі шість ти набереш сам на кроці 8.
| Команда | Що робить | Що видно у відповіді |
|---|---|---|
pwd | поточна тека | шлях від кореня: /home/petrenko.o.8a |
ls -la | список файлів | права, власник, розмір, дата, ім'я; -a показує й приховані |
cd www | зайти в теку | нічого: мовчання означає успіх |
cd .. | піднятися вище | .. — батьківська тека |
whoami | твій логін | один рядок |
id | твої номер і групи | uid, gid, перелік груп |
uname -a | система і ядро | Linux, ім'я сервера, версія ядра, x86_64 |
Ось як ці команди мають вигляд у терміналі. Це приклад для читання — набирати його зараз не треба.
У відповідь на whoami сервер друкує логін. Слово
root означало б, що вхід стався не під твоїм акаунтом.
У виводі ls -la є два рядки з крапками. Одна крапка
. — це тека, у якій ти зараз. Дві крапки .. — та,
що вище. Тому cd .. піднімає на рівень вище.
Тепер перша колонка. У теки www там drwxr-xr-x,
у решти — drwx------. Саме ці символи й вирішують, що в інтернеті
видно тільки www.
Дві відповіді, які збивають з пантелику на кроці 8. Порожній список після
ls -la означає, що ти не у своїй теці, — це покаже pwd.
Помилка No such file or directory після cd www — це
майже завжди інший регістр літер.
Версія ядра і номери uid на твоєму акаунті
будуть свої.
Ти виконав nano index.html, зберіг файл, а в браузері сторінка
не змінилася. Яка команда першою покаже, у чому річ?
Виконуй по черзі. Галочки зберігаються — сторінку можна закрити.
Нижче ті самі сім кроків, тільки з поясненням: що набрати і що з'явиться у відповідь. Номери збігаються зі списком угорі. Позначай галочку у списку вгорі після кожного виконаного кроку.
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
покаже, що в ній лежить.
Тек чотири. 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. Повернешся
в термінал і побачиш рядок із $.
У списку має бути index.html, і розмір перед датою — більший
за нуль. Файла немає — ти зберіг його не в тій теці: набери pwd
і повтори крок 5.
6. Відкрий свою адресу в браузері
Відкрий нову вкладку й набери ТВІЙ-ЛОГІН.91.219.61.4.
З'явиться твоя сторінка. Вона вже онлайн: її бачить будь-хто, кому ти даси
посилання.
404 Not Found — ім'я файла інше. Повернися в термінал, набери
ls -l ~/www/ і порівняй ім'я літера в літеру.
403 Forbidden — це права доступу з розділу «Права доступу: rwx». Файл на місці, але вебсервер не має права його прочитати. Виконай дві команди з рамки нижче й онови сторінку.
Обидві команди chmod нічого не друкують — так і має бути.
Після них ls -l показує -rw-r--r--.
7. Налаштуй WinSCP
Запусти WinSCP і створи нове з'єднання. У поле імені хоста впиши
91.219.61.4. Логін і пароль — ті самі, що по SSH: окремо нічого
реєструвати не треба.
У налаштуваннях з'єднання увімкни пасивний режим — Passive. Без нього зі шкільної мережі список файлів не відкриється.
Після входу буде два вікна: зліва твій комп'ютер, справа сервер. Файли
між ними перетягуються мишею. Картинки для сайта клади в www.
Усі сім галочок стоять — перейди на крок 9 і натисни
«Перевірити мою роботу». Спроби не обмежені. Щоб закрити з'єднання
з сервером, набери exit.
Система зайде у твій акаунт і подивиться, що ти справді зробив. Спроби не обмежені.
Демонстраційний режим: результат згенеровано для показу. На сервері
ця кнопка викликає POST /api/check, який запускає чекер уроку
від імені учня.
Це те, що бачить учитель, коли виставляє оцінку.
| Складник | Вага | Результат |
|---|
Усе, що можна перевірити, — з відкритих стандартів і документації. Перевіряти дозволено й корисно.
/home,
/etc, /var, /usr, /tmp, /media.
refspecs.linuxfoundation.org · FHS 3.0Повний список із поясненнями — у файлі
urok-01-джерела.md поруч із цією сторінкою. Приклади виводу
команд (uid, версія ядра, дати, PID) складені як типові
для навчального сервера: на твоєму акаунті числа будуть свої.