📦 Управление пакетами и службами в Ubuntu Server

Цель занятия: Научиться устанавливать, обновлять и удалять программное обеспечение с помощью менеджера пакетов apt, а также управлять системными службами (демонами) с помощью systemctl.

1. Менеджер пакетов APT

В операционной системе Ubuntu для установки программного обеспечения используется пакетный менеджер APT (Advanced Package Tool). Все программы хранятся в централизованных репозиториях.

Основные команды управления пакетами

Команда Описание
sudo apt update Обновляет список доступных пакетов из репозиториев.
Важно: выполнять перед установкой любого нового ПО.
sudo apt upgrade Обновляет все установленные пакеты до последних версий.
sudo apt install <package> Устанавливает указанный пакет.
sudo apt remove <package> Удаляет пакет, но оставляет файлы конфигурации.
sudo apt purge <package> Полностью удаляет пакет вместе с файлами конфигурации.
sudo apt search <query> Ищет пакеты по названию или описанию.
sudo apt show <package> Показывает подробную информацию о пакете.
⚠️ Важно: Команды установки, удаления и обновления требуют прав суперпользователя. Всегда используйте префикс sudo.

Пример работы с пакетами

Допустим, нам нужно установить текстовый редактор htop (улучшенная версия top):

# 1. Обновляем базу данных пакетов
sudo apt update

# 2. Ищем пакет (необязательно, если имя известно точно)
sudo apt search htop

# 3. Устанавливаем пакет
sudo apt install htop

# 4. Запускаем программу
htop

# 5. Если программа больше не нужна, удаляем её
sudo apt remove htop

2. Система управления службами Systemd

В современных версиях Ubuntu за запуск, остановку и автозагрузку программ-демонов (служб) отвечает система systemd. Управление осуществляется через утилиту systemctl.

Службы (services) — это программы, работающие в фоновом режиме (например, веб-сервер Nginx, база данных MySQL, SSH-сервер).

Основные команды systemctl

Команда Описание
sudo systemctl status <service> Показывает текущее состояние службы (активна, остановлена, ошибки).
sudo systemctl start <service> Запускает службу немедленно.
sudo systemctl stop <service> Останавливает службу.
sudo systemctl restart <service> Перезапускает службу (применяет изменения конфигурации).
sudo systemctl enable <service> Добавляет службу в автозагрузку при старте системы.
sudo systemctl disable <service> Убирает службу из автозагрузки.

Анализ статуса службы

При выполнении команды status обратите внимание на следующие индикаторы:

# Проверка статуса SSH сервера
sudo systemctl status ssh

# Перезапуск веб-сервера после изменения настроек
sudo systemctl restart nginx

# Включение службы в автозагрузку
sudo systemctl enable mysql

3. Просмотр логов (Journalctl)

Если служба не запускается, необходимо изучить логи. В systemd используется команда journalctl.

Команда Описание
sudo journalctl -u <service> Показать все логи конкретной службы.
sudo journalctl -u <service> -f Режим реального времени (follow). Логи появляются по мере записи.
sudo journalctl -xe Показать логи с подробностями об ошибках за последние события.

🛠 Практическое задание: «Развертывание веб-сервера»

Выполните следующие шаги последовательно. Заменяйте LOGIN на ваш логин там, где это требуется.

  1. Подготовка системы
    • Обновите списки пакетов: sudo apt update
    • Обновите установленное ПО: sudo apt upgrade -y
  2. Установка веб-сервера Nginx
    • Установите пакет: sudo apt install nginx -y
    • Проверьте статус службы: sudo systemctl status nginx. Убедитесь, что статус active (running).
  3. Настройка автозагрузки
    • Включите автозапуск Nginx при загрузке сервера: sudo systemctl enable nginx
    • Проверьте, что служба теперь enabled.
  4. Создание тестовой страницы
    • Перейдите в директорию веб-сервера: cd /var/www/html
    • Создайте файл index.html с вашим именем:
      echo "<h1>Привет, это сервер пользователя LOGIN</h1>" | sudo tee index.html
    • Проверьте права доступа к файлу. Если нужно, измените владельца на текущего пользователя или дайте права на чтение всем.
  5. Проверка работы
    • Используйте утилиту curl для проверки локального доступа:
      curl localhost
    • В ответ вы должны увидеть вашу надпись «Привет, это сервер пользователя LOGIN».
  6. Управление службой
    • Остановите веб-сервер: sudo systemctl stop nginx
    • Попробуйте снова выполнить curl localhost. Должна возникнуть ошибка соединения.
    • Запустите сервер обратно: sudo systemctl start nginx
    • Убедитесь, что сайт снова доступен.
  7. Отчет

    Сделайте скриншоты или скопируйте в текстовый файл выводы команд:

    • systemctl status nginx (после запуска)
    • Результат работы curl localhost

4. Полезные советы