Configurando GitLab para Usar um Servidor Nginx Existente

O GitLab vem com seu próprio Nginx, mas é possível utiilzar uma instalação existente do Nginx seguindo estes procedimentos:

Nota: A versão 8.0 alterou o local do arquivo socket, conforme mencionado nas atualizações.

  • Adicionando configuração de host virtual ao Nginx
# Endereço do arquivo socket do GitLab
upstream gitlab_work {
  # Localização na versão 7.x
  # server unix:/var/opt/gitlab/gitlab-rails/tmp/sockets/gitlab.socket;
  # Localização na versão 8.0
  server unix://var/opt/gitlab/gitlab-rails/sockets/gitlab.socket;
}

server {
  listen *:80;

  server_name gitlab.seudominio.com;   # Altere para seu domínio

  server_tokens off;     # não exibe a versão, prática recomendada de segurança
  root /opt/gitlab/embedded/service/gitlab-rails/public;

  # Aumente este valor para permitir uploads de anexos grandes
  # Ou para aceitar objetos git grandes via http
  client_max_body_size 250m;

  # logs individuais do nginx para este host virtual do gitlab
  access_log  /var/log/gitlab/nginx/gitlab_access.log;
  error_log   /var/log/gitlab/nginx/gitlab_error.log;

  location / {
    # serve arquivos estáticos da pasta raiz definida
    # @gitlab_work é uma localização nomeada para fallback upstream, veja abaixo
    try_files $uri $uri/index.html $uri.html @gitlab_work;
  }

  # se um arquivo não encontrado na pasta raiz é solicitado,
  # então o proxy passa a requisição para o upstream (gitlab unicorn)
  location @gitlab_work {
    # Se você usa https, desative a compressão gzip 
    # para se proteger contra ataque BREACH

    proxy_read_timeout 300; # Algumas requisições levam mais de 30 segundos.
    proxy_connect_timeout 300; # Algumas requisições levam mais de 30 segundos.
    proxy_redirect     off;

    proxy_set_header   X-Forwarded-Proto $scheme;
    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-Frame-Options   SAMEORIGIN;

    proxy_pass http://gitlab_work;
  }

  # Ativa compressão gzip conforme guia do rails: http://guides.rubyonrails.org/asset_pipeline.html#gzip-compression
  # AVISO: Se você usa urls relativas, remova o bloco abaixo
  # Veja config/application.rb em "Relative url support" para a lista de
  # outros arquivos que precisam ser alterados para suporte a url relativa
  location ~ ^/(assets)/  {
    root /opt/gitlab/embedded/service/gitlab-rails/public;
    # gzip_static on; # para servir versão pré-comprimida
    expires max;
    add_header Cache-Control public;
  }

  error_page 502 /502.html;
}


  • Desabilitando o Nginx embutido
vim /etc/gitlab/gitlab.rb


Adiicone

nginx['enable'] = false


  • Reinicie Nginx e GitLab
sudo /usr/local/nginx/sbin/nginx -s reload
sudo gitlab-ctl reconfigure


  • Configuração de permissões

Acesso resultará em erro 502. Originalmente, o usuário nginx não consegue acessar o arquivo socket do usuário gitlab. A configuração de permissões varia conforme o ambiente. Uma abordagem simples:

sudo chmod -R o+x /var/opt/gitlab/gitlab-rails<br></br><br></br>

1. Copie o arquivo de configuração do nginx embutido gitlab-http.conf para a nova configuração do nginx
2. Modifique /etc/gitlab/gitlab.rb, desabilitando nginx: nginx['enable'] = false
3. Edite /etc/gitlab/gitlab.rb

 external_url 'http://git.seudominio.com' # configuração de domínio
 unicorn['listen'] = '0.0.0.0'
 unicorn['port'] = 8081
 git_data_dirs({ "default" => { "path" => "/data/git-data" } })

# Permitir que o usuário www do novo nginx acesse o gitlab, importante
web_server['external_users'] = ['www'] 

# Execute gitlab-ctl reconfigure, depois gitlab-ctl restart

# Notas pessoais, desorganizadas, ignore

GitLab problemas
./embedded/service/gitlab-shell/lib/gitlab_config.rb


./embedded/lib/ruby/gems/2.3.0/gems/omniauth-gitlab-1.0.2/lib/omniauth/strategies/gitlab.rb
./embedded/cookbooks/cache/cookbooks/gitlab/libraries/gitlab.rb
./embedded/cookbooks/gitlab/libraries/gitlab.rb
./embedded/service/gitlab-rails/lib/gitlab.rb


1. [Porta inacessível]
vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
listen "0.0.0.0:8081", :tcp_nopush => true
Nunca use 127.0.0.1

firewall-cmd --permanent --add-port=8081/tcp
firewall-cmd --reload

1. [Estilos quebrados] gitlab error compiling css asset 
vim ./embedded/service/gitlab-rails/config/gitlab.yml
webhook_timeout: 120

Migração de dados do gitlab
http://blog.csdn.net/hj7jay/article/details/54311010

vim /etc/gitlab/gitlab.rb

external_url 'http://git.seudominio.com' #configuração de domínio
 unicorn['listen'] = '0.0.0.0'
 unicorn['port'] = 8081
 git_data_dirs({ "default" => { "path" => "/data/git-data" } })
[Cuidado com o nome do diretório na migração]
 
web_server['external_users'] = ['www']

Locais de configuração:

 [
/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml     
 /etc/gitlab/gitlab.rb
/opt/gitlab/embedded/service/gitlab-shell/config.yml
]

Configuração de domínio
vim /opt/gitlab/embedded/service/gitlab-shell/config.yml
gitlab_url: "http://0.0.0.0:8081"



####
Configure o domínio do GitLab, caso contrário o endereço para git clone estará incorreto
vim  /etc/gitlab/gitlab.rb

Edite: external_url 'seu endereço'

Exemplo: external_url 'http://192.168.1.100'

Após editar, execute sudo gitlab-ctl reconfigure para aplicar as mudanças

####

#### Configuração GitLab http://www.cnblogs.com/softidea/p/5229412.html ####


Conflito de configuração nginx
https://docs.gitlab.com/omnibus/settings/nginx.html 
https://gitlab.com/gitlab-org/gitlab-workhorse/issues/26

$$
2017/04/25 00:18:37 [crit] 6297#0: *32 connect() to unix:/var/opt/gitlab/gitlab-workhorse/socket failed (13: Permission denied) while connecting to upstream, client: 221.216.146.9, server: test.seudominio.com, request: "GET / HTTP/1.1", upstream: "http://unix:/var/opt/gitlab/gitlab-workhorse/socket:/", host: "test.seudominio.com"
$$
$$sudo usermod -aG gitlab-www www$$

 

Tags: gitlab nginx servidor-web configuracao proxy-reverso

Publicado em 7-17 10:06