Instalace git serveru na ubuntu
Věřím, že většina z nás se už v praxi setkala s nějakým systémem pro správu repozitářů. Takovéto systémy jsou velmi výhodné jak pro týmy lidí pracujících dohromady, tak i pro jednotlivce. Získáte jednodouchou možnost vrátit se k dřívejším verzím svého programu (pokud třeba něco pokazíte, je mnohdy lepší vrátit se zpět, než napravovat vzniklé chyby). Já jsem zvolil git a díky vlastnímu linux serveru si mohu vytvářet vlastní repozitáře, které jsou umístěny mimo můj počítač, tudíž je to i jakási záloha mé práce.
V tomto článku nastítím, jak probíhá instalace git serveru a vytváření vlastních repozitářů.
Instalace git serveru
Nejprve na linuxovém serveru nainstalujeme gitosis – software pro hostování git repozitářů. K tomu budeme potřebovat git a python, abychom mohli zdrojové kódy pomocí gitu stáhnout a pomocí pythonu je nainstalovat.
(Git nainstalujeme příkazem: sudo apt-get install git-core)
Stáhneme tedy nejnovější verzi gitosis
git clone git://eagain.net/gitosis.git
a nainstalujeme jej:
cd gitosis sudo python setup.py install
Pokud při instalaci dostaneme chybu:
Traceback (most recent call last): File "setup.py", line 2, in from setuptools import setup, find_packages ImportError: No module named setuptools
je třeba doinstalovat ještě python setuptools: sudo apt-get install python-setuptools
Vytvoření uživatele git
Nyní je potřeba vytvořit uživatele, který se o repozitáře bude starat. Přidáme tedy uživatele git, který bude mít domovský adresář ve /var/git.
sudo adduser \
--system \
--shell /bin/sh \
--gecos 'git version control' \
--group \
--disabled-password \
--home /var/git \
gitZinicializování uložiště pro repozitáře
Pro read-write přístup do repozitářů přes ssh potřebujeme ověření pomocí RSA klíče. Vytvoříme si tedy svůj klíč na domácím počítači a nahrajeme jej na server, kde běží gitosis. Pomocí tohoto klíče následně zinicializujeme základní uložiště pro naše budoucí repozitáře.
ssh-keygen -t rsa
Klíč se vytvoří v adresáři ~/.ssh/id_rsa.pub, zkopírujeme jej (ale musí zůstat i v .ssh/) například pomocí scp na git server a uložíme jako /tmp/id_rsa.pub
A zinicializujeme repozitáře:
sudo -H -u git gitosis-init
při úspěchu dostaneme výpis podobný následujícímu:
Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/ Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/
Nyní je vše připraveno a můžeme začít přidávat nové repozitáře a k nim jejich uživatele.
Ještě se ujistíme, že post-update hook má práva na spouštění, pokud ne, přidáme tyto práva příkazem:
sudo chmod a+x /var/git/repositories/gitosis-admin.git/hooks/post-update
Vytváření vlastních repozitářů
Nyní se můžeme odhlásit z SSH přistupu a náš repozitářový server ovládat vzdáleně. Jediné, co je potřeba, je stáhnout gitosis-admin repozitář, který se vytvořil při inicializaci. Předpokládejme, že náš server běží na IP adrese 192.168.0.100:
git clone git@192.168.0.100:gitosis-admin.git
V repozitáři je soubor gitosis.conf sloužící ke konfiguraci repozitářů, uživatelů a spousty dalšího. A složka keydir, kde jsou rsa klíče pro uživatele mající přístup k repozitářům. V současné době je zde jediný klíč a to ten, který jsme o pár řádků výše vygenerovali.
Pro přidání repozitáře si vytvoříme novou skupinu (foo), definujeme názvy repozitářů patřící do skupiny (položka writable) a uživatele, mající přístup ke všem repozitářům této skupiny (members).
[group foo] writable = foorepo members = ibru
Nyní je náš git server připraven pro repozitář s názvem foorepo. Vytvoříme tedy na našem lokálním počítači složku nebo můžeme přejít do složky s existujícími zdrojovými (nebo jakýmikoliv jinými) kódy. Nový repozitář vytvoříme sérií přikazů:
cd path/to/sources git init git remote add origin git@192.168.0.100:foorepo.git # uděláme úpravy git add . git commit -a -m "inicializace repozitare" git push origin master:refs/heads/master
Nyní je repozitář zcela hotov a můžeme k němu přistoupit pomocí
git clone git@192.168.0.100:foorepo.gitPřidávání uživatelů
Přidat nové uživatele je velmi jednoduché, stačí v konfiguračním souboru pro danou skupinu přidat jméno do řádku s “members = …” a do adresáře keydir přidat klíč vygenerovaný na počítači nového uživatele. Název souboru s klíčem je <jméno>.pub. Uživatel však svůj vygenerovaný klíč musí nechat i ve složce ~/.ssh/.
Můžeme tedy například přidat uživatele petr, který bude mít také právo přistupovat k repozitářům ve skupině foo:
[group foo] writable = foorepo members = ibru petr
a zkopírujeme klíč petr.pub do adresáře keydir
Nyní všechny změny commitneme na server:
git add keydir/petr.pub git commit -a -m "pridani uzivatele petr do skupiny foo" git push
Od této chvíle by užvatel petr měl být schopen ze svého počítače stáhnout repozitáře pomocí:
git clone git@192.168.0.100:foorepo.gitDalší užitečná nastavení
V git serveru je možné nastavit ještě spoustu dalších možností. Jako například povolení read-only stáhnutí repozitářů i uživatelům, kteří nemají své rsa klíče na serveru. Případně webové rozhraní pro repozitáře. Toto nastavení už můj článek nezahrnuje, pro zájemce mohu dodporučit následující zdroje:
- gitosis readme – sekce git-daemon a gitweb
- Hosting Git repositories, The Easy (and Secure) Way – zde jsem čerpal já hlavní inspiraci pro tento článek
You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.
Comments are closed.