Цели лекции
Эта лекция нужна, чтобы студенты понимали не только команды из практической работы, но и саму учебную среду, в которой они работают. На занятии не требуется глубокое изучение Docker. Важно понять идею: каждому студенту выдаётся отдельное изолированное окружение, похожее на маленький сервер.
После лекции студент должен понимать:
- почему нельзя всем работать на одном сервере под одним пользователем;
- зачем каждому студенту выдаётся отдельная учебная среда;
- чем виртуальная машина отличается от контейнера на простом уровне;
- почему у каждого студента свой SSH-порт;
- почему файлы внутри учебной среды могут быть удалены после занятия;
- какие ограничения есть у учебного контейнера по сравнению с настоящим сервером;
- как безопасно относиться к временной учебной среде.
1. Почему нельзя всем работать на одном сервере
Представим, что на практической работе все 18 студентов подключаются к одному серверу под одним пользователем. На первый взгляд это кажется простым решением: один сервер, один логин, один пароль. Но для учебной работы это быстро превращается в хаос.
Возможные проблемы
| Проблема | Что произойдёт | Почему это плохо |
|---|---|---|
| Один студент удалил чужие файлы | Файлы другого студента исчезли | Невозможно нормально проверить работу |
| Один студент сломал Nginx | Сайт перестал работать у всех | Ошибка одного мешает всей группе |
| Все меняют один конфиг | Настройки конфликтуют между собой | Невозможно понять, чья команда всё сломала |
| Один общий пароль | Нельзя понять, кто реально заходил | Нет ответственности за действия |
| Один сайт на всех | Все перезаписывают index.html |
Работы студентов смешиваются |
2. Что такое изоляция в учебной среде
Изоляция означает, что каждому студенту выдаётся отдельное место для работы. Внутри этого места студент может создавать файлы, менять настройки, устанавливать программы и запускать службы. При этом его действия не должны напрямую мешать другим студентам.
Простая аналогия
Представьте компьютерный класс. Плохой вариант — всем студентам выдать один стол, одну тетрадь и одну ручку. Хороший вариант — у каждого студента есть своё рабочее место.
Без изоляции:
18 студентов ──> один сервер ──> одни файлы и настройки
С изоляцией:
student01 ──> своя среда
student02 ──> своя среда
student03 ──> своя среда
...
student18 ──> своя среда
Что изолируется
Файлы
У каждого студента свои конфиги, свой сайт и своя директория /var/www/site.
Процессы
Если студент запускает Nginx, он запускает его внутри своей среды.
Сеть
У каждой среды может быть свой внутренний адрес и свой проброшенный SSH-порт.
3. Виртуальная машина и контейнер простыми словами
Для выдачи отдельной среды можно использовать разные технологии. Два популярных варианта — виртуальные машины и контейнеры.
Виртуальная машина
Виртуальная машина — это почти отдельный компьютер внутри физического сервера. У неё есть своя операционная система, своё ядро, свои службы, свой диск и свои ресурсы.
Контейнер
Контейнер — это более лёгкая изолированная среда. Она похожа на отдельный сервер для учебных задач, но использует общее ядро хостовой системы. Поэтому контейнер запускается быстрее и требует меньше ресурсов.
| Критерий | Виртуальная машина | Контейнер |
|---|---|---|
| Похожа на отдельный компьютер | Да | Частично |
| Запускается быстро | Обычно медленнее | Обычно быстрее |
| Требует много ресурсов | Больше | Меньше |
| Подходит для 18 учебных сред | Да, но нужно больше ресурсов | Да, удобно и быстро |
| Полностью повторяет обычный сервер | Почти да | Нет, есть ограничения |
Почему для учебной практики удобно использовать контейнеры
- их можно быстро создать для всей группы;
- они занимают меньше ресурсов, чем виртуальные машины;
- их легко удалить после занятия;
- всем студентам можно выдать одинаковое стартовое окружение;
- если студент всё сломал, его среду можно быстро пересоздать.
4. Что именно получает студент
На практике студент получает доступ к отдельной учебной среде Ubuntu. Для студента она выглядит как небольшой сервер: можно подключиться по SSH, работать в терминале, создавать пользователей и группы, настраивать права, ставить Nginx и размещать сайт.
Физический сервер преподавателя
│
├── учебная среда student01
│ ├── пользователь student
│ ├── SSH
│ ├── /var/www/site
│ └── Nginx
│
├── учебная среда student02
│ ├── пользователь student
│ ├── SSH
│ ├── /var/www/site
│ └── Nginx
│
└── учебная среда student18
├── пользователь student
├── SSH
├── /var/www/site
└── Nginx
Что в такой среде настоящее
- командная строка Linux;
- пользователи и группы;
- права доступа к файлам;
- директории вроде
/etc,/var,/home; - установка пакетов через
apt; - настройка Nginx;
- работа с SSH-ключами;
- размещение одностраничного сайта.
Что может отличаться от обычного сервера
- некоторые системные службы могут запускаться не через
systemctl; - firewall внутри контейнера может работать иначе, чем на полноценной виртуальной машине;
- после удаления учебной среды все изменения исчезают;
- низкоуровневые настройки системы могут быть недоступны.
5. Как студент подключается к своей среде по SSH
SSH — это способ удалённо открыть терминал на сервере. В учебной лаборатории студенты подключаются не к своему компьютеру, а к удалённой среде на сервере преподавателя.
Обычная команда подключения
ssh student@SERVER_IP -p 2201
Разберём команду:
| Фрагмент | Значение |
|---|---|
ssh |
Программа для подключения к удалённой системе |
student |
Имя пользователя внутри учебной среды |
SERVER_IP |
IP-адрес сервера преподавателя |
-p 2201 |
Порт, через который студент попадает именно в свою среду |
Почему у разных студентов разные порты
Обычно SSH работает на порту 22. Но если на одном физическом сервере запущено 18 учебных сред, всем нельзя выдать один и тот же внешний порт 22. Поэтому используется проброс портов.
SERVER_IP:2201 ──> student01:22
SERVER_IP:2202 ──> student02:22
SERVER_IP:2203 ──> student03:22
...
SERVER_IP:2218 ──> student18:22
2201, 2202, 2203. Внутри каждой учебной среды SSH всё равно работает на обычном порту 22.
6. Порты как двери в систему
Порт можно представить как дверь в определённую службу. IP-адрес указывает на сервер, а порт указывает, к какой программе на этом сервере нужно подключиться.
Аналогия
IP-адрес — это адрес здания. Порт — это номер кабинета. В одном здании может быть много кабинетов, и в каждом кабинете работает своя служба.
| Порт | Служба | Для чего используется |
|---|---|---|
22 |
SSH | Удалённое подключение к терминалу |
80 |
HTTP | Открытие сайта без шифрования |
443 |
HTTPS | Открытие сайта с шифрованием |
Что значит запись 2201:22
Такая запись означает: внешний порт 2201 на сервере преподавателя ведёт во внутренний порт 22 учебной среды.
2201:22
│ │
│ └── порт внутри учебной среды
└─────── порт на сервере преподавателя
7. Что происходит с файлами внутри учебной среды
Учебная среда может быть временной. Это значит, что после окончания пары преподаватель может удалить её и создать заново перед следующим занятием. Такой подход помогает начинать каждую практику с чистого состояния.
Почему это удобно
- не остаются старые ошибки;
- не нужно вручную чистить серверы после студентов;
- все начинают следующую пару в одинаковых условиях;
- если студент сломал систему, её можно пересоздать.
Что важно помнить студенту
Где должны лежать файлы сайта на практической
В практической работе файлы сайта размещаются в директории:
/var/www/site
Эта директория нужна для учебного сайта. Именно её студент настраивает в Nginx через директиву root.
server {
listen 80;
server_name student01.lab.example.com;
root /var/www/site;
index index.html;
}
8. Ограничения учебного контейнера
Контейнер похож на отдельный сервер, но не является им полностью. Это важно понимать, чтобы не путать ошибки в командах с особенностями учебной среды.
Команда systemctl
На обычном сервере службы часто управляются через systemctl:
sudo systemctl restart nginx
В учебном контейнере эта команда может не работать, потому что внутри контейнера не всегда запущен полноценный системный менеджер служб.
Вместо этого может использоваться:
sudo service nginx restart
systemctl управляет службами через специальный системный механизм. Если этот механизм внутри контейнера не запущен, команда работать не будет.
Firewall внутри контейнера
На обычном сервере firewall управляет сетевым доступом к системе. В контейнерной лаборатории сеть устроена сложнее: часть правил работает на сервере преподавателя, а часть — внутри учебной среды. Поэтому настройка firewall в контейнере может отличаться от полноценной виртуальной машины.
Что всё равно полезно отрабатывать
- понимание портов
22,80,443; - команды проверки сетевых служб;
- идею “открыто только необходимое”;
- работу с Nginx и файлами сайта;
- SSH-ключи и отключение входа по паролю.
9. Правила безопасной работы в учебной среде
Даже если среда учебная и временная, к ней нужно относиться как к настоящему серверу. Это формирует нормальную профессиональную привычку.
Что можно делать
- создавать учебные файлы;
- настраивать свой сайт;
- устанавливать нужные пакеты;
- изменять конфиги в рамках задания;
- ошибаться и исправлять ошибки.
Что нельзя делать
- хранить личные пароли;
- публиковать токены и секретные ключи;
- мешать работе других студентов;
- пытаться подключаться к чужим средам;
- использовать сервер не по учебному заданию.
Почему нельзя использовать chmod 777 без необходимости
Команда chmod 777 даёт полные права всем: владельцу, группе и остальным пользователям. Для учебной проверки это иногда кажется быстрым решением, но в реальной практике это плохая привычка.
777 = rwx rwx rwx
│ │ │
│ │ └── все остальные могут читать, писать и запускать
│ └────── группа может читать, писать и запускать
└────────── владелец может читать, писать и запускать
Почему используется группа deploy
В практической работе файлы сайта должны принадлежать пользователю root и группе deploy. Это нужно для разделения ответственности:
rootостаётся владельцем системной директории;- группа
deployполучает право изменять файлы сайта; - студент добавляется в группу
deployи может работать с сайтом без превращения всей директории в “общую для всех”.
sudo groupadd deploy
sudo usermod -aG deploy student
sudo chown -R root:deploy /var/www/site
sudo chmod -R 770 /var/www/site
10. Типичные ошибки студентов
Большая часть проблем на сервере решается не угадыванием, а последовательной проверкой. Ниже — частые ошибки и их причины.
| Ситуация | Возможная причина | Что проверить |
|---|---|---|
| Не получается подключиться по SSH | Неверный порт, пароль, логин или ключ | ssh student@SERVER_IP -p 2201 |
| Подключился не туда | Использован порт другого студента | Сверить номер студента и SSH-порт |
Команда systemctl не работает |
Среда запущена в контейнере | Использовать service, если так указано в задании |
| Сайт показывает 403 | Проблема с правами на файлы или директорию | ls -la /var/www/site |
| Сайт показывает 404 | Файл не найден или неверный root |
Путь в Nginx и наличие index.html |
| После выхода из SSH не применились группы | Сессия была открыта до добавления в группу | Выйти и подключиться заново |
Правильная логика диагностики
- Понять, где проблема. Подключение, права, Nginx, домен или порт?
- Проверить простую вещь. Логин, порт, имя файла, путь к директории.
- Проверить статус службы. Например, запущен ли Nginx.
- Проверить конфиг. Ошибка в одной строке может сломать весь сайт.
- Смотреть вывод команды. Терминал обычно прямо пишет, что пошло не так.
11. Рекомендуемый план рассказа на 60 минут
Этот блок можно использовать преподавателю как структуру лекции.
| Время | Тема | Что объяснить |
|---|---|---|
| 0–7 минут | Проблема общего сервера | Почему нельзя всем работать в одной системе без разделения |
| 7–15 минут | Изоляция | Отдельная среда для каждого студента, защита работ друг от друга |
| 15–27 минут | VM и контейнер | Простое сравнение, без глубоких технических деталей |
| 27–38 минут | SSH и порты | Почему один студент подключается к 2201, другой к 2202 |
| 38–47 минут | Файлы и временность среды | Почему данные могут исчезнуть после занятия |
| 47–55 минут | Ограничения контейнеров | Почему некоторые команды отличаются от обычного сервера |
| 55–60 минут | Итоги и вопросы | Повторить главные выводы и разобрать ошибки |
12. Вопросы для закрепления
Вопросы студентам
- Почему плохо, если все студенты работают на одном сервере под одним пользователем?
- Что означает изоляция учебной среды?
- Чем контейнер проще виртуальной машины?
- Почему контейнер не является полноценной виртуальной машиной?
- Зачем студентам выдают разные SSH-порты?
- Что означает запись
2201:22? - Почему файлы внутри учебной среды могут исчезнуть после занятия?
- Почему команда
systemctlможет не работать в контейнере? - Почему не стоит использовать
chmod 777? - Зачем нужна группа
deploy?
Короткие ответы
- Работы смешаются, ошибки одного сломают среду для всех.
- У каждого отдельное место для работы.
- Он легче и быстрее запускается.
- Он использует общие механизмы хостовой системы и имеет ограничения.
- Чтобы каждый попадал в свою среду.
- Внешний порт 2201 ведёт во внутренний порт 22.
- Среда учебная и может быть пересоздана.
- Внутри контейнера может не быть полноценного systemd.
- Это открывает полный доступ всем.
- Чтобы дать права на сайт нужным пользователям через группу.
13. Главные выводы
- Каждому студенту нужна отдельная среда. Это защищает работы студентов друг от друга.
- Контейнер похож на маленький сервер. В нём можно работать с Linux, SSH, пользователями, правами и Nginx.
- Контейнер не равен полноценной виртуальной машине. Некоторые системные команды и firewall могут работать иначе.
- SSH-порт у каждого студента свой. Например,
2201ведёт к первому студенту,2202— ко второму. - Учебная среда временная. После пары она может быть удалена и создана заново.
- Серверные привычки должны быть профессиональными даже в учебной среде. Не использовать
chmod 777без необходимости, не хранить секреты, аккуратно работать с конфигами.