2012-11-05 12 views
6

Konfiguracja nginx dla gitlab jest:Jak skonfigurować nginx służyć gitlabhq na Suburi

# GITLAB 
# Maintainer: @randx 
# App Version: 3.0 

upstream gitlab { 
    server unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket; 
} 

server { 
    listen YOUR_SERVER_IP:80;   # e.g., listen 192.168.1.1:80; 
    server_name YOUR_SERVER_FQDN;  # e.g., server_name source.example.com; 
    root /home/gitlab/gitlab/public; 

    # individual nginx logs for this gitlab vhost 
    access_log /var/log/nginx/gitlab_access.log; 
    error_log /var/log/nginx/gitlab_error.log; 

    location/{ 
    # serve static files from defined root folder;. 
    # @gitlab is a named location for the upstream fallback, see below 
    try_files $uri $uri/index.html $uri.html @gitlab; 
    } 

    # if a file, which is not found in the root folder is requested, 
    # then the proxy pass the request to the upsteam (gitlab unicorn) 
    location @gitlab { 
    proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 
    proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 
    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_pass http://gitlab; 
    } 
} 

Co należy zmienić, aby służyć gitlab jako surURI, www.mysuperserver.com/gitlab

ja Próbowaliśmy wielu różnych rzeczy, ale nic nie zadziałało dzięki

Odpowiedz

2

Od wersji Gitlab 5.3 można go skonfigurować tak, aby działał podrzędnie po wyjęciu z pudełka, korzystając z oficjalnego dokumentu instalacyjnego.

Odkomentuj linia 8 config/puma.rb: ENV [ 'RAILS_RELATIVE_URL_ROOT'] = "/"

podobny do wiersza 23 w konfiguracji/gitlab.yml: relative_url_root:/

Nie miałem w ogóle muszę zmodyfikować moją konfigurację nginx, żeby działała.

1

Rozwiązałeś już ten problem?

Jeśli nie, spróbuj zaktualizować dyrektywę location / do:

location /gitlab { 
    # serve static files from defined root folder;. 
    root /home/gitlab/gitlab/public; 
    # @gitlab is a named location for the upstream fallback, see below 
    try_files $uri $uri/index.html $uri.html @gitlab; 
} 

Jeśli to nie zadziała, proszę wkleić kilka ostatnich wierszy /var/log/nginx/gitlab_error.log.

+0

mam podobny problem do pierwotnego pytania, a ja spróbowałem twojego podejścia do rozwiązania tego problemu. Mój dziennik błędów nie zawiera żadnych nowych wpisów i wydaje się, że sam ten problem nie rozwiązuje problemu. Co próbuję zrobić, to zastosować swoją sugestię do czegoś takiego: http://unicorn.bogomips.org/examples/nginx.conf. –

-1

Ta konfiguracja działa

# GITLAB 
# Maintainer: @randx 
# App Version: 3.0 

upstream gitlab { 
    server unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket; 
} 

server { 
    listen 80;   # e.g., listen 192.168.1.1:80; 37.59.125.28: 
    server_name gitlab.<YOUR_DOMAIN>.com;  # e.g., server_name source.example.com; 
    root /home/gitlab/gitlab/public; 

    # individual nginx logs for this gitlab vhost 
    access_log /var/log/nginx/gitlab_access.log; 
    error_log /var/log/nginx/gitlab_error.log; 

    location/{ 
    # serve static files from defined root folder;. 
    # @gitlab is a named location for the upstream fallback, see below 
    try_files $uri $uri/index.html $uri.html @gitlab; 
    } 

    # if a file, which is not found in the root folder is requested, 
    # then the proxy pass the request to the upsteam (gitlab unicorn) 
    location @gitlab { 
    proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 
    proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 
    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_pass http://gitlab; 
    } 
} 

i miałem złe symboliczne powiązanie nginx dostępnych konfiguracji i włączoną konfiguracją.

+0

Trudno mi zauważyć różnicę między twoją konfiguracją a wersją w twoim pytaniu (z wyjątkiem nazwy serwera). Gdzie jest część, która pozwala na 'www.mysuperserver.com/gitlab'? – VonC

+0

Powyższa konfiguracja wydaje się być dla subdomeny. Moja odpowiedź, mimo że nie została sprawdzona, powinna zadziałać tak, jak zostało zadane, "www.mysuperserver.com/gitlab". Jeśli ktokolwiek spróbuje, dobrze będzie uzyskać potwierdzenie. – myanimal

3

Udało mi się sprawić, by działał pod adresem URL subdiru.

  • postępować zgodnie z instrukcją w kodzie źródłowym, jak w /home/git/gitlab/config/gitlab.yml
 
    # Uncomment and customize the last line to run in a non-root path 
    # WARNING: We recommend creating a FQDN to host GitLab in a root path instead of this. 
    # Note that four settings need to be changed for this to work. 
    # 1) In your application.rb file: config.relative_url_root = "/gitlab" 
    # 2) In your gitlab.yml file: relative_url_root: /gitlab 
    # 3) In your unicorn.rb: ENV['RAILS_RELATIVE_URL_ROOT'] = "/gitlab" 
    # 4) In ../gitlab-shell/config.yml: gitlab_url: "http://127.0.0.1/gitlab" 
    # To update the path, run: sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production 
    # 
    relative_url_root: /gitlab 
  • zmienić config nginx służyć Suburi, plz patrz moim przykładzie poniżej:

Kluczowym punktem jest root w kontekście server i alias pod location. Aby uzyskać więcej informacji, Plz odsyła do: nginx pitfalls, nginx root note.

# default.conf for nginx 
upstream gitlab { 
    server unix:/home/git/gitlab/tmp/sockets/gitlab.socket; 
} 
server { 
    listen  80; 
    server_name $YOUR_DOMAIN; 
    # other settings, especially root settings, like below 
    # root /usr/local/nginx/html; 
    location /gitlab { 
     # serve static files from defined root folder; 
     alias /home/git/gitlab/public; 

     # individual nginx logs for this gitlab vhost 
     access_log /var/log/nginx/gitlab_access.log; 
     error_log /var/log/nginx/gitlab_error.log; 

     # @gitlab is a named location for the upstream fallback, see below 
     try_files $uri $uri/index.html $uri.html @gitlab; 
    } 

    location @gitlab { 
     proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 
     proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 
     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_pass http://gitlab; 
    } 
    # other locations' settings... 
} 
+1

+1. jakiej wersji GitLab użyłeś? Czy przetestowałeś go za pomocą adresu URL ssh push/pull? adres URL https? – VonC

+0

gałąź '6-4-stable'. nikt nie narzeka na push/pull. nie skonfiguruj jeszcze adresu URL https. – Ace

2

Dla starych wersjach, na przykład, gitlab 7.4.5, nie ma gitlab-git-http-serwer (gitlab-tytan pracy). Ale są pewne rozwiązania dla gitlab 7.4.5 do używania suburi w dokumencie.

config/application.rb

# Relative url support 
# Uncomment and customize the last line to run in a non-root path 
# WARNING: We recommend creating a FQDN to host GitLab in a root path instead of this. 
# Note that following settings need to be changed for this to work. 
# 1) In your application.rb file: config.relative_url_root = "/gitlab" 
# 2) In your gitlab.yml file: relative_url_root: /gitlab 
# 3) In your unicorn.rb: ENV['RAILS_RELATIVE_URL_ROOT'] = "/gitlab" 
# 4) In ../gitlab-shell/config.yml: gitlab_url: "http://127.0.0.1/gitlab" 
# 5) In lib/support/nginx/gitlab : do not use asset gzipping, remove block starting with "location ~ ^/(assets)/" 
# 
# To update the path, run: sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production 
# 
# config.relative_url_root = "/gitlab" 

config/gitlab.yml

# WARNING: See config/application.rb under "Relative url support" for the list of 
# other files that need to be changed for relative url support 
# relative_url_root: /gitlab 

Konfiguracja gitlab 7.4.5 z innymi stronami internetowymi używającymi tego samego portu i tej samej nazwy domeny w konfiguracji nginx lub pliku konfiguracyjnym Apache nadal stanowi wyzwanie. Nie dostałem tego. Mogę uzyskać dostęp do gitlab jako www.mydomain.com/gitlab, ale nie dostałem mojej innej strony w innym katalogu głównym z www.mydomain.com. Powinien zostać naprawiony przez configure nginx lub apache. Mam nadzieję, że ludzie, którzy znają się na nginxie lub apache, mogą dać rozwiązanie.

Inne odniesienia. Support installing GitLab in a relative URL path or sub directory #1950

EDIT
To działa teraz.

Stackoverflow sugeruje użycie www.example.com jako przykładu tutaj.

www.example.com/gitlab dostęp do gitlab.

www.example.com dostęp do innej strony, powiedzmy, mój blog.

Kroki:

  1. plik config/environment.rb: config.relative_url_root = "/ gitlab"
  2. config/gitlab.yml file: relative_url_root:/gitlab
  3. config/unicorn.rb: ENV [ 'RAILS_RELATIVE_URL_ROOT'] = "/ gitlab"
  4. ../gitlab-shell/config.yml: gitlab_url: "http://www.example.com/gitlab"
  5. kopii lib/obsługa/nginx/gitlab do gitlab.conf do nginx nie używać składnika gzipowanie, usuń gwiazdę blokową ie z "location ~^/(assets)/"
  6. biegu sudo -u -H git wiązki exec zasobów natarcia: prekompilacji RAILS_ENV = produkcja

adresami:

  1. plik konfiguracyjny/gitlab.yml Gospodarz: example.com Port: 80
  2. config/unicorn.rb: słuchać "127.0.0.1:9095"
  3. ../gitlab-shell/config.yml: gitlab_url: http://www.example.com/gitlab

gitlab da git dwa sposoby dostępu:

  1. [email protected]: sample-project.git
  2. http://example.com/gitlab/sample-project.git

Nie używam protokołu HTTPS.

Jeśli masz:

Można skonfigurować config/gitlab.yml jak host: example.com/gitlab. Po prostu usuń /gitlab.

nginx plik konfiguracyjny:

################################### 
##   configuration   ## 
################################### 
## 

upstream gitlab { 
    server unix:/home/git/gitlab/tmp/sockets/gitlab.socket fail_timeout=0; 
} 

## Normal HTTP host 
server { 
    #listen *:80 default_server; 
    listen *:80 default_server; 
    server_name www.example.com; ## Replace this with something like gitlab.example.com 
    server_tokens off; ## Don't show the nginx version number, a security best practice 
    #root /home/git/gitlab/public; 
    root html; 
    location /{ 
    #root html; 
    index index.html index.htm; 
    } 
    ## Increase this if you want to upload large attachments 
    ## Or if you want to accept large git objects over http 
    client_max_body_size 20m; 

    ## Individual nginx logs for this GitLab vhost 
    access_log logs/example.gitlab_access.log; 
    error_log logs/example.gitlab_error.log; 

    location /gitlab { 
    alias /home/git/gitlab/public; 

    ## Serve static files from defined root folder. 
    ## @gitlab is a named location for the upstream fallback, see below. 
    try_files $uri $uri/index.html $uri.html @gitlab; 
    } 

    ## If a file, which is not found in the root folder is requested, 
    ## then the proxy passes the request to the upsteam (gitlab unicorn). 
    location @gitlab { 
    ## If you use HTTPS make sure you disable gzip compression 
    ## to be safe against BREACH attack. 
    # gzip off; 

    ## https://github.com/gitlabhq/gitlabhq/issues/694 
    ## Some requests take more than 30 seconds. 
    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; 
    } 

    ## Enable gzip compression as per rails guide: 
    ## http://guides.rubyonrails.org/asset_pipeline.html#gzip-compression 
    ## WARNING: If you are using relative urls remove the block below 
    ## See config/application.rb under "Relative url support" for the list of 
    ## other files that need to be changed for relative url support 
    #location ~ ^/(assets)/ { 
    # root /home/git/gitlab/public; 
    # #gzip_static on; # to serve pre-gzipped version 
    # expires max; 
    # add_header Cache-Control public; 
    #} 

    error_page 502 /502.html; 
} 

Apache (2.2.9) plik konfiguracyjny: Wniosek gitlab.conf dla gitlab 6.0.6 i gitlab-8.0-apache2.2.conf dla gitlab 8.0.0 na Apache 2,2

# Module dependencies 
# mod_rewrite 
# mod_proxy 
# mod_proxy_http 
<VirtualHost *:80> 


    ServerAdmin [email protected] 
    DocumentRoot "/data/webapp/www/wordpress" 

    ServerName www.example.com 
    ServerAlias example.com 

    #ErrorLog "logs/wordpress-error_log" 
    #CustomLog "logs/wordpress-access_log" common 

    #SetEnv ZF2_PATH "/data/webapp/www/ZendFramework-2.3.3/library" 
    SetEnv APPLICATION_ENV "development" 
    <Directory /data/webapp/www/wordpress> 
    DirectoryIndex index.php 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
    </Directory> 

    #ServerName www.example.com 
    ServerSignature Off 

    ProxyPreserveHost On 

    # Ensure that encoded slashes are not decoded but left in their encoded state. 
    # http://doc.gitlab.com/ce/api/projects.html#get-single-project 
    AllowEncodedSlashes NoDecode 

    <Location /gitlab> 
    Order deny,allow 
    Allow from all 

    ProxyPassReverse http://127.0.0.1:9095 
    ProxyPassReverse http://www.example.com// 

    RewriteEngine on 
    #RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f 
    RewriteRule .* http://127.0.0.1:9095%{REQUEST_URI} [P,QSA,NE] 
    </Location> 

    #apache equivalent of nginx try files 
    # http://serverfault.com/questions/290784/what-is-apaches-equivalent-of-nginxs-try-files 
    # http://stackoverflow.com/questions/10954516/apache2-proxypass-for-rails-app-gitlab 
    # RewriteEngine on 
    # RewriteCond /code/gitlab/{REQUEST_FILENAME} !-f 
    # RewriteRule .* http://127.0.0.1:9095%{REQUEST_URI} [P,QSA,NE] 

    # needed for downloading attachments 
    #DocumentRoot /home/git/gitlab/public 
    Alias /gitlab /home/git/gitlab/public 
    #Set up apache error documents, if back end goes down (i.e. 503 error) then a maintenance/deploy page is thrown up. 
    ErrorDocument 404 /404.html 
    ErrorDocument 422 /422.html 
    ErrorDocument 500 /500.html 
    ErrorDocument 503 /deploy.html 

    LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded 
    ErrorLog logs/example.com_error.log 
    CustomLog logs/example.com_forwarded.log common_forwarded 
    CustomLog logs/example.com_access.log combined env=!dontlog 
    CustomLog logs/example.com.log combined 

</VirtualHost>