[[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