Ошибки ниже встречаются при установке пакета для ОС Linux и первичной настройке инстанса. Если нужного случая здесь нет, соберите вывод команд из раздела «Общая диагностика» и обратитесь к вендору.

Приложение не запускается: нет библиотеки libcrypt.so.1

Где проявляется. РЕД ОС, вывод установки пакета и первичной настройки:

libcrypt.so.1: cannot open shared object file

Причина. В минимальной поставке РЕД ОС нет библиотеки libcrypt.so.1.

Решение. Установите пакет с библиотекой и повторите настройку:

sudo dnf install -y libxcrypt-compat
sudo gitlab-ctl reconfigure

Настройка завершается ошибкой SELinux

Где проявляется. РЕД ОС, выполнение gitlab-ctl reconfigure, ресурс bash[Set proper security context on ssh files for selinux]:

ValueError: Type gitlab_shell_t is invalid
semanage: command not found

Причина. На сервере нет утилит SELinux из пакета policycoreutils-python-utils либо модуль политики не загрузился при первичной настройке.

Решение. Установите утилиты, повторите настройку и проверьте, что модуль политики загружен:

sudo dnf install -y policycoreutils-python-utils
sudo gitlab-ctl reconfigure
sudo semodule -l | grep -i gitlab

Имя инстанса недоступно: curl возвращает 000

Причина. Имя <HOSTNAME> не разрешается в IP-адрес на сервере или на машине, с которой открывают веб-интерфейс, либо порт 80 или 443 недоступен: закрыт файрволом или не запущен nginx.

Решение.

  1. Проверьте имя командой getent hosts <HOSTNAME>. Если имени нет, создайте DNS-запись A или AAAA на IP-адрес машины, а для стенда без DNS добавьте строку в /etc/hosts. Имя должно совпадать с external_url и с полями CN и SAN сертификата.

  2. Если имя разрешается в ожидаемый IP-адрес, проверьте на сервере состояние nginx и занятые порты:

    sudo gitlab-ctl status nginx
    sudo ss -tlnp | grep -E ':(80|443)\b'
  3. Проверьте вход по HTTP с рабочей станции:

    curl -sS -o /dev/null -w "HTTP %{http_code}\n" \
      http://<HOSTNAME>/

    Любой HTTP-код (после включения TLS обычно 301 или 302) означает, что nginx доступен. Код 000 означает, что соединение не установлено. Если nginx запущен, а порт закрыт снаружи, откройте его по разделу «Сетевой доступ (файрвол)».

Веб-интерфейс отвечает 502 после настройки или перезапуска

Причина. Приложение ещё запускается: первые одну-две минуты после reconfigure или restart код 502 ожидаем.

Решение. Подождите и проверьте состояние сервисов командой sudo gitlab-ctl status. Если 502 держится дольше нескольких минут, читайте лог командой sudo gitlab-ctl tail puma: частая причина — нехватка памяти, порядок настройки описан в разделе «Ресурсы».

Настройка завершается ошибкой Let’s Encrypt

Где проявляется. Выполнение gitlab-ctl reconfigure после того, как в external_url задан адрес https://, а файлов сертификата на диске нет.

Причина. Без сертификата на диске включается получение сертификата через Let’s Encrypt, что в закрытом контуре невозможно.

Решение. Разместите сертификат и задайте letsencrypt['enable'] = false, как описано в разделе «TLS», затем выполните sudo gitlab-ctl reconfigure.

Чтение ошибки в выводе reconfigure

Где проявляется. Вывод команды gitlab-ctl reconfigure, завершившейся с ошибкой.

Решение. В конце вывода найдите блок с именем ресурса и причиной:

Error executing action ... on resource '...'

Полный лог запуска сохраняется в каталоге /var/log/gitlab/reconfigure/.

Общая диагностика

Команды применимы к любой из перечисленных ошибок:

# Состояние всех сервисов.
sudo gitlab-ctl status
# Живой лог сервиса, например puma или nginx.
sudo gitlab-ctl tail <SERVICE>
# Самопроверка инстанса.
sudo gitlab-rake gitlab:check SANITIZE=true
# Каталоги логов по сервисам.
ls /var/log/gitlab/