Featured Post

Selezione fogli di stile in base al browser – Commenti Condizion

Tra i metodi differenti esistenti per caricare un foglio di stile diverso a seconda del browser, possiamo utilizzare uno strumento offerto da Microsoft Internet Explorer, cioè, i commenti condizionali. I commenti condizionali sono porzioni di codice HTML definite con la sintassi di commento HTML,...

Read More

Installare e configurare un server GIT

Posted by admin | Posted in GIT, Versioning | Posted on 30-05-2011

Tag:, , ,

0

Sistema Operativo : UBUNTU

Installazione di git
Per installare git utilizzare:

1
apt-get install git-core

Installazione di gitosis
gitosis è che lo strumento che permette la gestione e configurazione dei repository remoti. Per l’installazione si procede con aptitude:

1
apt-get install gitosis

Ora è necessario stabilire un ordine per i progetti. Per cui si procede creando un utente git con home folder appunto nella cartella /home/git per creare l’utente eseguire il seguente comando:

1
sudo adduser \ 
2
     --system \ 
3
     --shell /bin/sh \ 
4
     --gecos 'git version control' \ 
5
     --group \ 
6
     --disabled-password \ 
7
     --home /home/git \ 
8
     git

Anche l’uso del copia ed incolla è ammissibile, dato che le linee sono correttamente separate.

Fino ad ora si è lavorato sulla macchina server, è ora necessario trasferire in qualche modo la chiave rsa del client in una cartella temporanea del server. Per generare la chiave sul client si usa:

1
ssh-keygen -t rsa

La coppia di chiavi viene creata in locale, nella cartella home all’interno di .ssh/ il file che interessa a noi è id_rsa.pub, la chiave pubblica.

Bisogna ora copiare in qualche modo il file sul server all’interno della cartella /tmp in modo da poter eseguire sul server il seguente:

1
sudo -H -u git gitosis-init < /tmp/id_rsa.pub

Questo comando crea un repository git utilizzato dall’utente possessore della chiave per poter configurare gitosis da remoto. Tutte le configurazioni d’ora in poi verranno trattate come un repo di git.

Per correttezza è necessaria la modifica di alcuni permessi nel caso in cui non fossero già correttamente impostati:

1
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

Ora possiamo proseguire dalla macchina locale, proprietaria della chiave pubblica che abbiamo usato. Cloniamo il repository per la configurazione:

1
git clone git@NOME_SERVER:gitosis-admin.git

Tutte le configurazioni avverranno d’ora in poi in locale, si modifica il repository locale e si effettua il push verso il server.

Per aggiungere utenti è necessario raccogliere le loro chiavi all’interno della cartella apposita, i nomi del file devono essere composti cosi NOME_UTENTE@NOME_COMPUTER.pub e il nome utente in essi contenuto deve coincidere sia coll’effettivo nome utente che con il nome del file.

Un esempio di file di configurazione gitosis.conf è il seguente:

01
[gitosis]
02
 
03
[group gitosis-admin]
04
writable = gitosis-admin
05
members = USER1@PC1
06
 
07
[repo gitosis-admin]
08
gitweb = no
09
daemon = no
10
 
11
[group NOME_REPO_team]
12
writable = NOME_REPO
13
members = USER1@PC1 USER2@PC2
14
 
15
 
16
[repo NOME_REPO]
17
owner = Eugenio Minardi
18
description = NOME_REPO Project + descrizione
19
gitweb = yes

Ora bisogna effettuare il push del repo per rendere effettive le configurazioni.

1
git push

Installare NGINX

Per installare NGINX lanciare

1
apt-get install nginx

per attivare il supporto a php è necessario installare tutti i pacchetti di php, inclusi i cgi:

1
apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Successivamente bisogna editare il file php.ini

1
vi /etc/php5/cgi/php.ini

e modificare/aggiungere la riga cgi.fix_pathinfo = 1

1
cgi.fix_pathinfo = 1

Dato che non c’è alcun supporto standalone per FastCGI/Php su ubuntu, è necessario installare LightHTTPd

1
apt-get install lighthttpd

del quale useremo solo il servizio che ci serve, per cui se non ci interessa avere il server completo togliamolo dall’esecuzione automatica:

1
update-rc.d -f lighthttpd remove

Se nginx era già in esecuzione, al punto precedente, si otteneva un errore, in caso tutto fosse ok è allora necessario terminare l’ascolto del server:

1
/etc/init.d/lighthttpd stop

Per potere lanciare il servizio che ci serve ad ogni avvio è necessario modificare il seguente:

1
vi /etc/rc.local

Aggiungendo prima dell’exit il seguente comando

1
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

Configurare NGINX
Un file di esempio da aggiungere in sites è il seguente, ovvero il file per poter eseguire git-php

01
02
server {
03
    listen               80;
04
    server_name     SERVER_NAME;
05
    root                /var/www/git;
06
    index               index.php;
07
 
08
        location ~ \.php$ {
09
 
10
                auth_basic            "Restricted";
11
                auth_basic_user_file  /etc/nginx/htpasswd;
12
 
13
                fastcgi_pass   127.0.0.1:9000;
14
                fastcgi_index  index.php;
15
                fastcgi_param  SCRIPT_FILENAME  /var/www/git$fastcgi_script_name;
16
                include        fastcgi_params;
17
        }
18
 
19
        # deny access to .htaccess files, if Apache's document root
20
        # concurs with nginx's one
21
        #
22
        location ~ /\.ht {
23
                deny  all;
24
        }
25
 
26
}
27

Dato che ho selezionato auth_basic, è necessario creare un file di password all’interno di /etc/nginx o dove è stato impostato nel file di configurazione.

Se il file non esiste è necessarlo inizializzarlo con il primo utente:

1
htpasswd -c htpasswd NOME_UTENTE

La password viene richiesta da bash. Per gli utenti successivi invece:

1
htpasswd -b htpasswd NOME_UTENTE PASSWORD_UTENTE

GIT-PHP
L’ultima cosa che rimane da fare è copiare git-php nella cartella /var/www/git e modificare il file di configurazione di modo che punti alla cartella dei repository /home/git/repositories

Il modo migliore per copiare i file è l’uso di git

1
git clone https://github.com/tpruvot/GitPHP git

Il precedente ovviamente lanciato da /var/www

Il sistema è ora pronto ad ospitare tutti i vostri repository.