Installare GitLab su Debian 7

Come promesso precedentemente, ecco una guida all'installazione di GitLab su Debian 7.

Cos'è Gitlab?

Detto in due parole GitLab è un clone open di GitHub, una piattaforma completa per l'hosting di repository git con funzionalità di bug tracking, gestione dei gruppi di lavoro, wiki ecc.
E' interamente scritto in Ruby è la versione viene rilasciata in un pacchetto "omnibus" che contiene al suo interno anche tutte le dipendenze necessarie al suo funzionamento, semplificando molto l'installazione.

Se è così semplice a che serve questa guida?

Giusta osservazione. Il pacchetto omnibus è decisamente facile da installare e configurare ma presenta a anche un grosso difetto, ovvero pretende di utilizzare una sua istanza del database server (PostgreSQL) e del server web (nginx). Questo potrebbe anche andare bene su un server "vergine" ma presenta parecchi problemi su un server dove ad esempio sono già configurati PostgreSQL e Apache, come nel mio caso.
Si rende pertanto necessario far sì che GitLab per usare i servizi già installati ed evitare che attivi i suoi.

Requisiti di sistema

Prima di partire un paio di considerazioni sui requisiti di sistema. Oltre ad un accesso root alla macchina per procedere con l'installazione GitLab andrà ad occupare circa 1Gb di spazio disco (portandosi comunque dietro tutte le dipendenze, compresi nginx e PostgreSQL) e, anche con un solo utente, occupare almeno 1Gb di RAM.

Installazione del pacchetto omnibus

Per prima cosa aggiungiamo il repository di GitLab ed installiamo il relativo pacchetto deb:

apt-get update
apt-get install curl openssh-server ca-certificates postfix
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash
apt-get install gitlab-ce

Creazione di un database per GitLab

Assumendo di avere già PostgreSQL installato procediamo a cambiare utente ed entrare sulla console di PostgreSQL:

su - postgres
psql

Dove andremo a creare un database per GitLab:

CREATE USER gitlab CREATEDB;
CREATE DATABASE gitlab OWNER gitlab;
\password gitlab
\q

Usciamo infine dalla shell dell'utente postgres:

exit

Configuriamo GitLab

Configuriamo quindi GitLab per utilizzare il database appena creato e disabilitiamo il webserver nginx:

nano /etc/gitlab/gitlab.rb

Andando a modificare le seguenti linee di configurazione:

  • L'URL dell'installazione di GitLab
external_url 'http://gitlab.example.com'
  • La directory in cui verranno salvati i backups
gitlab_rails['backup_path'] = "/backup/gitlab"
  • Il tempo di retention dei backup (2592000 secondi = 30 giorni)
gitlab_rails['backup_keep_time'] = 2592000
  • I parametri per la connessione al database precedentemente creato
gitlab_rails['db_encoding'] = "unicode"
gitlab_rails['db_database'] = "gitlab"
gitlab_rails['db_username'] = "gitlab"
gitlab_rails['db_password'] = "PaSsWoRd"
gitlab_rails['db_host'] = "127.0.0.1"
  • Disabilitiamo quindi l'istanza di PostgreSQL integrata in GitLab...
postgresql['enable'] = false
  • ...e quella di nginx
nginx['enable'] = false
  • Inoltre possiamo (nel mio caso si è reso necessario, esistendo già un utente di sistema chiamato "git") cambiare l'utenza di sistema che dovrà usare GitLab e la direcotry nella quale verranno salvati i repository git:
user['username'] = "gitlab"
user['group'] = "gitlab"
user['home'] = "/home/gitlab"
git_data_dir "/home/gitlab"

Linkiamo gli eseguibili di PostgreSQL

Come ultima fix, utilizzando una istanza di PostgreSQL diversa da quella integrata, dovremo anche andare a creare i symlink ai comandi psql e pg_dump affinché il backup venga eseguito correttamente:

ln -s /usr/bin/pg_dump /usr/bin/psql /opt/gitlab/bin/

Avvio di GitLab

La configurazione è completata, quello che dovremo fare ora sarà:

  • Compilare la configurazione (operazione che andrà ripetuta anche in futuro ogni volta che modificheremo la configurazione di GitLab)
gitlab-ctl reconfigure
  • Inizializzare il database
gitlab-rake gitlab:setup
  • Ed infine avviare i servizi di GitLab
gitlab-ctl restart

Apache Proxy

Ora, salvo abbiate ricevuto degli errori durante la configurazione o l'avvio GitLab è in esecuzione e risponderà localmente sulla porta 8080.
Quello che manca ancora è un proxy per renderlo raggiungibile da internet sulla porta 80.
Avendo deciso di disabilitare nginx andiamo quindi a configurare Apache creando un virtualhost che faccia da reverse proxy.

Per fare questo possiamo usare i file di esempio disponibili qui.

Conclusioni

Ora GitLab è installato e funzionante, potremo collegarci col browser sul dominio scelto in fase di installazione e fare login con utente root e password 5iveL!fe .

Il Backup

"Il backup è bello, in backup è buono, il backup ti fa dormire sonni tranquilli"

Il backup dei dati di GitLab è ovviamente un'operazione fondamentale. Per effettuarla possiamo utilizzare il relativo tool fornito da GitLab che produce in un colpo solo uno archivio contenente il backup completo dell'istanza di GitLab.

Il comando in questione è:

gitlab-rake gitlab:backup:create

Il file verrà salvato nella directory di backup specificata precedentemente nel file di configurazione ed avrà come nome: 1234567890_gitlab_backup.tar dove 1234567890 indica il timestamp UNIX del backup.

Per effettuare infine un restore è necessario ricaricare il backup scelto nella directory di backup di GitLab (ammesso non ci sia già) e dare il comando:

gitlab-rake gitlab:backup:restore BACKUP=1234567890

Dove 1234567890 identifica ovviamente il timestamp prente nel nome del file del backup da ripristinare.

ATTENZIONE: il restore SOVRASCRIVERA' per intero i dati di GitLab, non è possibile effettuare infatti un restore parziale di un solo repository con il tool di gitlab

Commenta il post

.

Attenzione: tutti i commenti sono soggetti a moderazione e pertanto non appariranno immediatamente.