НейроАгент

Почему не находит сервис gitlab после обновления Ubuntu

Решаем проблему 'Unit gitlab.service not found' после обновления Ubuntu. Пошаговые инструкции по восстановлению systemd службы GitLab и альтернативные методы управления.

Вопрос

Почему после обновления Ubuntu не находит сервис gitlab?

После обновления системы (apt update & apt upgrade) при попытке перезапустить сервис gitlab командой service gitlab restart терминал выдает ошибку “Unit gitlab.service not found.”. При этом сам GitLab работает нормально. Как решить эту проблему?

НейроАгент

После обновления системы на Ubuntu GitLab продолжает работать, но systemd не может найти файл сервиса gitlab.service, так как во время обновления могла быть удалена или повреждена конфигурация службы, установленная пакетом GitLab.

Содержание


Основные причины проблемы

Ошибка “Unit gitlab.service not found” возникает по нескольким основным причинам:

  1. Потеря файла службы: Во время обновления системы (apt upgrade) может быть удалён или повреждён файл службы GitLab в /etc/systemd/system/

  2. Несоответствие версий: GitLab установлен из официального репозитория, но обновление Ubuntu может конфликтовать с версиями пакетов

  3. Неправильные права доступа: Файл службы может потерять необходимые права для выполнения

  4. Отсутствие пакета сервиса: Пакет, содержащий systemd-конфигурацию GitLab, мог быть удалён во время обновления


Проверка состояния GitLab

Перед тем как восстанавливать службу, необходимо проверить текущее состояние GitLab:

bash
# Проверить, работает ли GitLab
sudo gitlab-ctl status

# Проверить, слушает ли порты
sudo netstat -tlnp | grep -E '80|443|8080|9090'

# Проверить доступность через curl
curl http://localhost

Если GitLab работает, значит проблема заключается только в systemd-конфигурации, а не в самом приложении.


Восстановление systemd службы GitLab

Метод 1: Переустановка пакета GitLab

bash
# Обновить список пакетов
sudo apt update

# Переустановить GitLab, сохранив конфигурации
sudo apt reinstall gitlab-ce

Метод 2: Вручную создать файл службы

Если переустановка не помогла, создайте файл службы вручную:

bash
# Создать файл службы
sudo nano /etc/systemd/system/gitlab.service

# Содержимое файла:
[Unit]
Description=GitLab server
After=network.target

[Service]
Type=simple
User=git
Group=git
WorkingDirectory=/var/opt/gitlab
ExecStart=/opt/gitlab/embedded/bin/gitlab-ctl start
ExecReload=/opt/gitlab/embedded/bin/gitlab-ctl restart
TimeoutStartSec=0
KillMode=process
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

Метод 3: Использование официального скрипта конфигурации

bash
# Перенастроить GitLab
sudo gitlab-ctl reconfigure

# Перезагрузить systemd
sudo systemctl daemon-reload

# Проверить наличие службы
systemctl status gitlab.service

Метод 4: Проверка и восстановление путей

bash
# Проверить, существует ли файл службы в стандартных местах
find / -name "*gitlab*" -path "*/systemd/*" 2>/dev/null

# Проверить, существует ли исполняемый файл
ls -la /opt/gitlab/embedded/bin/gitlab-ctl

# Если файлы на месте, но служба не видна
sudo systemctl daemon-reload

Альтернативные методы перезапуска

Если systemd служба по-прежнему не работает, используйте альтернативные методы управления GitLab:

Использование GitLab Omnibus

bash
# Перезапуск через GitLab Omnibus
sudo gitlab-ctl restart

# Остановка и запуск
sudo gitlab-ctl stop
sudo gitlab-ctl start

# Проверка статуса
sudo gitlab-ctl status

Прямое управление процессами

bash
# Найти процессы GitLab
ps aux | grep gitlab

# Убить и перезапустить процессы
sudo pkill -f gitlab
sudo gitlab-ctl restart

Предотвращение подобных проблем в будущем

Регулярное обслуживание

bash
# Перед обновлением системы всегда делайте бэкап
sudo gitlab-backup create

# Обновляйте GitLab отдельно от системы
sudo apt update
sudo apt install gitlab-ce

# Проверяйте целостность службы после обновлений
sudo gitlab-ctl status
systemctl is-active gitlab.service

Мониторинг состояния

Добавьте проверку в cron:

bash
# Редактировать crontab
sudo crontab -e

# Добавить проверку
*/5 * * * * /usr/bin/systemctl is-active --quiet gitlab.service || /usr/bin/gitlab-ctl restart

Заключение

Проблема с отсутствием сервиса gitlab.service после обновления Ubuntu обычно решается несколькими способами:

  1. Переустановка GitLab с сохранением конфигураций быстро восстанавливает systemd-файл службы
  2. Вручное создание файла службы гарантирует его наличие в правильном месте
  3. Использование GitLab Omnibus предоставляет альтернативные методы управления, не зависящие от systemd

Для предотвращения подобных проблем в будущем:

  • Всегда делайте бэкап GitLab перед обновлениями
  • Обновляйте GitLab отдельно от системных пакетов
  • Регулярно проверяйте статус службы после обновлений
  • Настройте мониторинг для автоматического восстановления службы

Если GitLab продолжает работать, но systemd не видит службу, можно безопасно использовать прямое управление через gitlab-ctl до полного восстановления systemd-конфигурации.

Источники

  1. Upgrading to GitLab 15.0 CE from GitLab 14.9.3 - DEV Community
  2. How To Install GitLab On Ubuntu - Easy Way - Itslinuxguide.com
  3. Upgrade Ubuntu LTS release on EC2 - Ubuntu on AWS documentation