wake-up-neo.net

GitLab 7.2.1 mit Apache Server anstelle von Nginx

Ich habe GitLab 7.2.1 mit dem .deb-Paket von GitLab.org für Debian 7 auf einem virtuellen Server installiert, auf den ich root-Zugriff habe .. __ Auf diesem virtuellen Server habe ich bereits Apache installiert, Version 2.2.22, und ich lege ' Ich möchte Ngnix für GitLab verwenden.

Jetzt habe ich keine Ahnung, wo sich die öffentlichen Ordner von GitLab befinden oder was ich tun muss oder worauf ich achten muss. 

Meine Frage ist also: Wie muss ich meinen vhost für Apache konfigurieren oder was muss ich tun, damit ich auf meinem Apache-Webserver eine Subdomain wie "gitlab.example.com" verwenden kann?

16
Rinma

Im Hinblick auf zwei Dinge:

  1. Unicorn hört auf 8080 (Sie können dies mit Sudo netstat -pant | grep Unicorn überprüfen)
  2. Ihr Dokumentstammverzeichnis ist /opt/gitlab/embedded/service/gitlab-Rails/public

Sie können einen neuen vhost für gitlab in Apache mit der folgenden Konfiguration erstellen:

<VirtualHost *:80>
  ServerName gitlab.example.com
  ServerSignature Off

  ProxyPreserveHost On

  <Location />
    Order deny,allow
    Allow from all

    ProxyPassReverse http://127.0.0.1:8080
    ProxyPassReverse http://gitlab.example.com/
  </Location>

  RewriteEngine on
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} [P,QSA]

  # needed for downloading attachments
  DocumentRoot /opt/gitlab/embedded/service/gitlab-Rails/public

</VirtualHost>
20
pincoded

Ich folgte diesem Artikel http://eserdeniz.fr/articles/view/4/installer-gitlab-sous-debian-7-avec-nginx-et-mysql und es funktionierte, aber ich brauchte Apache statt Nginx.

Nachdem ich viele Probleme mit der Konfiguration von Apache2 mit gitlab-ce 7.9.0.rc3 hatte, habe ich in der Apache-Dokumentation nach der ProxyPass- und ProxyPassReverse-Direktive nachgesehen.

Ich habe meine Probleme mit diesem vhost gelöst:

    <VirtualHost *:80>
            ServerName gitlab.me

            # those options below are recommanded by Apache, dealing with the simple Proxy we need for gitlab
            ProxyRequests Off
            ProxyPreserveHost On
            AllowEncodedSlashes NoDecode

            # here we don't want to proxify the requests for the existing assets in gitlab's public directory
            ProxyPassMatch ^(/[^/]+\.(html|png|ico|css|txt))$ !
            ProxyPass /assets !

            # here we "redirect" the requests for http://gitlab.me/ to http://127.0.0.1:8080/
            ProxyPass / http://127.0.0.1:8080/

            # here we "rewrite" the redirections form Unicorn for http://127.0.0.1:8080/ into http://gitlab.me/
            ProxyPassReverse / http://127.0.0.1:8080/

            # And of course the DocumentRoot to handle the assets requests
            DocumentRoot /home/git/gitlab/public/

            # In the last versions of Apache, there is a deny,allow default order so we put those two sections to prevent 'client denied by server configuration' 403 error

            <Directory /home/git/gitlab/public/>
                    # Apache 2.2
                    Order allow,deny
                    Allow from all

                    # Apache 2.4
                    Require all granted
            </Directory>

            <Location />
                    # Apache 2.2
                    Order allow,deny
                    Allow from all

                    # Apache 2.4
                    Require all granted
            </Location>
    </VirtualHost>

Jetzt brennt es schnell !!

Ich hoffe, das hilft!

10
shaft

Unter Debian GNU/Linux 8.4 (jessie) mit Omnibus 8.5.0 (apt-get):

GitLab-Konfiguration

# cat /etc/gitlab/gitlab.rb | grep -v '^$\|^\s*\#'
external_url 'http://gitlab.example.fr'
gitlab_workhorse['enable'] = true
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
web_server['external_users'] = ['www-data']
nginx['enable'] = false

Apache2-Konfiguration

# cat /etc/Apache2/sites-enabled/gitlab.conf  | grep -v '^$\|^\s*\#'
<VirtualHost *:80>
  ServerName gitlab.example.fr
  ServerSignature Off
  ProxyPreserveHost On
  AllowEncodedSlashes NoDecode
  <Location />
    Require all granted
    ProxyPassReverse http://127.0.0.1:8181
    ProxyPassReverse http://gitlab.example.fr/
  </Location>
  RewriteEngine on
  RewriteCond %{REQUEST_URI} ^/api/v3/.*
  RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
  RewriteCond %{REQUEST_URI} ^/uploads/.*
  RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA]
  DocumentRoot /opt/gitlab/embedded/service/gitlab-Rails/public
  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  /var/log/Apache2/gitlab_error.log
  CustomLog /var/log/Apache2/gitlab_forwarded.log common_forwarded
  CustomLog /var/log/Apache2/gitlab_access.log combined env=!dontlog
  CustomLog /var/log/Apache2/gitlab.log combined
</VirtualHost>

Netstat-Ausgabe

# netstat -pant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      11849/postgres
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      23736/config.ru
tcp        0      0 127.0.0.1:8181          0.0.0.0:*               LISTEN      26061/gitlab-workho

Quelle

https://gitlab.com/gitlab-org/gitlab-recipes/blob/master/web-server/Apache/gitlab-omnibus-Apache24.conf

http://doc.gitlab.com/omnibus/settings/nginx.html#using-a-non-bundled-web-server

3
themadmax

Wenn Sie ein HTTP-Git-Zugriffsproblem haben, schauen Sie sich diese Konfiguration an:

# cat /etc/gitlab/gitlab.rb | grep -v '^$\|^\s*\#'
external_url 'http://gitlab.example.fr'
web_server['external_users'] = ['www-data']
nginx['enable'] = false
ci_nginx['enable'] = false
gitlab_git_http_server['listen_network'] = "tcp"
gitlab_git_http_server['listen_addr'] = "localhost:8282"

und Apache2-Konfiguration:

# cat /etc/Apache2/sites-enabled/gitlab
<VirtualHost *:80>
        ServerName gitlab.example.fr
        ProxyRequests Off
        ServerSignature Off
        ProxyPreserveHost On
        AllowEncodedSlashes NoDecode
        ProxyPassMatch ^(/[^/]+\.(html|png|ico|css|txt))$ !
        ProxyPass /assets !
        ProxyPass / http://127.0.0.1:8080/
        ProxyPassReverse / http://127.0.0.1:8080/
        RewriteEngine on
        RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
        RewriteRule /[-\/\w\.]+\.git\/ http://127.0.0.1:8282%{REQUEST_URI} [P,QSA,L]
        DocumentRoot /opt/gitlab/embedded/service/gitlab-Rails/public
            <Directory /opt/gitlab/embedded/service/gitlab-Rails/public/>
                    Order allow,deny
                    Allow from all
            </Directory>
            <Location />
                    Order allow,deny
                    Allow from all
            </Location>
</VirtualHost>

Änderungen übernehmen:

# gitlab-ctl reconfigure
# service Apache2 reload

Von https://gitlab.com/gitlab-org/gitlab-ce/issues/2669#note_2176671

2
themadmax

Für Reisende mit GitLab 10.X.X werfen Sie einen Blick auf dieses Repo . Sie finden dort Apache2-Konfigurationsdateien sowie Anweisungen, damit GitLab nur mit deaktiviertem Apache2 und NGINX ausgeführt werden kann.

2
Flatron

Installation von der Quelle. Gitlab 7.4.5 

Unicorn hört 9095. Apache ist 2.2.9 und ich verwende kein https.

System information
System:         CentOS 6.7
Current User:   git
Using RVM:      no
Ruby Version:   2.1.2p95
Gem Version:    2.2.2
Bundler Version:1.11.2
Rake Version:   10.3.2
Sidekiq Version:2.17.0

GitLab information
Version:        7.4.5
Revision:       19d572e
Directory:      /home/git/gitlab
DB Adapter:     mysql2
URL:            http://gitlab.example.com
HTTP Clone URL: http://gitlab.example.com/some-project.git
SSH Clone URL:  [email protected]:some-project.git
Using LDAP:     no
Using Omniauth: no

GitLab Shell
Version:        2.0.1
Repositories:   /home/git/repositories/
Hooks:          /home/git/gitlab-Shell/hooks/
Git:            /usr/bin/git

Konfigurationsdatei ändern von Apache 2.2 funktioniert für mich.

Eine andere alte Konfigurationsdatei für gitlab 6.0 ist here , die auch für mich funktioniert.

#This configuration has been tested on GitLab 8.0.0
#Note this config assumes Unicorn is listening on default port 8080 and gitlab-git-http-server is listening on port 8181.
#To allow gitlab-git-http-server to listen on port 8181, edit or create /etc/default/gitlab and change or add the following:
#gitlab_git_http_server_options="-listenUmask 0 -listenNetwork tcp -listenAddr localhost:8181 -authBackend http://127.0.0.1:8080"

#Module dependencies
#  mod_rewrite
#  mod_proxy
#  mod_proxy_http
# HTTP Configuration
<VirtualHost *:80>
  ServerName gitlab.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

    # 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 />
        #Require all granted
        Order deny,allow
        Allow from all

        #Allow forwarding to gitlab-git-http-server
        #ProxyPassReverse http://127.0.0.1:8181
        #Allow forwarding to GitLab Rails app (Unicorn)
        ProxyPassReverse http://127.0.0.1:9095
        ProxyPassReverse http://gitlab.example.com/
    </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
  #Forward these requests to gitlab-git-http-server
  #Forward these requests to gitlab-git-http-server
  #RewriteCond %{REQUEST_URI} ^/[\w\.-]+/[\w\.-]+/repository/archive.* [OR]
  #RewriteCond %{REQUEST_URI} ^/api/v3/projects/.*/repository/archive.* [OR]
  #RewriteCond %{REQUEST_URI} ^/[\w\.-]+/[\w\.-]+/(info/refs|git-upload-pack|git-receive-pack)$
  #RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA]

  #Forward any other requests to GitLab Rails app (Unicorn)
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
  RewriteCond %{REQUEST_URI} ^/uploads
  RewriteRule .* http://127.0.0.1:9095%{REQUEST_URI} [P,QSA,NE]

  # needed for downloading attachments
  DocumentRoot /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/gitlab.example.com_error.log
  CustomLog logs/gitlab.example.com_forwarded.log common_forwarded
  CustomLog logs/gitlab.example.com_access.log combined env=!dontlog
  CustomLog logs/gitlab.example.com.log combined

</VirtualHost>

Hoffnung nützlich für jemanden, der die Installation von der Quelle mit der alten Version von Gitlab.

1
Nick Dong

Mit der Antwort von @ pincoded konnte ich GitLab zum Laufen bringen, aber wenn ich Änderungen anwende, erhielt ich immer einen Fehler von 500.

Dann habe ich die offizielle Konfiguration für Apache verwendet, die GitLab in der Antwort von @ themadmax bereitgestellt hat. Das Problem hierbei war, dass der Server nie erreichbar war und nach einiger Zeit einen 502-Fehler auslöste. 

Meine Lösung: Verwenden von der offiziellen Lösung von GitLab (Vorsicht, denken Sie daran, die SSL-Konfiguration in diesem Link zu wählen, wenn Sie nur GitLab SSL ausführen), ABER nach diesem Forumseintrag Ich musste Nginx wieder einschalten.

Am Ende sah meine Config also so aus:

vhost:

<VirtualHost *:80>
  ServerName YOUR_SERVER_FQDN
  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 />
    # New authorization commands for Apache 2.4 and up
    # http://httpd.Apache.org/docs/2.4/upgrading.html#access
    Require all granted

    #Allow forwarding to gitlab-workhorse
    ProxyPassReverse http://127.0.0.1:8181
    ProxyPassReverse http://YOUR_SERVER_FQDN/
  </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

  #Forward all requests to gitlab-workhorse except existing files like error documents
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
  RewriteCond %{REQUEST_URI} ^/uploads/.*
  RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]

  # needed for downloading attachments
  DocumentRoot /opt/gitlab/embedded/service/gitlab-Rails/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 502 /502.html
  ErrorDocument 503 /503.html

</VirtualHost>

gitlab.ru:

# nginx['enable'] = false # this defaults to true
gitlab_workhorse['enable'] = true
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
0
Elektropepi

Ich habe gerade einen halben Tag damit verbracht herauszufinden, warum Gitlab mir Fehler 422 gab und sich über CSRF-Token in den Protokollen von Gitlab-Rails production.log beschwerte.

Es stellte sich heraus, dass ich dies zur Apache-Konfiguration hinzufügen musste:

RequestHeader set X-Forwarded-Ssl on

In meinem Fall wurde gitlab aus dem deb-Paket installiert und Apache läuft auf HTTPS.

0
John Wilcox