Назад | Перейти на главную страницу

Ошибка Gitlab 502 на сервере plesk

На VPS, работающем на CentOS 6.8 с Plesk 12.0.18, я установил Gitlab Omnibus 8.12.7 - после небольшой настройки он отлично работал с Plesk и Git (я смог получить доступ к plesk и управляемым им веб-сайтам, а также нажать / потянуть за git сервер). Мне просто нужно было настроить Gitlab, чтобы он не работал со встроенным nginx.

Проблема в том, что я не могу получить доступ к Gitlab, я получаю страницу ошибки 502 от Gitlab.

Вот соответствующие части config.rb файл:

external_url 'https://git.mydomain.fr'

gitlab_workhorse['enable'] = true
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_umask'] = 000
gitlab_workhorse['listen_addr'] = "localhost:8181"
gitlab_workhorse['auth_backend'] = "http://localhost:8081"

unicorn['port'] = 8081

web_server['external_users'] = ['vps_admin']

nginx['enable'] = false
nginx['redirect_http_to_https'] = true

gitlab_pages['enable'] = false

gitlab_rails['git_timeout'] = 600
nginx['keepalive_timeout'] = 300
unicorn['worker_timeout'] = 300

Строки конфигурации, которые не цитируются, просто комментируются.

С этими настройками (и после запуска gitlab-ctl reconfigure, перезапуск сервера) Я вижу, что Unicorn / Workhorse / git работает с правильным номером порта, и сообщения об ошибке не появляется (gitlab-ctl tail не выявляет ошибок).

Я создал git.mydomain.fr vhost в Plesk и установите следующую конфигурацию в настройках nginx:

location /uploads/ {
    gzip off;

    proxy_read_timeout      300;
    proxy_connect_timeout   300;
    proxy_redirect          off;

    proxy_set_header    Host                $http_host;
    proxy_set_header    X-Real-IP           $remote_addr;
    proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto   $scheme;
    proxy_set_header    X-Frame-Options     SAMEORIGIN;

    proxy_pass http://gitlab;
}

location @gitlab {
    gzip off;

    proxy_read_timeout      300;
    proxy_connect_timeout   300;
    proxy_redirect          off;

    proxy_set_header    Host                $http_host;
    proxy_set_header    X-Real-IP           $remote_addr;
    proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto   $scheme;
    proxy_set_header    X-Frame-Options     SAMEORIGIN;

    proxy_pass http://gitlab;
}

location ~ ^/[\w\.-]+/[\w\.-]+/gitlab-lfs/objects {
    client_max_body_size 0;
    error_page 418 = @gitlab-workhorse;
    return 418;
}

location ~ ^/[\w\.-]+/[\w\.-]+/(info/refs|git-upload-pack|git-receive-pack)$ {
    client_max_body_size 0;
    error_page 418 = @gitlab-workhorse;
    return 418;
}

location ~ ^/[\w\.-]+/[\w\.-]+/repository/archive {
    client_max_body_size 0;
    error_page 418 = @gitlab-workhorse;
    return 418;
}

location ~ ^/api/v3/projects/.*/repository/archive {
    client_max_body_size 0;
    error_page 418 = @gitlab-workhorse;
    return 418;
}

location ~ ^/[\w\.-]+/[\w\.-]+/builds/download {
    client_max_body_size 0;
    error_page 418 = @gitlab-workhorse;
    return 418;
}

location ~ /ci/api/v1/builds/[0-9]+/artifacts {
    client_max_body_size 0;
    error_page 418 = @gitlab-workhorse;
    return 418;
}

location @gitlab-workhorse {
    client_max_body_size 0;

    proxy_read_timeout      300;
    proxy_connect_timeout   300;
    proxy_redirect          off;

    proxy_buffering off;
    proxy_set_header    Host                $http_host;
    proxy_set_header    X-Real-IP           $remote_addr;
    proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto   $scheme;

    proxy_pass http://gitlab-workhorse;
}

location ~ ^/(assets)/ {
    root /opt/gitlab/embedded/service/gitlab-rails/public;
    gzip_static on; # to serve pre-gzipped version
    expires max;
    add_header Cache-Control public;
}

location ~ / {
    root /opt/gitlab/embedded/service/gitlab-rails/public;
    try_files $uri $uri/index.html $uri.html @gitlab;
}

error_page 500 /500.html;
error_page 502 /502.html;
error_page 503 /503.html;
error_page 404 /404.html;
error_page 422 /422.html;

И со следующими настройками Apache:

ServerAdmin git@git.mydomain.fr
ServerName git.mydomain.fr
DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public
<Directory /opt/gitlab/embedded/service/gitlab-rails/public>
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
    Options -MultiViews
</Directory>

ErrorLog logs/ssl_git_error.log
LogLevel debug
CustomLog logs/ssl_git_access.log combined

И /etc/nginx/conf.d/gitlab.conf содержание:

upstream gitlab {
  server unix:/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket fail_timeout=0;
}

upstream gitlab-workhorse {
    server localhost:8181;
    #server unix:/var/opt/gitlab/gitlab-rails/sockets/gitlab-workhorse.socket fail_timeout=0;
}

У кого-нибудь есть идея, что здесь может быть не так? ОЗУ в порядке (у меня 3 ГБ), и в журналах ошибок не отображается ... Просто ошибка 502 при доступе к gitlab.

У меня была точно такая же проблема. Это потому, что у веб-пользователя нет доступа к gitlab-сокету. Когда вы отключаете встроенный nginx, внешние веб-пользователи должны быть добавлены в группу gitlab-www. Делается это так:

Шаг 1. Отредактируйте файл /etc/gitlab/gitlab.rb. Найдите строку (раскомментируйте при комментарии):

web_server['external_users'] = []

Я добавил пользователя, который также связан в plesk с моим доменом gitlab (xxxx), а также с nginx, apache и git. Итак, мой выглядит так (где xxxx - пользователь этого домена):

web_server['external_users'] = ['xxxx', 'nginx', 'git', 'apache']

Шаг 2: перенастройте

gitlab-ctl reconfigure