<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Matthias Lohr&#039;s technical stuff &#187; Apache</title>
	<atom:link href="http://www.matthias-lohr.net/tag/apache/feed" rel="self" type="application/rss+xml" />
	<link>http://www.matthias-lohr.net</link>
	<description>&#34;do nothing, successfully&#34; -- man true</description>
	<lastBuildDate>Sun, 18 Dec 2011 14:00:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Eigener Git-Repo-Server</title>
		<link>http://www.matthias-lohr.net/183/eigener-git-repo-server?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=eigener-git-repo-server</link>
		<comments>http://www.matthias-lohr.net/183/eigener-git-repo-server#comments</comments>
		<pubDate>Fri, 16 Apr 2010 09:40:35 +0000</pubDate>
		<dc:creator>Matthias Lohr</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[WebDAV]]></category>

		<guid isPermaLink="false">http://www.matthias-lohr.net/?p=183</guid>
		<description><![CDATA[Nachdem ich nun von vielen Seiten immer wieder den Satz höre &#8220;Git ist toll&#8221; habe ich mich mal damit auseinandergesetzt, um die Euphorie und die leuchtenden Augen der Entwickler. die mit Git arbeiten, zu verstehen. Nachdem die übliche &#8220;Was ist es, wie benutzt man es&#8221;-Phase vorüber war und langsam Licht in das Dunkel kam, konnte [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich nun von vielen Seiten immer wieder den Satz höre &#8220;Git ist toll&#8221; habe ich mich mal damit auseinandergesetzt, um die Euphorie und die leuchtenden Augen der Entwickler. die mit Git arbeiten, zu verstehen. Nachdem die übliche &#8220;Was ist es, wie benutzt man es&#8221;-Phase vorüber war und langsam Licht in das Dunkel kam, konnte ich immer mehr die oben beschriebenen Rekaktionen der Git-Nutzer verstehen: Git ist <em>wirklich</em> toll!</p>
<p><span id="more-183"></span>Viele Leute heutzutage kennen SVN und finden die Möglichkeiten, die es bieten, recht nett &#8211; allerdings ist SVN vergleichsweise langsam (besonders für große Projekte) und benötigt einen zentralen Server bzw. ein zentrales Repository. Der erste einleuchtende Grund für mich, zu Git zu wechseln, war die Feststellung, dass Git sämtliche in SVN enthaltenden Funktionen selbst beherrscht, allerdings wesentlich schneller und das absolut dezentral. Allerdings kenne und beherrsche ich selbst noch lange nicht alle Funktionen von Git, daher überlasse ich die Vorstellung davon anderen.</p>
<p>Um mich selbst ein wenig in Git einarbeiten zu können bestand mein erster Versuch darin, einen eigenen Git-Server aufzusetzen, um meine (Test-)Repositories selbst hosten zu können. Für alle, die dies ebenfalls versuchen möchte, beschreibe ich hier die Schritte, die notwendig waren, um den Server einrichten zu können.</p>
<p>Für mich war es wichtig, sowohl Lese-/Schreibzugriff per HTTP zu haben als auch einen webbasierten Browser, um sich die Inhalte per Browser ansehen zu können. Als WebGUI verwende ich <a title="GitPHP-Download" href="http://xiphux.com/code/gitphp/gitphp-0.1.1.tar.bz2">GitPHP</a> (<a title="GitPHP-Webseite" href="http://www.xiphux.com/programming/php/gitphp/">http://www.xiphux.com/programming/php/gitphp/</a>). Dazu habe ich das verlinkte Paket heruntergeladen, es in <em>/var/www/git/</em> entpackt und meine Domain <a title="Meine Git-Repositories" href="http://git.ml.vg/">git.ml.vg</a> in der Apache-Konfiguration auf dieses Verzeichnis eingestellt (Config-Datei befindet sich weiter unten). Dadrin habe ich dann das Unterverzeichnis <em>projects/</em> erstellt, in dem nachher meine Git-Projekte liegen werden. Einen laufenden Apache-Server mit installiertem WebDAV setze ich an dieser Stelle einfach mal voraus, ebenso sollte man sich durch die Config von GitPHP durchlesen, um diese je nach Situation anzupassen.</p>
<p>Mit folgender Apache-Konfiguration habe ich meinen Apache dazu überredet, WebDAV-Server zu spielen:</p>
<blockquote><p>&lt;VirtualHost 12.34.56.789:80&gt;<br />
ServerName git.ml.vg<br />
ServerAdmin mail@&#8230;net</p>
<p>DocumentRoot /var/www/git</p>
<p>&lt;LocationMatch &#8220;/projects/([a-zA-Z0-9\-]+).git&#8221;&gt;<br />
DAV on<br />
&lt;/LocationMatch&gt;</p>
<p>&lt;Directory /var/www/git/projects/&gt;<br />
AllowOverride AuthConfig<br />
Options FollowSymLinks SymLinksIfOwnerMatch Indexes<br />
&lt;/Directory&gt;</p>
<p>&lt;/VirtualHost&gt;</p></blockquote>
<p>Nun kann man (als Benutzer www-data, damit Apache Lese- und Schreibzugriff darauf hat) unter <em>/var/www/git/projects</em> pro gewünschtem Repository ein Verzeichnis erstellen und dieses mit <em>git &#8211;bare init</em> initialisieren. GitPHP sollte es sofort als vorhanden Anzeigen. Um die Schreibrechte zu limitieren, ist es sinnvoll, per Basic Auth einen Passwort-Schutz einzurichten, dazu lege ich pro Repository im entsprechenden Verzeichnis eine <em>.htaccess</em>-Datei ab (diesmal als Root, damit sie nicht per WebDAV überschrieben werden kann):</p>
<blockquote><p>AuthType Basic<br />
AuthName &#8220;My repo with git&#8221;<br />
AuthUserFile /var/www/git/projects/test.git/.htpasswd<br />
&lt;Limitexcept GET HEAD PROPFIND OPTIONS REPORT&gt;<br />
Require valid-user<br />
&lt;/Limitexcept&gt;</p></blockquote>
<p>Diese Konfiguration sorgt dafür, dass jeder lesen, aber nur authentifizierte Benutzer in das Repository schreiben können.</p>
<p>Apache neustarten, ggf. Fehlermeldungen totschlagen, dann sollte der Git-Server funktionieren <img src='http://www.matthias-lohr.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Bei Fragen und/oder Problemen meldet euch per Kommentar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthias-lohr.net/183/eigener-git-repo-server/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

