Это руководство — структурированный путь освоения Linux для DevOps-инженеров и системных администраторов. Мы разберем ключевые навыки, необходимые для повседневной работы: от обоснованного выбора дистрибутива до эффективной работы в командной строке, управления пакетами и настройки сетевых интерфейсов. Вы получите готовые рабочие примеры конфигураций, которые минимизируют риски при развертывании, систематизируете знания и сможете уверенно работать в новых окружениях.
Материал основан на проверенной практике и ориентирован на решение конкретных задач. Мы сосредоточимся на практических аспектах, которые экономят время и снижают вероятность ошибок, предоставляя четкие инструкции для Ubuntu/Debian, Fedora/RHEL/CentOS и других популярных дистрибутивов.
Выбор дистрибутива Linux: основа для стабильной работы
Правильный выбор дистрибутива — фундамент для стабильной работы сервера. Он определяет доступность пакетов, частоту обновлений, сложность администрирования и уровень поддержки в enterprise-среде. Мы сравним три основных семейства, чтобы вы могли сделать взвешенный выбор, основанный на ваших задачах и окружении.
Ubuntu/Debian: универсальная стабильность для большинства задач
Семейство Debian, в частности Ubuntu LTS, является стандартом де-факто для многих облачных и веб-серверов. Его главные преимущества:
- Огромное сообщество и документация: Практически любая проблема уже решена и описана.
- Долгосрочная поддержка (LTS): Релизы Ubuntu LTS поддерживаются 5 лет, что критично для production-сред.
- Простой менеджер пакетов APT: Интуитивно понятные команды
apt update,apt install.
Недостаток — иногда более старые версии пакетов в стабильных репозиториях. Это компромисс в пользу надежности. Ubuntu/Debian идеально подходят для веб-серверов (Nginx, Apache), Docker-хостов, а также являются лучшим выбором для начинающих администраторов.
Fedora/RHEL/CentOS: корпоративная надежность и современные технологии
Это семейство — стандарт для корпоративных серверов, где критична предсказуемость и долгосрочная поддержка.
- Red Hat Enterprise Linux (RHEL) / CentOS Stream: Ориентированы на стабильность. RHEL предоставляет коммерческую поддержку, CentOS Stream — upstream для будущих версий RHEL.
- Fedora: Rolling-edge дистрибутив, который служит полигоном для технологий, позже попадающих в RHEL. Дает ранний доступ к новым версиям ядра и ПО.
- Менеджеры пакетов DNF/YUM:
dnf— современная заменаyumв Fedora и RHEL 8+. Использует библиотеку libsolv для более быстрого разрешения зависимостей. - Интеграция с SELinux: Мандатный контроль доступа включен и настроен по умолчанию, что повышает безопасность.
Особенность — управление обновлениями через подписки (RHEL) и система модулей (Application Streams), позволяющая устанавливать разные версии одного ПО.
Arch Linux и нишевые дистрибутивы: когда нужна максимальная контроль
Arch Linux — это rolling-release дистрибутив, где пользователь получает абсолютно последние версии всех пакетов. Это дает максимальный контроль и свежее ПО, но требует глубоких знаний системы для администрирования.
- Практически не используется для корпоративных production-серверов из-за потенциальной нестабильности обновлений.
- Идеален для специфичных задач, где необходима последняя версия конкретного софта, или в качестве среды для разработки и тестирования.
- Менеджер пакетов Pacman и система сборки AUR предоставляют доступ к огромному количеству пакетов.
Для работы в смешанных средах (Windows/Linux) рассмотрите Windows Subsystem for Linux (WSL 2). Он позволяет запускать полноценный дистрибутив Linux внутри Windows, что удобно для тестирования скриптов, изучения Linux или управления гибридной инфраструктурой. Современный Windows Terminal с GPU-ускорением значительно улучшает опыт работы с WSL, PowerShell и CMD, организуя их в отдельные вкладки.
Фундамент: работа в командной строке Bash и управление пакетами
Эффективная работа в терминале — базовый навык. Здесь мы даем «шпаргалку» команд и паттернов, которые используются ежедневно, и сравниваем системы управления пакетами для разных дистрибутивов.
Базовый набор команд Bash для ежедневного администрирования
Эти команды составляют основу взаимодействия с системой. Запоминайте не только команды, но и ключевые флаги.
- Навигация и файлы:
ls -la(подробный список),cd,pwd,cat,less(просмотр больших файлов),tail -f /var/log/syslog(отслеживание логов в реальном времени). - Поиск:
find /etc -name "*.conf"(поиск файлов),grep -r "error" /var/log(рекурсивный поиск текста). - Процессы:
ps aux | grep nginx(поиск процесса),topилиhtop(мониторинг ресурсов),kill -9(принудительное завершение).
Пример для реальной задачи: найти все файлы .log старше 7 дней и удалить их: find /var/log -name "*.log" -mtime +7 -delete.
apt: управление пакетами в Ubuntu и Debian
APT (Advanced Package Tool) — высокоуровневый интерфейс для управления пакетами. Вот основные команды для безопасной работы:
# Обновление списка доступных пакетов (ВСЕГДА делайте это первым)
sudo apt update
# Установка обновлений для всех установленных пакетов
sudo apt upgrade
# Установка нового пакета
sudo apt install nginx
# Удаление пакета с сохранением конфигурационных файлов
sudo apt remove nginx
# Полное удаление пакета с конфигами
sudo apt purge nginx
# Поиск пакета
apt search "monitoring"
# Просмотр установленных пакетов
apt list --installedВажно: Команда apt dist-upgrade может удалять пакеты для разрешения сложных зависимостей. Используйте ее с осторожностью, предварительно проверяя план действий (apt dist-upgrade --dry-run). Для добавления сторонних репозиториев используйте add-apt-repository.
dnf и yum: работа с пакетами в Fedora, RHEL и CentOS
В современных версиях RHEL/Fedora используется dnf. Синтаксис похож на yum, но производительность выше.
# Обновление всех пакетов (аналог apt update && apt upgrade)
sudo dnf update
# Установка пакета
sudo dnf install nginx
# Удаление пакета
sudo dnf remove nginx
# Поиск
sudo dnf search "python3"
# Просмотр информации о пакете
dnf info nginx
# Установка группы пакетов (например, для разработки)
sudo dnf groupinstall "Development Tools"Для доступа к дополнительным пакетам в RHEL/CentOS часто требуется репозиторий EPEL (Extra Packages for Enterprise Linux). Установите его: sudo dnf install epel-release.
Для автоматизации рутинных задач, таких как мониторинг свободного места или проверка служб, начните с написания простых bash-скриптов. Это основа для более сложных систем, подобных тем, что описаны в нашем практическом руководстве по мониторингу производительности сервера.
Настройка сетевых интерфейсов и VPN: обеспечение связи и безопасности
Настройка сети — одна из самых частых задач. Здесь мы предоставляем конкретные примеры конфигураций для разных дистрибутивов и современных протоколов, чтобы минимизировать риск ошибки.
Конфигурация сети: от статического IP до DHCP
Способ настройки зависит от дистрибутива. Всегда проверяйте имена интерфейсов командой ip a.
Ubuntu 22.04+ / Debian (использует netplan):
Файл конфигурации: /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
ens3:
dhcp4: no
addresses:
- 192.168.1.10/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]Применить: sudo netplan apply
RHEL 9+ / Fedora 40+ (использует NetworkManager и ключевые файлы):
Файл конфигурации: /etc/NetworkManager/system-connections/ens3.nmconnection
[connection]
id=ens3
uuid=<авто>
type=ethernet
interface-name=ens3
[ipv4]
method=manual
addresses1=192.168.1.10/24,192.168.1.1
dns=8.8.8.8;1.1.1.1;
[ipv6]
method=disabledПрименить: sudo nmcli connection reload и sudo nmcli connection up ens3
WireGuard vs OpenVPN: выбор протокола для стабильного и быстрого VPN
Выбор протокола VPN напрямую влияет на производительность и нагрузку на CPU.
- OpenVPN: Зрелый, проверенный протокол с мощной криптографией. Имеет более комплексную кодобазу, что может создавать бóльшую нагрузку на процессор, особенно на слабом оборудовании, вызывая колебания («пляски») скорости.
- WireGuard: Современный протокол с легким кодом (~4 тыс. строк). Архитектура проще, что часто приводит к более высокой и стабильной скорости соединения с меньшими задержками. Потребляет меньше ресурсов CPU.
Для большинства новых проектов, особенно где важны производительность и простота настройки, WireGuard является предпочтительным вариантом. Установка проста: sudo apt install wireguard (Ubuntu) или sudo dnf install wireguard-tools (Fedora/RHEL).
Практическая настройка WireGuard на Linux сервере
Пошаговая настройка сервера WireGuard.
1. Генерация ключей:wg genkey | sudo tee /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
Установите правильные права: sudo chmod 600 /etc/wireguard/private.key
2. Создание конфигурации сервера /etc/wireguard/wg0.conf:
[Interface]
Address = 10.0.0.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = <СОДЕРЖИМОЕ_СЕРВЕРНОГО_PRIVATE.KEY>3. Добавление пира (клиента) в тот же файл:
[Peer]
# Клиент 1
PublicKey = <ПУБЛИЧНЫЙ_КЛЮЧ_КЛИЕНТА_1>
AllowedIPs = 10.0.0.2/324. Запуск и автозагрузка:sudo systemctl enable --now wg-quick@wg0
Проверка: sudo wg show
При выборе VPN-сервиса обратите внимание: годовые планы подписки часто в 2-3 раза дешевле ежемесячной оплаты.
Устройство файловой системы Linux и управление службами
Понимание структуры файловой системы (Filesystem Hierarchy Standard, FHS) и умение управлять службами через systemd — обязательные знания для безопасного администрирования.
Ключевые директории файловой системы: где что лежит и почему
Знание назначения директорий позволяет быстро находить нужные файлы.
- /etc: Конфигурационные файлы системы и приложений. Например,
/etc/nginx/nginx.conf,/etc/ssh/sshd_config. Никогда не храните здесь скрипты или данные. - /var: Переменные данные: логи (
/var/log), очереди, кэши, файлы баз данных. Директория/var/log— первое место для диагностики проблем. - /home: Домашние директории пользователей. Для системных пользователей (например, nginx, postgres) домашние директории обычно находятся в
/var/lib. - /opt, /usr/local: Для дополнительного ПО, установленного вручную (не из пакетов).
/optчасто используется для проприетарного софта (например, Google Chrome),/usr/local— для программ, собранных из исходников.
Пример поиска всех конфигов Nginx: find /etc -type f -name "*nginx*" 2>/dev/null.
systemd: управление службами и анализ логов
Systemd — это система инициализации и менеджер служб в современных дистрибутивах. Универсальные команды для управления любой службой:
# Запуск/остановка/перезагрузка службы
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
# Включение/отключение автозагрузки при старте системы
sudo systemctl enable nginx
sudo systemctl disable nginx
# Проверка статуса службы (ключевая команда для диагностики)
sudo systemctl status nginxДля просмотра и фильтрации логов используйте journalctl:
# Логи конкретной службы за последний час
sudo journalctl --unit=nginx --since="1 hour ago"
# Логи с выводом в реальном времени (аналог tail -f)
sudo journalctl --unit=nginx -f
# Логи с приоритетом ошибок (err) или критические (crit)
sudo journalctl -p errСоздание простого сервисного unit-файла для вашего скрипта (/etc/systemd/system/my-backup.service):
[Unit]
Description=My Backup Script
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
User=backup-user
[Install]
WantedBy=multi-user.targetПосле создания файла выполните sudo systemctl daemon-reload.
Интеграция в смешанные среды и автоматизация базовых задач
Современный IT-специалист часто работает в гетерогенных средах. Умение интегрировать Linux-инструменты в такие условия и автоматизировать рутину — конкурентное преимущество.
Windows Subsystem for Linux (WSL) как инструмент для администратора
WSL 2 — это не эмулятор, а полноценное ядро Linux, работающее внутри Windows. Это мощный инструмент для:
- Тестирования скриптов и конфигураций перед переносом на production-сервер.
- Изучения Linux в знакомой среде Windows.
- Управления смешанной инфраструктурой с использованием единого набора инструментов (ssh, ansible, bash).
Установите дистрибутив (например, Ubuntu) из Microsoft Store. Для удобной работы используйте Windows Terminal, который поддерживает вкладки, панели, GPU-ускоренный рендеринг текста и отображение программистских лигатур. Вы можете одновременно открыть вкладку с WSL, PowerShell и SSH-сессией на удаленный сервер.
Базовые скрипты Bash для автоматизации рутинных операций
Автоматизация начинается с простых скриптов. Вот несколько проверенных примеров.
Скрипт для проверки свободного места на диске и отправки предупреждения:
#!/bin/bash
THRESHOLD=90
USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ $USAGE -gt $THRESHOLD ]; then
echo "Внимание! Диск / заполнен на ${USAGE}%" | mail -s "Дисковое предупреждение" admin@example.com
fiСкрипт для очистки старых логов в /var/log:
#!/bin/bash
# Удаляем логи apache/nginx старше 30 дней
find /var/log/nginx -name "*.log" -mtime +30 -delete
find /var/log/apache2 -name "*.log" -mtime +30 -delete
# Архивируем системные логи старше 7 дней перед удалением
find /var/log -name "*.log" -mtime +7 -exec gzip {} \;Скрипт для проверки доступности ключевых служб:
#!/bin/bash
SERVICES=("nginx" "postgresql" "docker")
for SERVICE in "${SERVICES[@]}"
do
if systemctl is-active --quiet $SERVICE; then
echo "[OK] $SERVICE работает."
else
echo "[ERROR] $SERVICE не запущен!"
# Можно добавить команду для перезапуска: sudo systemctl restart $SERVICE
fi
doneОсновы безопасного написания скриптов:
- Всегда проверяйте коды возврата команд:
if [ $? -ne 0 ]; then echo "Ошибка"; exit 1; fi - Используйте
set -eв начале скрипта, чтобы он завершался при первой ошибке. - Цитируйте переменные:
echo "$PATH", а неecho $PATH.
Для работы с инфраструктурой как код и CI/CD пайплайнами могут пригодиться инструменты вроде GitHub CLI. Например, GitHub Copilot cloud agent может помочь в исследовании репозиториев и планировании изменений, но его использование выходит за рамки данного руководства.
Освоив базовое администрирование Linux, вы сможете увереннее работать с более сложными технологиями оркестрации, такими как Docker и Kubernetes. Для углубленного изучения контейнеризации рекомендуем наше полное руководство по Docker для DevOps, а также продвинутый гайд по безопасности и оптимизации Docker.