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$$