GitLab konfigurieren
Für die Konfiguration des GitLab mit dem Omnibus-Package ist nur eine Datei notwendig, diese ist die “/etc/gitlab/gitlab.rb”.
Ein Beispiel:
# URL die im Browser eingegeben wird. (Es scheint so, das am Ende kein / stehen darf)
external_url "https://gitlab.example.com"
# Einstellungen für nginx
nginx['listen_address'] = '127.0.0.1'
nginx['listen_https'] = false
nginx['listen_port'] = 880
nginx['redirect_http_to_https'] = true
# Ist notwendig, damit die richtige URL bei den Projekten steht. Gerade bei Sub-Sub-Domains, z.B: gitlab.mydomain.example.com.
gitlab_rails["gitlab_host"] = 'gitlab.example.com'
# EMail-Adresse die als Absender eingetragen wird
gitlab_railse["gitlab_email_from"] = 'gitlab@example.com'
# Für neuere Version, wird mehr Arbeitsspeicher benötigt (recommended 4 GB), um diese etwas zu umgehen kann die
# Unicorn-Arbeitsthread verringer, die typischerweise auf Anzahl Cores + 1 eingestellt sind:
# Weitere Info: https://docs.gitlab.com/ce/install/requirements.html#unicorn-workers
unicorn['worker_processes'] = 2
unicorn['worker_timeout'] = 60
Nach jeder Änderung in der Konfiguration muss gitlab rekonfiguriert werden, das macht man mit folgenden Befehl:
gitlab-ctl reconfigure
Wenn nginx nicht starten kann, weil ein anderer Webserver schon läuft, dann kann man das wie folgt lösen. Zuerst muss man nginx umkonfigurieren, damit dieser auf einen anderen Port lauscht. In der Datei “/etc/gitlab/gitlab.rb” die nachfolgenden Einträge hinzufügen:
# Einstellungen für nginx
nginx['listen_address'] = '127.0.0.1'
nginx['listen_https'] = false
nginx['listen_port'] = 880
nginx['redirect_http_to_https'] = true
Da hier ein interne Verbindung benutzt wird, um von dem einen Webserver auf den anderen zu kommen, reicht hier http völlig aus. Das “:880” definiert den Port an dem nginx lauschen soll. Sollte nach dem Re-konfigurieren von gitlab, nginx noch nicht am angegeben Port lauschen, was mit nachfolgenden Befehl nachgeprüft werden kann:
netstat -pant
Dann sollte man nginx per Hand stoppen und starten:
gitlab-ctl stop nginx
gitlab-ctl start nginx
Nun muss der andere Webserver noch als Proxy eingerichtet werden. Beim Apache (ab Version 2.0) müssen zuerst die Proxy-Module aktiviert werden:
a2enmod proxy
a2enmod proxy_http
In der VHost-Konfiguration zum Gitlab-Server sollte dann ungefähr so ausschauen:
# unverschlüsselte Verbindung
<VirtualHost w.x.y.z:80>
ServerName gitlab.example.com
ServerAdmin hostmaster@example.com
# Umleiten auf HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^/(.*) https://gitlab.example.com/$1
</IfModule>
Redirect / https://gitlab.exmaple.com/
</VirtualHost>
# SSL Konfiguration
<VirtualHost w.x.y.z:443>
ServerName gitlab.example.com
ServerAdmin hostmaster@example.com
SSLEngine On
SSLHonorChipherOrder On
SSLCipherSuite ...
SSLVerifyDepth 10
SSLCertificateFile /../...pem
SSLCertificateKeyFile /../...key
SSLCertificateKeyFile /../...crt
SSLCertificateKeyFile /../...csr
...
# Internes weiterleiten an den nginx
<IfModule mod_proxy.c>
ProxyVia On
ProxyRequests Off
ProxyPass / http://127.0.0.1:880/
ProxyPassReverse / http://127.0.0.1:880/
ProxyPreserveHost On
<Proxy *>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Proxy>
# Notwendig, damit die https-Verbindung auf http weitergeleitet werden kann
RequestHeader set Host "gitlab.example.com"
RequestHeader add X-Forwarded-Ssl on
RequestHeader set X-Forwarded-For %{REMOTE_IP}%
RequestHeader set X-Forwarded-Proto "https"
</IfModule>
</VirtualHost>
Und dann noch den Apache die Konfiguration erneut einlesen lassen, mit nachfolgenden Befehl:
service apache2 reload #oder restart wenn man möchte
Nun sollte man über den Zugriff “https://gitlab.example.com” auf die GitLab anmelde Webseite kommen. Und bei den Projekten, sollten auch die richtigen URLs erscheinen.
Weitere Informationen zu Einstellungen von GitLab findet man hier.