Es sollen mehrere Repositories erstellt werden die für bestimmte Active-Directory-Benutzer über einen Webserver zugänglich sein sollen.
zuerst muss der Rechner mit fester IP konfiguriert werden.
Die DNS-Auflösung im Netz muss stimmen. Evt. muss der Rechner manuell auf dem DNS-Server eingetragen werden.
Die Uhrzeit muss per ntpd konfiguriert werden. siehe dazu ntp
Die Softwarepakete mercurial, apache2, libapache2-authenntlm-perl müssen installiert werden:
apt-get install mercurial apache2 libapache2-authenntlm-perl
Es muss ein Datenverzeichnis für Mercurial bestimmt werden (z.B. /daten/hg):
mkdir -p /daten/hg/projekt1
Jetzt wird das erste Repository erstellt:
cd /daten/hg/projekt1 ; hg init
jetzt wird eine Testdatei im repo projekt1 erstellt:
echo "meine erste mercurialdatei" >blabla.txt
hg add blabla.txt
hg commit -Am "first commit" -u benutzername<
jetzt wird das Projekt1-Repo zweimal geklont:
cd /daten/hg
hg clone projekt1 projekt2
hg clone projekt1 projekt3
Jetzt wird die Apache-Konfigurationsdatei /etc/apache2/conf/hg.conf
erstellt und dann wie folgt konfiguriert:
der eigene NT-Domänenname und mindesten ein Domänencontroller müssen hier eigetragen werden! ( rote Hervorhebungen )
- hg.conf
##apacheconfigdatei für mercurial / richard@borwinius.de
ScriptAlias /daten/hg /daten/hg/hgweb.cgi
<Directory /daten/hg>
Options ExecCGI FollowSymLinks
PerlAuthenHandler Apache2::AuthenNTLM
AuthType ntlm,basic
AuthName "Mercurial Repository erfordert eine Anmeldung"
require valid-user
# oder: require user willi walter paul richard
PerlAddVar ntdomain "MyNTDOMAIN mypdc mybdc"
PerlAddVar defaultdomain MyNTDOMAIN
PerlSetVar splitdomainprefix 1
Order allow,deny
Allow from all
</Directory>
jetzt wird die Datei /usr/share/doc/mercurial/examples/hgweb.cgi
in das Repo-Verzeichnis kopiert.
cp /usr/share/doc/mercurial/examples/hgweb.cgi /daten/hg/
Diese Datei (/daten/hg/hgweb.cgi
) wird jetzt wie folgt editiert:
- hgweb.cgi
#!/usr/bin/env python
#
# An example CGI script to use hgweb, edit as necessary
# adjust python path if not a system-wide install:
#import sys
#sys.path.insert(0, "/path/to/python/lib")
config = "/daten/hg/hgweb.config"
# enable importing on demand to reduce startup time
from mercurial import demandimport; demandimport.enable()
# Uncomment to send python tracebacks to the browser if an error occurs:
#import cgitb
#cgitb.enable()
# If you'd like to serve pages with UTF-8 instead of your default
# locale charset, you can do so by uncommenting the following lines.
# Note that this will cause your .hgrc files to be interpreted in
# UTF-8 and all your repo files to be displayed using UTF-8.
#
#import os
#os.environ["HGENCODING"] = "UTF-8"
from mercurial.hgweb.hgweb_mod import hgweb
import mercurial.hgweb.wsgicgi as wsgicgi
application = hgweb(config)
wsgicgi.launch(application)
Jetzt wird noch die Konfigurationsdatei hgweb.config
erstellt und konfiguriert.
cd /daten/hg
echo "[paths]" >> hgweb.config
echo "/daten/hg/ = /daten/hg/*" >> hgweb.config
Dem Apachebenutzer www-data muss noch der Zugriff auf das Repo-Verzeichnis erlaubt werden:
chown -R www-data:www-data /daten/hg
Jetzt müssen die Dateien hgweb.c*
für den Apache ausführbar gemacht werden:
chmod 750 /daten/hg/hgweb.c*
Zuletzt muss der Apachedienst neu gestartet werden:
/etc/init.d/apache2 restart
Jetzt kann vom Webserver auf einem anderen Mercurialclient das repo heruntergeladen werden:
hg clone http://meinhgserver/hg/projekt1 meinCode
user: meinNTAccount
password: meinNTPasswort
Auf dem Client wurde jetzt das Verzeichnis „meinCode“ mit der Datei „blabla.txt“ erstellt.
Um auch Dateien oder Änderungen auf den Server hochladen (pushen) zu können,
muss auf dem Server die Datei /daten/hg/projekt1/.hg/hgrc
erstellt und wie folgt konfiguriert werden:
- hgrc
[web]
allow_push = *
# oder allow_push user1 user2
# push_ssl = true
# description = "mein erstes Projekt"
# contact = ich@irgendwo.de
# name = " wichtiges Projekt1"
# allow_read = user1 user2
# style = gitweb
Danach sollte der apache nochmal neu reloaded werden.
apachectl graceful
fertig.
Zugriff ist jetzt möglich über: http://meinserver/hg
siehe auch:
Mercurial auf einem Debian mit PAM-Authentifizierung mit HTTP/HTTPS-Zugriff installieren
Mercurial