J'ai installé GitLab 7.2.1
avec le paquet .deb de GitLab.org pour Debian 7 sur un serveur virtuel sur lequel j'ai un accès root . Sur ce serveur virtuel, j'ai déjà installé Apache, la version 2.2.22
et je ne le fais pas. Je ne veux pas utiliser Ngnix pour GitLab.
Maintenant, je ne sais plus où sont les dossiers publics de GitLab, ni ce que je dois faire ou sur quoi je dois faire attention.
Ma question est donc la suivante: comment dois-je configurer mon vhost pour Apache ou que dois-je également faire pour pouvoir utiliser un sous-domaine tel que "gitlab.example.com" sur mon serveur Web Apache?
Avec deux choses en tête:
Sudo netstat -pant | grep Unicorn
)/opt/gitlab/embedded/service/gitlab-Rails/public
Vous pouvez créer un nouvel hôte virtuel pour gitlab dans Apache avec la configuration suivante:
<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>
J'ai suivi cet article http://eserdeniz.fr/articles/view/4/installer-gitlab-sous-debian-7-avec-nginx-et-mysql et cela a fonctionné, mais j'avais besoin d'Apache au lieu de nginx.
Après avoir eu beaucoup de mal à configurer Apache2 avec gitlab-ce 7.9.0.rc3, j'ai examiné la documentation Apache concernant les directives ProxyPass et ProxyPassReverse.
J'ai résolu mes problèmes avec ce vhost:
<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>
Maintenant, c'est rapide!
En espérant que cela vous aidera!
Sur Debian GNU/Linux 8.4 (jessie) avec la version Omnibus 8.5.0 (apt-get):
Configuration GitLab
# 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
Configuration Apache2
# 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>
Sortie Netstat
# 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
La source
http://doc.gitlab.com/omnibus/settings/nginx.html#using-a-non-bundled-web-server
Si vous avez un problème d’accès HTTP git, regardez cette configuration:
# 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"
et configuration Apache2:
# 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>
Appliquer les modifications:
# gitlab-ctl reconfigure
# service Apache2 reload
De https://gitlab.com/gitlab-org/gitlab-ce/issues/2669#note_2176671
Pour les voyageurs récents avec GitLab 10.X.X, regardez ce repo . Vous pouvez y trouver des fichiers de configuration Apache2 ainsi que des instructions pour que GitLab s'exécute uniquement avec Apache2 et NGINX désactivés.
Installation depuis la source. gitlab 7.4.5
Unicorn écoute 9095. Apache est 2.2.9 et je n'utilise pas 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
Modifier le fichier de configuration d’Apache 2.2 fonctionne pour moi.
Un autre ancien fichier de configuration de gitlab 6.0 est ici qui fonctionne aussi pour moi.
#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>
Espoir utile pour quelqu'un qui installe depuis la source avec la vieille édition de gitlab.
En utilisant la réponse de @ pincoded, j’ai pu mettre GitLab en service, mais lorsqu’il a été procédé à des changements, j’ai toujours reçu une erreur 500.
Ensuite, j'ai utilisé la configuration officielle pour Apache fournie par GitLab dans la réponse de @ themadmax. Le problème ici était que le serveur n’était jamais joignable et qu’il produisait une erreur 502 après un certain temps.
Ma solution: En utilisant la solution officielle par GitLab (soyez prudent, choisissez la configuration SSL dans ce lien, si vous utilisez uniquement SSL GitLab) MAIS après cette entrée de forum je devais tourner nginx à nouveau.
En fin de compte, ma configuration ressemblait à ceci:
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"
Je viens de passer une demi-journée à comprendre pourquoi gitlab me donnait l'erreur 422 et à me plaindre des jetons CSRF dans les journaux de production de gitlab-Rails.
Il s'est avéré que je devais ajouter ceci à la configuration d'Apache:
RequestHeader set X-Forwarded-Ssl on
Dans mon cas, gitlab a été installé à partir du paquet deb et Apache est exécuté sur HTTPS.