Что ещё нужно знать администратору сервера
Карта навыков
Сайт на VPS работает после урока 5 и перестаёт быть проектом, становясь машиной, за которой вы следите. Знаний для этого нужно не бесконечно много, но у них есть части, и у каждой части есть цель. Таблица ниже — вся карта; разделы после неё разбирают части в том порядке, в каком их встречает новичок.
| Навык | Что он даёт |
|---|---|
| Командная строка | Находить файлы, читать журналы, выполнять что угодно дважды одинаково. |
| Пользователи и права | Дать сайту минимум доступа, который ему нужен, и знать, кто что может прочитать. |
| Службы и systemd | Запускать, останавливать и диагностировать программы, которые отвечают на запросы. |
| Пакеты | Устанавливать и обновлять программы из доверенного источника. |
| Сети | Понимать адреса, порты, разрешение имён и файрволы. |
| Веб-серверы и TLS | Обслуживать сайт и его сертификат без панели. |
| Базы данных | Держать данные сайта согласованными, сохранёнными и доступными только сайту. |
| Резервные копии и мониторинг | Узнавать о проблеме раньше посетителей и восстанавливаться, когда она случилась. |
| Журналы | Находить первую ошибку, а не самую громкую. |
| Скрипты оболочки и git | Повторять работу, не набирая её заново, и держать настройку под контролем версий. |
Командная строка
Всё на сервере — это файл или процесс, и оболочка показывает и то и другое. Вам нужно, пожалуй, тридцать команд и три привычки. Привычки важнее: читать руководство прежде, чем лезть в интернет, печатать путь перед тем, как удалять, и менять одну вещь за раз.
man 5 nginx.conf
Число в man 5 означает раздел: 1 — команда, 5 — формат файла, 8 — системное администрирование. Страница man быстрее и точнее случайного поста в блоге, и её написали люди, сделавшие программу. Когда вы не знаете имени команды:
apropos "dns lookup"
dig (1) - DNS lookup utility host (1) - DNS lookup utility getent (1) - get entries from Name Service Switch libraries
Практикуйтесь на настоящих файлах, а не на игрушках. Найдите три самых больших файла в папке, найдите строку в журнале, посчитайте, сколько раз повторяется ошибка:
du -h /var/log/* | sort -h | tail -n 3
grep -c " 500 " /var/log/nginx/access.log
Bash — язык этих команд. Сначала не нужно писать программы; конвейер из двух команд уже решает большинство ежедневных вопросов.
Пользователи, права и sudo
Каждый процесс работает под каким-то пользователем, и каждый файл говорит, кому можно его читать, записывать и выполнять. Три числа в chmod — это права владельца, группы и всех остальных, в этом порядке: 4 — чтение, 2 — запись, 1 — выполнение.
| Режим | Значение | Обычное применение |
|---|---|---|
| 644 | Владелец читает и пишет, остальные читают | Картинка, файл PHP сайта |
| 600 | Только владелец читает и пишет | Ключ, файл с паролем |
| 755 | Владелец пишет, все читают и входят | Папка, которую читает веб-сервер |
| 750 | Владелец и группа читают и входят | Папка сайта, группа которой — веб-сервер |
Выучите id, чтобы видеть, кто вы, и ls -l, чтобы видеть, кому что принадлежит. Никогда не решайте проблему с правами через chmod 777: он даёт запись каждому пользователю машины, включая того, кого создал атакующий. Дайте доступ группе и назначьте правильную группу. sudo настраивается в /etc/sudoers, который правят только через visudo, чтобы из-за ошибки в синтаксисе вы не потеряли доступ к sudo.
Службы и systemd
В Ubuntu каждая долго работающая программа — это служба systemd с файлом unit, обычно в /lib/systemd/system/. Четыре команды systemctl отвечают почти на любой вопрос:
systemctl status nginx
sudo systemctl restart nginx
sudo systemctl enable nginx
journalctl -u nginx --since "1 hour ago" --no-pager
status показывает, работает ли служба, и последние напечатанные ею строки. restart останавливает и запускает её; reload просит перечитать настройку, не обрывая подключения, и это то, что нужно для Nginx и PHP-FPM. enable включает запуск при загрузке; без него служба может работать сейчас и быть забытой после перезагрузки. Когда пишете свой файл unit, скопируйте существующий и прочитайте каждую строку; две строки, которые забывают, — After=network.target и Restart=on-failure.
Пакеты
Ставьте программы из дистрибутива, а не из случайного архива. Пакеты Ubuntu подписаны, проверены вместе и обновляются командой безопасности. Четыре команды, которые надо знать:
apt search nginx
apt show nginx
sudo apt install nginx
dpkg -l | grep nginx
apt show печатает версию, размер, зависимости и
имя сопровождающего до установки. Программа, которую вы собрали из
исходников сами, не будет получать обновления безопасности, и через два
года никто не вспомнит, как её собирали. Когда сайту нужна версия новее
той, что поставляет дистрибутив, предпочтите официальный репозиторий
проекта и запишите, откуда он взялся.
Обновления — привычка, а не событие: см. статью об обновлениях и
включите автоматические обновления безопасности, как показывает урок
8.
Сети
Четыре идеи объясняют почти любую сетевую проблему: адрес, порт, маршрут и имя. Адрес говорит, какая машина, порт — какая служба на этой машине, маршрут — как пакеты туда попадают, а имя — это удобство, которое разрешается в адрес до того, как что-либо произойдёт.
ip -brief address
lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 203.0.113.10/24 2001:db8::10/64
ip route
default via 203.0.113.1 dev eth0 proto static 203.0.113.0/24 dev eth0 proto kernel scope link src 203.0.113.10
Маршрут по умолчанию — это выход в интернет. Без него сервер может говорить со своей подсетью и больше никуда, и это выглядит точно как сломанный DNS. Затем проверяйте слои по порядку: отвечает адрес, отвечает порт, разрешается имя, отвечает служба.
ping -c 2 1.1.1.1
dig +short example.com
curl -I https://example.com
Между портом и сетью стоит файрвол. В Ubuntu это ufw перед nftables; закрытый порт выглядит как служба, которая лежит, когда проверяете его снаружи, и работает, когда проверяете с сервера. Эта разница и есть подсказка: если localhost работает, а интернет нет, подозревайте файрвол или сеть провайдера раньше программы.
Веб-серверы и TLS
Блок сервера вы уже писали в уроке 5. Навык, который стоит развивать, — читать его: каждый запрос проходит через listen, server_name, root, location и обработчик. Когда страница возвращает не то, читайте эти пять по порядку. nginx.conf: настройка и сайты — справочник по подробностям.
TLS — это сертификат, закрытый ключ и цепочка доверия. Certbot делает все три за вас, а понимать нужно имена, которые он покрывает, дату, когда он истекает, и проверку, что продление ещё работает. Чтобы посмотреть, что сервер действительно отправляет:
openssl s_client -connect example.com:443 -servername example.com < /dev/null | openssl x509 -noout -subject -dates
subject=CN = example.com notBefore=Nov 6 09:00:00 2026 GMT notAfter=Feb 4 09:00:00 2027 GMT
Опция -servername отправляет SNI, поэтому вы видите сертификат этого имени, а не сайта по умолчанию. Если они различаются, имени не хватает в настройке.
Базы данных
Веб-мастеру не нужно быть администратором баз данных, но нужно четыре вещи: создать базу и пользователя, дать только то, что нужно сайту, снять согласованный дамп и восстановить его в тестовую базу. MariaDB — справочник по командам; привычки такие:
- База данных слушает только localhost, а сайт подключается через локальный сокет.
- У каждого сайта своя база и свой пользователь, никогда не аккаунт root.
- Дамп снимают с mysqldump --single-transaction для таблиц InnoDB, чтобы загруженный сайт не дал сломанную копию.
- Восстановление проверяют в отдельной базе, а не поверх рабочей.
mysqldump --single-transaction -u example_user -p example_db > site-$(date +%F).sql
Резервные копии и мониторинг
Два вопроса решают, переживёте ли вы плохой день: какого возраста самая
свежая копия и восстанавливал ли её кто-нибудь? На первый отвечает
правило 3-2-1: три копии, на двух видах носителей, одна из них вне
сервера. На второй отвечает проверка восстановления, и это та часть,
которую пропускают все.
Статья о резервных копиях, которые действительно восстанавливаются,
описывает метод; rsync,
restic и borg —
инструменты.
Мониторинг — та же идея для настоящего: проверка, которая раз в минуту
идёт снаружи, и несколько чисел изнутри. Доступность, свободный диск,
память, возраст свежей резервной копии, дни до конца сертификата.
Оповещение, которое доходит до телефона, ценнее красивого дашборда,
который никто не открывает.
df -h /
Filesystem Size Used Avail Use% Mounted on /dev/vda1 39G 12G 25G 33% /
Как учиться
Порядок значит меньше, чем цикл: прочитать немного, сделать на машине, сломать, починить, записать, что узнал. Сервер, которого вы боитесь касаться, ничему не научит, поэтому соберите такой, который можно уничтожить.
- Виртуальная машина дома. VirtualBox или KVM на вашем компьютере, облачный образ Ubuntu, снимок перед каждым экспериментом. Цена: ноль. Это лучшее место для первого месяца учёбы.
- Дешёвый VPS. Когда команды работают локально, арендуйте самый маленький сервер на месяц. Настоящий IP, настоящий файрвол и настоящий сертификат учат тому, чему локальная машина не научит, включая момент, когда вы сами закрываете себе доступ.
- Ломайте и чините нарочно. Остановите веб-сервер, закройте порт, испортите файл настройки, затем почините его через консоль. С этими сбоями вы всё равно встретитесь в два часа ночи; встретьте их сначала на машине без посетителей.
- Руководство и официальная документация. Страницы man, документация Nginx, Ubuntu Server Guide, база знаний MariaDB. Читайте страницу для той версии, которая у вас стоит, а не для самой новой.
- Записывайте. Файл с командами, которые сработали, портами, которые вы открыли, и адресами, которые использовали. Через год это ваш лучший справочник и черновик собственного регламента.
- Тридцать минут в день. Регулярные короткие занятия лучше выходных раз в два месяца, потому что состояние машины остаётся в голове.
Порядок обучения
- Файлы, права, grep, find, less: две недели ежедневного использования.
- Пользователи, sudo, SSH-ключи: одна неделя, и потом вы больше никогда не входите от root.
- systemd, пакеты, журналы: одна неделя, достаточно, чтобы установить и продиагностировать службу.
- Сети: адреса, маршруты, порты, DNS, файрвол. Две недели, потому что здесь живёт большая часть путаницы.
- Nginx и PHP-FPM: одна неделя, с вашим сайтом в качестве упражнения.
- TLS и сертификаты: два дня, в основном на то, чтобы научиться читать, что отправляет сервер.
- Базы данных: неделя на создание, выдачу прав, дамп и восстановление.
- Резервные копии и мониторинг: выходные, с настоящим восстановлением.
- Скрипты Bash и cron: неделя, автоматизация резервной копии и проверки обновлений.
- Git для файлов настройки: выходные, и потом у каждого изменения есть история.
Десять недель по полчаса в день — реалистичный план для мотивированного новичка. Уроки этого курса идут в том же порядке, так что сам курс — первое знакомство с этим списком.
Сертификаты
Сертификат не делает вас администратором, но хороший даёт план учёбы со сроком и пропуск мимо некоторых фильтров при найме. Четыре стоит знать:
| Сертификат | Что покрывает | Когда он стоит того |
|---|---|---|
| LPIC-1 | Основы Linux: оболочка, файлы, пользователи, процессы, пакеты, сети, безопасность, в двух экзаменах | Вы хотите независимый от вендора первый сертификат и понятную программу |
| RHCSA | Администрирование Red Hat Enterprise Linux, проверяется на настоящей машине | Вы работаете с Red Hat или хотите практический экзамен, который нельзя сдать, заучив вопросы |
| CompTIA Linux+ | Широкое введение в администрирование Linux | Вы только начинаете и хотите один признанный начальный сертификат |
| CompTIA Security+ | Понятия безопасности: угрозы, криптография, управление доступом, риск | В вашей работе есть безопасность, а не только серверы |
LPIC-1 и Linux+ не зависят от вендора. LPIC-1 — это вопросы с вариантами ответа и с пропусками; Linux+ смешивает вопросы с вариантами ответа и практические задания. RHCSA привязан к Red Hat и ценится потому, что весь экзамен выполняется на настоящей системе. Security+ — не сертификат по Linux и не научит вас Nginx, но это обычный первый шаг в работу с безопасностью. Ни один из них не заменяет работающий сайт и резервную копию, которую вы восстановили.
Куда двигаться дальше
- Docker и контейнеры. Упакуйте сайт с его зависимостями и запускайте один и тот же образ на ноутбуке и на сервере. Следующий логичный шаг после сервера, собранного руками.
- Ansible. Опишите настройку сервера как playbook, чтобы новая машина настраивалась так же за десять минут, а настройку проверяли как код.
- CI/CD. Тестируйте, собирайте и разворачивайте из конвейера, а не копируйте файлы руками. Сайт меняется только после того, как тесты прошли.
- Инфраструктура как код. Terraform или OpenTofu описывают сами серверы, а не только то, что на них работает. Создайте и уничтожьте целое окружение одной командой.
- Мониторинг и SRE. Метрики, журналы в одном месте, оповещения, которые что-то значат, бюджеты ошибок. Дисциплина намеренного поддержания надёжности службы.
- Безопасность. Безопасность приложений, сканирование зависимостей, тестирование на проникновение, реагирование на инциденты. Урок 7 — карта того, что может пойти не так; это дорога к профессиональному исправлению.
- Облачные платформы. AWS, Google Cloud или местный аналог: управляемые базы данных, объектное хранилище, балансировщики нагрузки, автомасштабирование. Те же идеи в большем масштабе и с другой моделью оплаты.
Тест
1 Какая команда показывает страницу руководства о формате файла настройки?
Ответ
b) Раздел 5 — это форматы файлов, раздел 1 — команды. Страница формата перечисляет каждую директиву и её значение по умолчанию.
2 Сайт не может писать в свою папку загрузок. Какое исправление правильное?
Ответ
b) 777 позволяет писать каждому пользователю машины, включая того, кого создал атакующий. Дайте минимальный доступ нужному пользователю или группе.
3 В чём разница между systemctl restart nginx и systemctl reload nginx?
Ответ
b) Reload — мягкий вариант для изменения настройки. Restart нужен для нового двоичного файла или зависшего процесса и ненадолго обрывает подключения.
4 Сайт работает на самом сервере, но не из интернета. Куда смотреть первым?
Ответ
b) Работающий localhost и неработающий интернет указывают на путь, а не на программу: закрытый порт, неверный адрес или файрвол провайдера.
5 Что делает резервную копию надёжной?
Ответ
b) Непроверенная копия — это надежда. Восстановите её в отдельное место и проверьте, что файлы открываются, а запросы к базе работают.
6 Какой сертификат сдают практическим экзаменом на Red Hat Enterprise Linux?
Ответ
c) RHCSA выполняется на настоящей системе, поэтому его нельзя сдать, заучив вопросы. LPIC-1 — вопросы с вариантами ответа и пропусками, Linux+ добавляет практические задания, а Security+ вообще о безопасности.
Автор статьи: Arthur Isaev