Vlastny GIT server: 2. cast

V predchadzajucej casti sme si zabezpecili manazment GIT repozitarov vdaka gitolite. V tomto diele nastavime webserver — gitlist je lightweight nahrada za gitorious alebo github. Zobrazuje repozitare, ich obsah, commity, jednoduche statistiky a ma v sebe este par dalsich drobnosti.

Gitlist je PHP aplikacia. Na serveri mi bezi nginx spolu s php-fpm, takze konfiguraciu budem ukazovat pre tietu sluzby.

Stiahnutie gitlistu a zavislosti

Predpokladam, ze nginx spolu s php-fpm je uz nastaveny. Ak nie, tak navodov na googli je hojne. Naklonujme si gitlist:

git clone https://github.com/klaussilveira/gitlist.git
#gitlist je moderna aplikacia, zavislosti projektu riesi composer, da sa pouzit na sposob ruby gems
curl -s http://getcomposer.org/installer | php
#nainstaluje zavislosti projektu do adresara vendor
php composer.phar install

Nginx

Tu je moj konfigurak:

server {
    server_name ~^git.moja_masina.tld$;
    access_log /var/log/nginx/git.access.log;
    error_log /var/log/nginx/git.error.log;

    root /srv/http/git/;
    index index.php;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ~* ^/index.php.*$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include /etc/nginx/fastcgi_params;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    }

    location / {
        try_files $uri @gitlist;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        add_header Vary "Accept-Encoding";
        expires max;
        try_files $uri @gitlist;
        tcp_nodelay off;
        tcp_nopush on;
    }

#   location ~* \.(git|svn|patch|htaccess|log|route|plist|inc|json|pl|po|sh|ini|sample|kdev4)$ {
#       deny all;
#   }

    location @gitlist {
        rewrite ^/.*$ /index.php;
    }
 }

Nastavenia pristupu gitlistu ku repozitarom

Nech nginx daemon bezi pod usero, ktory patri do skupiny http. Nech repozitare su ulozene v /home/git/repositories. Logicky je nutne zabezpecit citanie suborov v tomto adresari. Zmenme vlastnikov skupin adresara /home/git a /home/git/repositories na http a nastavme prava na citanie.

chgrp http /home/git
chmod g=rx /home/git
chgrp http -R /home/git/repositories
chmod g=rX -R /home/git/repositories # nastavim atribut x len pre adresare

Tu sa treba zamysliet nad buducnostou. Ked gitolite vytvori nove repozitare, mali by byt citatelne http daemonom. Takze spravme toto:

chmod g+s -R /home/git/repositories #nove subory budu dedit vlastnika skupiny

Pre dokonalost upravme /home/git/.gitolite.rc; hodnotu “UMASK” zmenme na 0027. Vlastnikovi suborov ponechame povodne prava, skupina bude mat atributy r-s a ostatni nic.

Nastavenia gitlistu

Gitlist sa nastavuje cez subor config.ini. Skopirujeme teda config.ini-example do config.ini a rozumne ho upravme.

Polozka “repositories” ukazuje na adresar, kde su vsetky repozitare. Ak si, drahy citatel, sledoval prvy diel navodu, tak cesta je “/home/git/repositories/”.

Upravme aj hidden[] a priradme mu tuto hodnotu: “/home/git/repositories/gitolite-admin.git”.

Polozka debug zapina alebo vypina cachovanie, takze pri hackovani aplikacie treba mat debug nastaveny na false, inak je true rozumna volba.

A to je vlastne vsetko. Teraz by gitlist mal bezat ako po masle. Bezi aj na mojom serveri, tu.

Trochu som sa hral s kodom aplikacie, a pridal link na hlavnej stranke kazdeho repozitara pre read-only pristup, podobne to ma aj github. Na to treba git-daemon, o tom bolo tiez pisane v prvom diele. Pozri commit.

Reklamy

Pridaj komentár

Zadajte svoje údaje, alebo kliknite na ikonu pre prihlásenie:

WordPress.com Logo

Na komentovanie používate váš WordPress.com účet. Odhlásiť sa / Zmeniť )

Twitter picture

Na komentovanie používate váš Twitter účet. Odhlásiť sa / Zmeniť )

Facebook photo

Na komentovanie používate váš Facebook účet. Odhlásiť sa / Zmeniť )

Google+ photo

Na komentovanie používate váš Google+ účet. Odhlásiť sa / Zmeniť )

Connecting to %s