Installare e configurare un server GIT
Posted by admin | Posted in GIT, Versioning | Posted on 30-05-2011
Tag:git, server, Ubuntu, versioning
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-admin05 members = USER1@PC106 07 [repo gitosis-admin]08 gitweb = no09 daemon = no10 11 [group NOME_REPO_team]12 writable = NOME_REPO13 members = USER1@PC1 USER2@PC214 15 16 [repo NOME_REPO]17 owner = Eugenio Minardi18 description = NOME_REPO Project + descrizione19 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 root20 # concurs with nginx's one21 #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.

