index.html 8.55 KB
Newer Older
Kim Meiser's avatar
Kim Meiser committed
1 2 3
<!DOCTYPE html>
<html>
<head>
4
    <title>shared :: Getting Started</title>
Kim Meiser's avatar
Kim Meiser committed
5 6 7 8 9
    <link rel="stylesheet" media="all" href="style.css" />
</head>
<body>
    <h1>Eine eigene Webseite auf shared hosten</h1>
    
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
    <p>
        <em>shared</em> ist der gemeinsame Host für Web- und weitere Anwendungen im Hackerspace.
    </p>

    <h2>Veröffentlichen der aktuellen Version deiner Webseite oder Anwendung</h2>
    <p>
        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:
    </p>
    <pre>git push sharedhost master</pre>
    <p>
        und alles ist erledigt. Die aktuelle Version deines Projektes ist unter <code>projektname.shared.local.hacksaar.de</code> erreichbar.
    </p>

    <h3>Voraussetzungen</h3>
    <p>
        Voraussetzung für ein Deployment auf shared ist, dass dein Projekt <em>git</em> zur Verwaltung des Quellcodes verwendet.
        Wir empfehlen natürlich <a href="https://git.hacksaar.de">git.hacksaar.de</a> als gemeinsames Repository. Eine Alternative dazu stellt u.a. <a href="https://www.github.com">github</a> oder auch
        ein eigener git-Server dar. Als gute Dokumentation für den Einsteiger zur Verwendung von git empfiehlt sich <a href="http://git-scm.com/book/en/v2/">Pro Git</a> von Scott Chacon und Ben Straub.
    </p>

Kim Meiser's avatar
Kim Meiser committed
31 32 33 34 35
    <h2>Nutzen</h2>
    <p>
        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, <em>einen</em> 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 
36 37
        steht der Server shared zur Verfügung.
    </p>
Kim Meiser's avatar
Kim Meiser committed
38 39
    
    <h3>Erreichbarkeit</h3>
40 41
    <p>
        Der Host shared ist aus dem WLAN-Netz HACKSAAR-24 unter <em>shared.local.hacksaar.de</em> erreichbar. 
42
        Wir arbeiten noch an der Erreichbarkeit aus dem Internet. Matthias baut noch eine 5&nbsp;GHz-Antenne, so dass shared auch aus dem WLAN-Netz HACKSAAR-50 erreichbar wird. 
Kim Meiser's avatar
Kim Meiser committed
43
        Aus dem gleichen Grund ist auch eine Erreichbarkeit aus dem WLAN-Netz HACKS44R-Gast noch nicht gegeben.
44
    </p>
Kim Meiser's avatar
Kim Meiser committed
45 46
    
    <h3>Scope</h3>
47 48 49 50 51 52 53 54 55 56 57 58 59
    <p>
         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:
        <ul>
            <li><em>Einfache HTML-Seiten</em> wie zum Beispiel <a href="http://getting-started.shared.local.hacksaar.de">die Anleitung, die du gerade liest</a> (<a href="https://git.hacksaar.de/hacksaar/shared-getting-started/">Quellcode</a>)</li>
            <li><em>HTML-Seiten mit Javascript</em> wie zum Beispiel <a href="http://tellnext.shared.local.hacksaar.de">tell.next</a> (<a href="https://git.hacksaar.de/hacksaar/Schmierblatt/">Quellcode</a>)</li>
            <li><em>Ruby on Rails</em>-Anwendungen wie zum Beispiel <a href="http://SpacePoints.shared.local.hacksaar.de">SpacePoints</a> (<a href="https://git.hacksaar.de/hacksaar/SpacePoints/">Quellcode</a>)</li>
        </ul>
    </p>
    <p class="note">
        Fehlt etwas in dieser Liste, was du für dein Projekt benötigst? Dann sprich mit den shared-Administratoren <a href="https://wiki.hacksaar.de/Benutzer:Kimcm">Kim</a> oder <a href="https://wiki.hacksaar.de/Benutzer:mafolz">Matthias</a>.
    </p>
Kim Meiser's avatar
Kim Meiser committed
60 61

    <h2>Einrichtung eines neuen Projekts auf shared</h2>
62 63 64
    <p class="note">
        Die in diesem Kapitel beschriebene Konfiguration wird durch einen shared-Administrator durchgeführt.
    </p>
Kim Meiser's avatar
Kim Meiser committed
65
    <p>
66
        Das Veröffentlichen einer bestimmten Softwareversion nennt man auch Deployment. Eine einmalige Konfiguration ist notwendig, damit das Deployment deiner Software
Kim Meiser's avatar
Kim Meiser committed
67 68 69
        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.
    </p>
70
    <h3 class="admin">Clonen des Repositories auf shared</h3>
Kim Meiser's avatar
Kim Meiser committed
71
        <p>
72
            Das Code-Repository muss auf shared einmalig eingerichtet werden:
Kim Meiser's avatar
Kim Meiser committed
73 74
        </p>
    <pre>cd /var/repo
75 76 77 78 79
git clone --bare https://git.hacksaar.de/hacksaar/projektname.git</pre>
    <p>
        Durch die Anlage eines Repositories mit der Option <code>--bare</code> werden nur die Informationen zur Verwaltung der Dateien im Repository 
        unter /var/repo abgelegt, der Sourcecode wird nicht an dieser Stelle verwaltet.
    </p>
Kim Meiser's avatar
Kim Meiser committed
80

81 82 83 84 85 86 87 88 89 90 91
    <h3 class="admin">Einrichten des Post-Receive-Hook</h3>
    <p>
        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:
    </p>
    <pre>cd /var/repo/projektname.git/hooks
touch post-receive
chmod +x post-receive</pre>
    <p>
        In die so erzeugte Datei post-receive wird der Befehl zum checkout nach /var/www/projektname eingetragen.
    </p>
Kim Meiser's avatar
Kim Meiser committed
92 93
    <pre>vi /var/repo/projektname.git/hooks/post-receive</pre>
    <pre>#!/bin/sh
94 95 96 97 98 99 100 101 102 103 104 105 106
git --work-tree=/var/www/Projektname --git-dir=/var/repo/projektname.git checkout -f</pre>
    <p>
        Damit der post-receive-hook die Dateien auch wirklich unter /var/www/Projektname bereitstellen kann, sind die Rechte im Filesystem 
        zu beachten. Der Benutzer <em>git</em> erhält normalerweise Schreibrechte in diesem Verzeichnis:
    </p>
    <pre>mkdir /var/www/Projektname
chown git /var/www/Projektname</pre>
    <p>
        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.
    </p>

    <h3 class="admin">Einrichten des virtuellen Hosts</h3>
Kim Meiser's avatar
Kim Meiser committed
107
    <p>Der virtuelle Host wird individuell konfiguriert. Die Minimalkonfiguration sieht in etwa so aus:</p>
108 109 110 111 112 113
    <pre>vi /etc/apache2/sites-available/projektname</pre>
    <pre>&lt;virtualhost *:80&gt;
	ServerAdmin webmaster@localhost
	ServerName projektname.shared.local.hacksaar.de
	ServerAlias projektname
	DocumentRoot /var/www/projektname
114
        &lt;Directory var/www/projektname&gt;
115 116 117 118 119
		Options -MultiViews
		AllowOverride all
	&lt;/Directory&gt;
&lt;/virtualhost&gt;
</pre>
Kim Meiser's avatar
Kim Meiser committed
120
    <p>Die eben angelegte apache-site-Konfiguration muss noch aktiviert werden, damit apache /var/www/Projektname ausliefern kann:</p>
121 122 123 124
    <pre>a2ensite projektname
service apache2 reload</pre>

    <h3 class="admin">Einmal pro Benutzer: Berechtigung zum Zugriff auf shared einrichten</h3>
Kim Meiser's avatar
Kim Meiser committed
125
    
126
    <p class="tip">
Kim Meiser's avatar
Kim Meiser committed
127
        Die Zugriffsberechtigung muss nur einmal pro Benutzer eingerichtet werden. Falls dein public key bereits auf shared hinterlegt ist, kann dieser Schritt übersprungen werden.
128 129 130 131 132
    </p>
    <p>
        Das Deployment läuft auf shared im Kontext des Benutzers <em>git</em>. 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:
Kim Meiser's avatar
Kim Meiser committed
133 134 135
    </p>
    <pre>cat id_rsa.pub >> authorized_keys</pre>

136 137 138 139 140 141
    <h2 class="user">shared-Remote dem lokalen Repository auf dem eigenen Computer hinzufügen</h2>
    <p class="note">
        Diese Konfiguration führst du selbst auf deinem Computer durch.
    </p>
    <p>
        Dem Projekt in deinem lokalen git-Repository wird unter dem Namen <em>sharedhost</em> ein git-Remote 
142
        hinzugefügt, um das Deployment von deinem Computer aus zukünftig bequem durchführen zu können. Öffne dazu auf deinem Computer
Kim Meiser's avatar
Kim Meiser committed
143
        eine Shell, wechsele in das Projektverzeichnis und füge mit git remote den Server shared zum Projekt hinzu:
144 145 146 147 148 149 150
    </p>
        <pre>cd /repo/projektname
git remote add sharedhost ssh://git@shared.local.hacksaar.de/var/repo/projektname.git</pre>
    
    <p>
        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:
    </p>
Kim Meiser's avatar
Kim Meiser committed
151 152 153
        <pre>git push sharedhost master</pre>
</body>
</html>