onsdag 5 juni 2013

Mercurial-server och hgweb i Ubuntu Server

Jag installerade Mercurial Server på jobbet. En programvara för att administrera rättigheter och repon till Mercurial. När jag ändå hade det färskt tänkte jag passa på att posta det här.

Jag utgår från att man redan har en färdiginstallerad maskin med Ubuntu Server. Maskinen som jag installerade detta på körde Ubuntu Server 11, men proceduren borde vara precis samma på nyare versioner.

1. Börjar med att se till att alla paket är uppdaterade.
sudo apt-get update
sudo apt-get upgrade

2. Installera mercurial-server och apache2
sudo apt-get install mercurial-server apache2

3. Skapa hgweb.config
sudo nano /var/lib/mercurial-server/repos/hgweb.config

Lägg till följande text i filen:
[collections]
/var/lib/mercurial-server/repos/ = /var/lib/mercurial-server/repos/

4. Skapa index.cgi och folderstruktur
sudo mkdir /var/www/cgi-hg
sudo cp /usr/share/doc/mercurial-common/examples/hgweb.cgi /var/www/cgi-hg/index.cgi

5. Redigera index.cgi
sudo nano /var/www/cgi-hg/index.cgi

Ändra följande rad från:
config = "/path/to/repo/or/config"

till:
config = "/var/lib/mercurial-server/repos/hgweb.config"

6. Lägg till en root-användare för mercurial-server
Kopiera din publika SSH-nyckel till /etc/mercurial-server/keys/root/

Om du behöver skapa en SSH-nyckel kan detta göras med putty-keygen från Windows.
I unixoperativ kan man använda ssh-keygen kommandot.

Efter att SSH-nyckeln blivit tillagd behöver mercurial-server uppdateras för att hitta nya användare.
sudo -u hg /usr/share/mercurial-server/refresh-auth

7. Lägg till fler användare
Börja med att klona ut hgadmin-mappen från servern
clone ssh://hg@your-server/hgadmin

I din utklonade mapp ska du nu skapa följande undermappar:
keys
keys/root
keys/users

För att skapa en användare gör du en ny mapp med användarens namn, du lägger sedan hans SSH-nyckel i denna mappen. Slutligen lägger du detta i antingen root eller users och pushar tillbaka ändringarna.

Exempelvis
keys/root/enAdmin/publikNyckel
keys/users/SvenH/publikNyckel

Om du behöver ta bort en användare så tar du bort hans mapp och pushar in ändringen.

8. Konfigurera Apache

Vi börjar med att skapa en virtuell host åt Apache för att peka ut mercurial-repon.

sudo nano /etc/apache2/sites-available/default
Lägg till följande i botten av filen men ovanför taggen.
Alias /hg /var/www/cgi-hg

DirectoryIndex index.cgi
AddHandler cgi-script .cgi
Options ExecCGI
Order allow,deny
Allow from all


Slutligen, ge Apache access till hg-mapparna
sudo chown www-data:www-data -R /var/lib/mercurial-server/repos

Källor
Mercurial-server http://dev.lshift.net/paul/mercurial-server/docbook.html
Apache Configuration http://redline6561.livejournal.com/362393.html

Inga kommentarer:

Skicka en kommentar