shared ist der gemeinsame Host für Web- und weitere Anwendungen im Hackerspace.
Idealerweise musst du dich so wenig wie möglich mit dem Hosting auf shared auseinandersetzen. Ziel ist es, dass du die aktuelle Version deiner Webseite oder deines Projekts mit nur einem Befehl veröffentlichen kannst:
git push sharedhost master
und alles ist erledigt. Die aktuelle Version deines Projektes ist unter projektname.shared.local.hacksaar.de
erreichbar.
Voraussetzung für ein Deployment auf shared ist, dass dein Projekt git zur Verwaltung des Quellcodes verwendet. Wir empfehlen natürlich git.hacksaar.de als gemeinsames Repository. Eine Alternative dazu stellt u.a. github oder auch ein eigener git-Server dar. Als gute Dokumentation für den Einsteiger zur Verwendung von git empfiehlt sich Pro Git von Scott Chacon und Ben Straub.
Es ist nicht notwendig, eine eigene virtuelle Maschine als Host für jedes Softwareprojekt oder jede Webseite einzurichten. In den meisten Fällen ist es ausreichend, einen gemeinsamen Host für verschiedene Webseiten zu verwenden, so dass sich nicht jedes Projekt selbst um die Administration eines Servers kümmern muss. Als gemeinsamer Host für Webseiten und einfache Anwendungen steht der Server shared zur Verfügung.
Der Host shared ist aus dem WLAN-Netz HACKSAAR-24 unter shared.local.hacksaar.de erreichbar. Wir arbeiten noch an der Erreichbarkeit aus dem Internet. Matthias baut noch eine 5 GHz-Antenne, so dass shared auch aus dem WLAN-Netz HACKSAAR-50 erreichbar wird. Aus dem gleichen Grund ist auch eine Erreichbarkeit aus dem WLAN-Netz HACKS44R-Gast noch nicht gegeben.
shared ist für einfache Webseiten und andere einfache Anwendungen ausgelegt. Komplexe Projekte, deren Anforderungen das Angebot von shared übersteigen, können auf einer eigenen virtuellen Maschine gehostet werden. Alternativ dazu kannst du gemeinsam mit den shared-Administratoren das existierende Angebot erweitern. shared bietet bisher eine Umgebung für folgende Technologien an:
Fehlt etwas in dieser Liste, was du für dein Projekt benötigst? Dann sprich mit den shared-Administratoren Kim oder Matthias.
Die in diesem Kapitel beschriebene Konfiguration wird durch einen shared-Administrator durchgeführt.
Das Veröffentlichen einer bestimmten Softwareversion nennt man auch Deployment. Eine einmalige Konfiguration ist notwendig, damit das Deployment deiner Software auf shared in einem Befehl funktionieren kann. Damit klar ist, welche Aufgaben dir abgenommen werden, und damit die Konfiguration für Interessierte nachvollziehbar wird, sind alle Schritte zur Einrichtung hier dokumentiert.
Das Code-Repository muss auf shared einmalig eingerichtet werden:
cd /var/repo git clone --bare https://git.hacksaar.de/hacksaar/projektname.git
Durch die Anlage eines Repositories mit der Option --bare
werden nur die Informationen zur Verwaltung der Dateien im Repository
unter /var/repo abgelegt, der Sourcecode wird nicht an dieser Stelle verwaltet.
Um den Sourcecode nach einem push in das eben angelegte Repository unter /var/www/projektname zu veröffentlichen, wird im Verzeichnis /var/repo/projektname/hooks die ausführbare Datei post-receive erzeugt:
cd /var/repo/projektname.git/hooks touch post-receive chmod +x post-receive
In die so erzeugte Datei post-receive wird der Befehl zum checkout nach /var/www/projektname eingetragen.
vi /var/repo/projektname.git/hooks/post-receive
#!/bin/sh git --work-tree=/var/www/Projektname --git-dir=/var/repo/projektname.git checkout -f
Damit der post-receive-hook die Dateien auch wirklich unter /var/www/Projektname bereitstellen kann, sind die Rechte im Filesystem zu beachten. Der Benutzer git erhält normalerweise Schreibrechte in diesem Verzeichnis:
mkdir /var/www/Projektname chown git /var/www/Projektname
Ausnahmen von dieser Regel können individuell vereinbart werden. So ist es z.B. denkbar, dass nach dem ersten Deployment das Schreibrecht auf die lokale Datenbank in diesem Verzeichnis entfernt wird, um ein versehentliches Deployment bzw. das Überschreiben dieser Datei zu verhindern.
Der virtuelle Host wird individuell konfiguriert. Die Minimalkonfiguration sieht in etwa so aus:
vi /etc/apache2/sites-available/projektname
<virtualhost *:80> ServerAdmin webmaster@localhost ServerName projektname.shared.local.hacksaar.de ServerAlias projektname DocumentRoot /var/www/projektname <Directory var/www/projektname> Options -MultiViews AllowOverride all </Directory> </virtualhost>
Die eben angelegte apache-site-Konfiguration muss noch aktiviert werden, damit apache /var/www/Projektname ausliefern kann:
a2ensite projektname service apache2 reload
Die Zugriffsberechtigung muss nur einmal pro Benutzer eingerichtet werden. Falls dein public key bereits auf shared hinterlegt ist, kann dieser Schritt übersprungen werden.
Das Deployment läuft auf shared im Kontext des Benutzers git. Damit du Code auf shared als git-user pushen kannst, muss einmalig der public key zu authorized_keys des git-Benutzers auf shared hinzugefügt werden. Dazu händigst du deinen public key einem shared-admin aus. Dieser fügt deinen public key der Datei /home/git/.ssh/authorized_keys hinzu:
cat id_rsa.pub >> authorized_keys
Diese Konfiguration führst du selbst auf deinem Computer durch.
Dem Projekt in deinem lokalen git-Repository wird unter dem Namen sharedhost ein git-Remote hinzugefügt, um das Deployment von deinem Computer aus zukünftig bequem durchführen zu können. Öffne dazu auf deinem Computer eine Shell, wechsele in das Projektverzeichnis und füge mit git remote den Server shared zum Projekt hinzu:
cd /repo/projektname git remote add sharedhost ssh://git@shared.local.hacksaar.de/var/repo/projektname.git
Dies war der letzte notwendige Schritt. Das Ziel ist erreicht, die Aktualisierung des Projekts auf shared kann nun jederzeit mit dem folgenden Befehl durchgeführt werden:
git push sharedhost master