Git Zerbitzari Baten Muntaia

Post honen helburua garapenerako Git errepositorio zerbitzari bat martxan jartzea da. Horretarako Git, OpenSSH, Gitolite eta Gitweb tresnetaz baliatuko gara. Prozesu honetan OpenSSH eta Apache zerbitzariak dagoeneko martxan eta egoki konfiguraturik daudela aurreikusten da. Erabiliko dugun komando multzoa Ubuntu sistema batetara zuzendutakoak dira, beraz aldaketen beharra egon liteke beste linux sistemetara egokitzeko.

Git errepositorioa instalatu

Lehenik eta behin gure ubuntu sisteman Git tresna instalatuko dugu. Horretarako apt-get komandoaz baliatuko gara

1
sudo apt-get install git-core

Git erabiltzailea sortu eta konfiguratu

Git tresnarekin lan egingo duen erabiltzailea sortu eta konfiguratzea da hurrengo pausoa. Diseinatutako kautotze prozesuan erabiltzaile ugarirentzako sarbidea aurreikusten da. Lan hori ordea Gitolite tresnaren eskuetan utziko dugu. Erabiltzaile soil honen helburua SSH bidezko kautotze sistema arrunt eta segurua ahalbidetzea da.

1
2
3
4
5
6
7
8
sudo adduser \
    --system \
    --shell /bin/bash \
    --gecos 'Control de versiones' \
    --group \
    --disabled-password \
    --home /home/git \
    git
1
sudo passwd git

hurrengo urratsa erabiltzaileren home direktorioaren baimenak egokitzea izango da

1
sudo chmod o-rwx /home/git

emandako pausoak zuzenak izan direla egiaztatzeko erabiltzailearen kontuan kautotuko gara

1
su git

SSH sarbidea konfiguratu

Sortu berri dugun git erabiltzaileari SSH bidezko sarbidea gaituko diogu. Horretarako /etc/ssh/sshd_config fitxategian honako lerroa gehitu behar dugu (dagoeneko existitzen bada git testua gehitu besterik ez duzu)

1
AllowGroup git

Aldaketa honek git erabiltzailea SSH bidez bere pasahitza erabiliz sisteman kautotzea ahalbidetzen du. Gitolite tresna erabiltzeko ordea gako publiko bidezko kautotzea beharrezkoa da. Horretarako berriz ere sshd_config fitxategia editatu beharra dugu, dagokien  lerroei honako balioa esleituz:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

aldaketak amaitu ostean sshd zerbitzaria berrabiaratuko dugu

1
sudo service ssh restart

Zerbitzaria gako publikoak onartzeko prest dagoen arren, git erabiltzaileari dagozkion konfigurazioak gehitzea ezinbestekoa da. Erabiltzaile bakoitzak baimendutako gako publiko bat baino gehiago izan dezakeenez, azpi-erabiltzaile ugarik pasahitzik partekatu gabe batera lan egiteko aukera izango dute.

Lehenik beharrezko konfigurazio direktorio eta fitxategiak sortuko ditugu

1
2
3
4
5
sudo mkdir /home/git/.ssh
sudo touch /home/git/.ssh/authorized_keys
sudo chown -R git:git /home/git/.ssh
sudo chmod 700 /home/git/.ssh
sudo chmod 600 /home/git/.ssh/authorized_keys

direktorio edo fitxategi hauek dagoeneko sortuak dauden kasuan edukia txuritu eta baimen egokiak ezarri beharko zaizkie.

Hurrengo pausua RSA gako publiko berri bat sortzea da. Komando honek uneko direktorioan gako publiko eta pribatu parea sortuko du. Kasu honetan erabiltzaile gisara git-admin ezizena erabiliko dugu:

1
ssh-keygen -t rsa -b 2048 -C "git-admin@[zerbitzari-izena]"

sortutako fitxategiak honakoak izango dira:

  • id_rsa: Erabiltzailearen gako pribatua. Bezero makinatik konexioak egikaritzeko balioko duena (ezinbestekoa da gako hau pribatu mantentzea)
  • id_rsa.pub:  Erabiltzailearen gako publikoa. Zerbitzarian gordeta egongo den gakoaren zati partekagarria.

Behin gakoa sortuta zati pribatua bezero makinara kopiatuko dugu eta zati publikoa zerbitzarian.

(Kontuan izan pauso hauek ez dutela dagoeneko gako bidezko sarbidea onartzen, horretarako gitolite tresna konfiguratu beharko dugu).

Gitolite tresna

Gitolitek errepositorioen gaineko baimenak gestionatzeko aukera eskaintzen du. Lehen pausoa sisteman instalatzea izango da.

1
sudo apt-get install gitolite

Ondoren Gitolite-ren konfigurazio prozesuari ekingo diogu. Lehenik, baimenen gestiorako administratzaile bat sortuko dugu aurreko pausuan sortutako gako publikoa erabiliz.

1
2
3
4
5
6
7
8
sudo su git
cd
git clone git://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
echo "PATH=$HOME/bin:$PATH" > ~/.bashrc
source ~/.bashrc
gitolite setup -pk [sortutako-gako-fitxategia].pub

Gitweb errepositorio arakatzailea erabili nahi dugunez .gitolite.rc fitxategia editatu eta honako aldaketak egin beharko ditugu:

UMASK => 0027

Dagoeneko, konfigurazio prozesuak repositories izeneko direktorioa sortu du git erabiltzailearen home direktorioan. Bertan gorde eta kudeatu ahalko dira git errepositorio guztiak (administraziokoa barne).

Gitolite tresnak gitolite-admin errepositorioa erabiltzen du baimen kudeaketa egiteko. Hau da, errepositorio hori erabiltzen du konfigurazio fitxategi gisara. Bertan egindako push bakoitzeko, tresnak, egindako aldaketak irakurri eta beharrezko egokitzapenak egikarituko ditu.

Hurrengo pausua beraz, sortutako gako pribatua eta git bezero bat erabiliz administrazio errepositorioa gure makinan klonatzea da. Kontuan izan behar dugu, zerbitzarira konektatzen saiatzen hari garela arazorik suertzatzen bada, aurreko puntuak berrikusi beharko ditugula.

Errepositorioa deskargatuta bi direktorio aurkitu ahalko ditugu bertan:

  • conf: Gitoliteren konfigurazio fitxategia gordetzeko balio duena.
  • keydir: Erabiltzaileen gakoak gordetzeko balio duen direktorioa (administratzailearen gakoa dagoeneko bertan aurkituko duzu).

conf direktorioan aurkitzen den gitolite.conf fitxategia erabiliko dugu administrazio fitxategi gisara. Bertan egindako aldaketen push bat eginda automatikoki sortuko dira detektatutako erabiltzaile eta errepositorio berriak (erabiltzaile berrien gako publikoak keydir direktorioan gorde beharko dira izen berdineko fitxategietan).

Gitweb arakatzailea instalatu

Azken pausua gure zerbitzariari git errepositorioen web arakatzailea gehitzea da. Horretarako gitweb eta bere pakete laguntzaileak instalatu beharko ditugu.

1
sudo apt-get install highlight gitweb

Ondoren, arakatzailearen konfigurazioa editatuko ditugu errepositorioen kokalekua eta bestelako datuak zehazteko. Horretarako /etc/gitweb.conf fitxategia ireki eta honako sarrerak editatu behar dira:

$projectroot = "/home/git/repositories";
$projects_list = "/home/git/projects.list";
#Azken lerro hau gehitu
$feature{'highlight'}{'default'} = [1];

gitweb tresnari errepositorietara atzipena baimentzeko honako komandoak erabiliko ditugu

1
2
3
4
sudo usermod -a -G git www-data
sudo chmod g+r /home/git/projects.list
sudo chmod -R g+rx /home/git/repositories
sudo service apache2 restart

Azken pausoa test errepositorioa web arakatzailean publiko egitea da. Horretarako honako aldaketak egingo dizkiogu gitolite.conf fitxategiari (aldaketak indarrean jartzeko, etzazu ahaztu errepositorioaren commit eta push-a egitea).

repo testing
  RW+ = @all
  R = gitweb

Arakatzailea zuzen konfiguratu dela baieztatzeko zure nabigadorean http://[zure-domeinua]/gitweb helbidera atzitzea besterik ez zaigu falta.