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 URL’s erscheinen.
Weitere Informationen zu Einstellungen von GitLab findet man hier.