Ein Web Verzeichnis mit git zu verwalten ist sehr praktisch, man braucht kein ftp mehr (oder was auch immer man sonst so benutzt um seine Dateien auf einen Webserver zu übertragen) und muss sich nicht selbst um das Hochladen der jeweils geänderten Dateien kümmern.
(Wenn man auch auf dem Server, also direkt im Document Root, editieren möchte, muss man noch ein klein wenig mehr Aufwand betreiben, siehe z.B. web-focused-git-workflow)
Shell Befehle: cd /blabla
Datei Pfade: /bla/blubb/blabla
Datei Inhalte: blablablabla
Das Document Root Verzeichnis (das wo die html/php/java/whatever Dateien liegen, frei wählbar) - ab jetzt hier auch "git Verzeichnis" genannt:
/var/www/MeineWebseite/
Verzeichnis durch git verwalten lassen:
cd /var/www/MeineWebseite/Um auch in das Repository "pushen" (siehe man git-push) durchführen zu können wenn das Ziel kein "bare" repository ist (also ein Arbeitsverzeichnis besitzt):
git config receive.denyCurrentBranch falseIn der Datei festlegen, welche Dateien git ignorieren soll (wildcards sind erlaubt, siehe "man gitignore"):
/var/www/MeineWebseite/.gitignore:
*~
Falls schon Dateien im Verzeichnis liegen fügen wir diese jetzt zu git hinzu:
git add .Als Besitzer des Verzeichnisses und aller Dateien/Unterverzeichnisse darin den Systemuser einstellen, unter dessen Kennung der Webserver läft (in diesem Fall Benutzer "www" und Gruppe "www") und Zugriff von allen anderen Benutzern verbieten:
chown -R www:www /var/www/MeineWebseite/Die Hooks einrichten (Programme/Skripte, die an bestimmten Zeitpunkten der Aktionen im git ausgeführt werden):
/var/www/MeineWebseite/.git/hooks/post-receive:
#!/bin/sh
unset GIT_DIR
cd ..
git reset --hard
/var/www/MeineWebseite/.git/hooks/post-update:
#!/bin/sh
exec git update-server-info
! Nur wichtig wenn man keinen Domain Namen zur Verfügung hat und/oder einfach nur testen möchte !
In diesem Beispiel benutzen wir die fiktive URL http://www.meine-webseite-mit-git.de/
Wenn man nur mit seinem lokalen Webserver testen will kann man z.B. den Servernamen aus der fiktiven URL in die hosts Datei des Systems eintragen und auf die loopback Adresse 127.0.0.1 auflösen lassen. Damit die folgende Konfiguration funktioniert muss man folgende Zeile in der Datei haben (die ersten beiden Spalten, also "127.0.0.1 localhost", sollten sowieso schon drin stehen, einfach die vorhandene Zeile um die gewünschten hostnamen erweitern):
/etc/hosts:
127.0.0.1 localhost www.meine-webseite-mit-git.de git.meine-webseite-mit-git.de
Für den Apache2 Webserver sieht die Konfiguration für einen namensbasierten virtuellen Host dann beispielsweise so aus:
/etc/apache2/sites-available/meine-webseite-mit-git:
# Die Webseite
<VirtualHost 127.0.0.1:80>
ServerAdmin webmaster@meine-webseite-mit-git.de
ServerName www.meine-webseite-mit-git.de
DocumentRoot /var/www/MeineWebseite/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
# zugriff aufs git verzeichnis über diesen Server verbieten (dafür ist dann der git.www.meine-.... server da)
<Directory /.git/>
Order Deny,Allow
Deny from all
AllowOverride all
</Directory>
LogLevel error
ErrorLog /var/log/apache2/www.meine-webseite-mit-git.de.log
CustomLog /var/log/apache2/www.meine-webseite-mit-git.de.log combined
ServerSignature Off
</VirtualHost>
# Das Git Repository der Webseite
<VirtualHost 127.0.0.1:80>
ServerAdmin webmaster@meine-webseite-mit-git.de
ServerName git.meine-webseite-mit-git.de
SetEnv GIT_PROJECT_ROOT /var/www/MeineWebseite/.git/
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias / /usr/lib/git-core/git-http-backend/
<Location />
AuthType Basic
AuthName "Git Access meine-webseite-mit-git.de"
Require valid-user
AuthUserFile /etc/apache2/passwords/git.meine-webseite-mit-git.de.htpasswd
</Location>
LogLevel error
ErrorLog /var/log/apache2/git.4freax.net-error.log
CustomLog /var/log/apache2/git.4freax.net-access.log combined
ServerSignature Off
</VirtualHost>
nicht vergessen: