[[Vorlage(Archiviert, )]]
[[Vorlage(Fortgeschritten)]]
{{{#!vorlage Wissen
[:Terminal: Ein Terminal öffnen]
[:sudo: Root-Rechte erlangen und einsetzen]
[:Rechte: Rechte für Dateien und Ordner ändern]
[:Editor: Einen Editor öffnen]
}}}
[[Inhaltsverzeichnis(2)]]
Die Anleitung beschreibt das Anbinden eines Mercurial Repositories für den Apache2-Webserver. Voraussetzung dafür ist, dass der [:Apache:] sowie [:Archiv/Mercurial:] schon installiert sind.
= Grundlegende Konfiguration =
Zunächst öffnet man ein Terminal[1] und erstellt den Speicherort für das Repository[2]:
{{{#!vorlage Befehl
sudo mkdir -p /var/hg/repos
}}}
Anschließend werden die Besitzrechte dem Apache-Benutzer zugewiesen[3]:
{{{#!vorlage Befehl
sudo chown -R www-data:www-data /var/hg
}}}
Als nächstes erstellt man die Konfigurationsdatei:
{{{#!vorlage Befehl
cat > /tmp/hgweb.config
}}}
In der Konfigurationsdatei gibt man nun an, wo sich das Repository befindet.
{{{#!code ini
[collections]
/var/hg/repos/ = /var/hg/repos/
}}}
{{{#!vorlage Hinweis
Der Abschnitt `collections` bedeutet in dem Fall, dass mehrere Repositories im selben Verzeichnis liegen. Für eine kleine Anzahl von Repositories benutzt man `path` und gibt den Pfad zum Repository an. Siehe dazu [http://mercurial.selenic.com/wiki/PublishingRepositories#Setting_up_the_hgweb.config_File Setting up the hgweb.config File] {en}.
}}}
Die Konfigurationsdatei muss nun noch an die richtige Stelle verschoben werden.
{{{#!vorlage Befehl
sudo -u www-data cp /tmp/hgweb.config /var/hg
rm /tmp/hgweb.config
}}}
== Weitere Konfigurationsmöglichkeiten ==
Diese Konfigurationsdatei enthält Einstellungen, die für '''alle''' Repositories gelten. Spezifische Einstellungen werden in der '''hgrc'''-Datei des jeweiligen Repositories hinterlegt. Siehe dazu [#Informationen-ueber-das-Repository Informationen über das Repository].
{{{#!code ini
[web]
# Aussehen der Repository Seite
# Mögliche Stile: coal, gitweb, monoblue, paper und spartan
style = monoblue
# Archive die zum Download angeboten werden: gz, bz2, zip
allow_archive = gz bz2
# Farbschema der Syntaxhervorhebung
# Mögliche Schemas: pygmentize -L style
pygments_style = tango
[extensions]
# Syntaxhervorhebung
# Erfordert die Installation von Pygments
highlight =
}}}
= Anbindung an Webserver =
Für das Anbinden an den Webserver muss die Datei '''hgwebdir.cgi''' (bzw. '''hgweb.cgi''') kopiert und ausführbar gemacht werden.
{{{#!vorlage Befehl
sudo -u www-data cp /usr/share/doc/mercurial-common/examples/hgwebdir.cgi /var/hg
sudo -u www-data chmod +x /var/hg/hgwebdir.cgi
}}}
In einem Editor die Datei '''/etc/apache2/sites-available/hg''' mit folgenden Inhalt erstellen[3].
{{{#!code apache
ScriptAliasMatch ^/hg(.*) /var/hg/hgwebdir.cgi$1
Options ExecCGI FollowSymLinks
AllowOverride None
}}}
Der virtuelle Host muss noch aktiviert werden und der Apache seine Konfiguration aktualisieren.
{{{#!vorlage Befehl
sudo a2ensite hg
sudo service apache2 force-reload
}}}
== Benutzer-Anmeldung ==
Der Apache-Server bietet die Möglichkeit einer Benutzer-Anmeldung über eine Passwort-Datei. Die Benutzer des Mercurial Repositories müssen nicht mit den lokal im System vorhandenen Benutzern übereinstimmen.
{{{#!vorlage Befehl
sudo htpasswd -c /etc/apache2/hg.passwd BENUTZERNAME
}}}
Beispiel:
{{{#!vorlage Befehl
sudo htpasswd -c /etc/apache2/hg.passwd peter
}}}
Weitere Benutzer werden dann ohne die Option `-c` angelegt.
{{{#!vorlage Befehl
sudo htpasswd /etc/apache2/hg.passwd max
}}}
Folgende Zeilen müssen in der Datei '''/etc/apache2/sites-available/hg''' ergänzt werden.
{{{#!code apache
# [...]
AuthType Basic
AuthName "Mercurial Repository"
AuthUserFile /etc/apache2/hg.passwd
Require valid-user
}}}
Der Nutzer muss dann noch für das [#Push-mit-Authentifizierung pushen] freigeschaltet werden.
== Neues Repository erzeugen ==
{{{#!vorlage Befehl
sudo -u www-data hg init /var/hg/repos/REPOSITORY_NAME
}}}
Apache neu starten:
{{{#!vorlage Befehl
sudo service apache2 restart
}}}
== Push mit Authentifizierung ==
Um einzelnen Nutzern das Schreibrecht zu geben oder zu nehmen, können in der Datei '''/var/hg/repos/REPOSITORY_NAME/.hg/hgrc''' folgende Einträge verwendet werden:
{{{#!code ini
[web]
allow_push = peter, max
}}}
Allen das Pushen erlauben:
{{{#!code ini
[web]
allow_push = *
}}}
Einzelne Nutzer ausschließen:
{{{#!code ini
[web]
deny_push = ulli
}}}
== Informationen über das Repository ==
Um Informationen über ein Repository zu hinterlegen, öffnet man folgende Datei in einem Editor '''/var/hg/repos/REPOSITORY_NAME/.hg/hgrc'''
{{{#!code ini
[web]
contact = Max Mustermann # selbsterklärend. Nur reiner Text erlaubt.
description = Ganz Toll! # Beschreibung. HTML Elemente sind erlaubt.
allow_archive = gz, zip, bz2 # ermöglicht den Download als Archiv
}}}
Weitere Einstellmöglichkeiten findet man auf der [http://www.selenic.com/mercurial/hgrc.5.html Webseite] {en}.
{{{#!vorlage Hinweis
Hierbei handelt es sich um spezifische Einstellungen für das jeweilige Repository. Allgemeine Einstellungen die für alle Repositories gelten sollen werden in der '''hgweb.config''' hinterlegt.
}}}
= Repository verwenden =
Das Repository kann nun wie folgt verwendet werden:
{{{#!vorlage Befehl
hg clone http://mydomain.org/hg/REPOSITORY_NAME
}}}
Wenn man den lokalen Ordner anders benennen möchte, benutzt man folgenden Befehl:
{{{#!vorlage Befehl
hg clone http://mydomain.org/hg/REPOSITORY_NAME LOKALER_NAME
}}}
= Problembehebung =
== Probleme mit SSL ==
Falls es mit dem Pushen über [wikipedia:Transport_Layer_Security:SSL] nicht klappen sollte, kann man die SSL-Funktion auch ausschalten.
{{{#!code ini
[web]
push_ssl = false
}}}
= Links =
* [:Archiv/Mercurial:]
* [:Apache:]
#tag: Server, Versionsverwaltung, Apache