GitPrep ist eine Git Repository Management-Software, ähnlich wie Github. Ziel dieses Tutorials ist das Ein- und Auschecken von Git Repositories über den Webserver Apache und dem Protokoll HTTPS.
Installation
Wichtig:
GitPrep muss kompiliert werden. Da ich generell nichts davon halte, Compiler-Software auf dem Produktions-System zu installieren, werde ich in diesem Tutorial die Installation in einer Oracle VirtualBox VM mit Ubuntu 12.04 Server vornehmen und anschließend die fertige Installation auf den Webserver kopieren.
Die Installation wird als angemeldeter root-Benutzer durchgeführt.
Folgende Schritte sind zur Installation notwendig:
- Benötigte Pakete installieren:
Code: Alles auswählen
apt-get install -y apache2 git-core gcc make php5 - Neueste GitPrep-Version herunterladen, ins Webverzeichnis verschieben und Rechte setzen:
Code: Alles auswählen
https://github.com/yuki-kimoto/gitprep/archive/master.zip unzip master.zip mv gitprep-master /var/www/gitprep chown -R www-data:www-data /var/www - Apache-Konfigurationsdatei "/etc/apache2/sites-enabled/000-default" anpassen:
- Im Bereich "<Directory /var/www/>" folgende Einträge hinzufügen:
Code: Alles auswählen
AddHandler cgi-script .cgi Options +ExecCGI - Webserver neustarten:
Code: Alles auswählen
service apache2 restart
- Im Bereich "<Directory /var/www/>" folgende Einträge hinzufügen:
- Setup im Browser über die URL "http://<HOST.IP>/gitprep/setup/setup.php" und auf "Setup" klicken.
- Ist das Setup ohne Fehler durchgelaufen, dann kopiere nun die Daten "/var/www/gitprep*" auf deinen Produktions-Server. Alle folgenden Schritte beziehen sich auf deinen Produktions-Server. Die folgende Beschreibung geht davon aus, dass GitPrep im Verzeichnis "/var/www/git" abgelegt wurde.
- Installiere Git:
Code: Alles auswählen
apt-get install -y git-core - GitPrep setzt für die HTTP-Authentifizierung auf "PasswordBasicAuth". Das bedeutet, dass du neben der Verwaltung der Benutzer in GitPrep ebenfalls eine Passwort-Datei für den Apache Webserver pflegen müsstest. Um das zu umgehen, nutze ich den von GitPrep mitgelieferten Webserver und konfiguriere den Apache Webserver so, dass er als Proxy-Server dient. Dieser nimmt alle Anfragen zum und vom GitPrep Webserver entgegen und leitet sie weiter. Passe dazu deine Apache2-Konfigurationsdatei (eine Datei im Verzeichnis "/etc/apache2/sites-enabled/") an:
Code: Alles auswählen
<VirtualHost *:443> <Proxy *> Order deny,allow Allow from all </Proxy> ProxyRequests Off ProxyPreserveHost On ProxyPass / http://127.0.0.1:10020/ keepalive=On ProxyPassReverse / http://127.0.0.1:10020/ RequestHeader set X-Forwarded-HTTPS "1" <Directory /var/www/git> AddHandler cgi-script .cgi Options +ExecCGI -FollowSymLinks -Indexes </Directory> </VirtualHost> - Aktiviere die Proxy-Module für den Apache Webserver:
Code: Alles auswählen
a2enmod headers proxy proxy_http service apache2 restart - Teile GitPrep mit, dass du einen Reverse Proxy verwenden möchtest. Setze dazu in der Datei "/var/www/gitprep/gitprep.conf" den Wert "on" im Bereich "[reverse_proxy]" auf "1".
- Das Upload-Limit pro Datei liegt standardmäßig bei 5MB. Ist dir das zu gering, dann ergänze in der Datei "/etc/environment" folgenden Eintrag. Der Wert ist in Bytes anzugeben:
Code: Alles auswählen
MOJO_MAX_MESSAGE_SIZE=10485760 - Damit der GitPrep Webserver direkt beim Booten gestartet wird, erstelle folgendes Startskript:
- Wenn dein Betriebssystem "init.d" zum Starten der Dienste verwendet, dann führe folgende Schritte aus:
- Leeres Startskript anlegen:
Code: Alles auswählen
>/etc/init.d/gitprep - Dieses Startskript nun mit folgendem Inhalt füllen:
Code: Alles auswählen
#!/bin/sh ### BEGIN INIT INFO # Provides: gitprep # Required-Start: apache2 # Required-Stop: apache2 # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop gitprep web server ### END INIT INFO PATH=/sbin:/usr/sbin:/bin:/usr/bin case "$1" in start) /var/www/gitprep/gitprep ;; restart) /var/www/gitprep/gitprep -s /var/www/gitprep/gitprep ;; stop) /var/www/gitprep/gitprep -s ;; *) echo "Usage: $0 start|stop|restart" >&2 exit 3 ;; esac - Startskript aktivieren:
Code: Alles auswählen
update-rc.d gitprep defaults
- Leeres Startskript anlegen:
- Wenn dein Betriebssystem "systemd" zum Starten der Dienste verwendet, dann führe folgende Schritte aus:
- Leeres Startskript anlegen:
Code: Alles auswählen
>/usr/lib/systemd/system/gitprep.service - Dieses Startskript nun mit folgendem Inhalt füllen:
Code: Alles auswählen
[Unit] Description=Starts/stops GitPrep webserver. [Service] Type=simple ExecStart=/var/www/gitprep/gitprep ExecStop=/var/www/gitprep/gitprep -s PIDFile=/var/www/gitprep/script/hypnotoad.pid [Install] WantedBy=multi-user.target - Startskript aktivieren:
Code: Alles auswählen
systemctl enable gitprep.service
- Leeres Startskript anlegen:
- Wenn dein Betriebssystem "init.d" zum Starten der Dienste verwendet, dann führe folgende Schritte aus:
- Die Meldung "fatal: protocol error: bad line length character: 0", sowie die HTTP Fehler "200" und "502" weisen auf Speicherprobleme hin. Lösung:
- Client-seitig: "http.postBuffer" in Git erhöhen:
Code: Alles auswählen
git config --global http.postBuffer 50M - Server-seitig: "MOJO_MAX_MESSAGE_SIZE" in der Datei "/etc/environment" erhöhen.
- Client-seitig: "http.postBuffer" in Git erhöhen: