Gitlab è un'applicazione di gestione del repository git basata sul Web scritta su Ruby. È simile a GitHub e include funzionalità come un wiki del progetto e un sistema di rilevamento dei problemi. Il progetto Gitlab è stato avviato da Dmitriy Zaporozhets e il software è utilizzato da oltre 100.000 aziende tecnologiche tra cui IBM, StackExchange, NASA, Alibaba, Red Hat, ecc. Gitlab è una delle migliori soluzioni per creare il proprio server git.
Gitlab è supportato dalle principali distribuzioni Linux come Ubuntu, Debian e CentOS. Gitlab fornisce un pacchetto .deb per Debian/Ubuntu e pacchetti .rpm per Rhel e CentOS. Il pacchetto contiene tutte le dipendenze tra cui Ruby, Redis, Nginx, Unicorn e PostgreSQL. Gitlab è disponibile in 2 versioni, Community Edition (Gitlab CE) ed Enterprise Edition (Gitlab EE). Se desideri creare il tuo server git, molto probabilmente l'edizione CE gratuita offrirà tutte le funzionalità di cui hai bisogno.
In questo tutorial, ti guiderò passo dopo passo attraverso l'installazione di Gitlab CE con PostgreSQL come sistema di database e Nginx come server web su Ubuntu 15.04. Useremo Ruby versione 2.x.x, gitlab versione stabile 8.x.
Prerequisiti
- Ubuntu 15.04 - 64 bit.
- CPU 2 Core:consigliato dal sito gitlab .
- 2 GB RAM/Memoria - consigliato dal sito gitlab .
- Privilegi di root.
Passaggio 1 - Aggiorna il sistema Linux
Prima di installare le dipendenze Gitlab, recuperiamo gli ultimi aggiornamenti dal repository di Ubuntu. Accedi al server Ubuntu con accesso SSH, diventa utente root e quindi aggiorna i repository.
sudo su
apt-get update
Passaggio 2:installazione delle dipendenze Gitlab
Gitlab ha molte dipendenze software come un server redis, git-core, nodejs e postfix per inviare notifiche e-mail. Li installerò con un singolo comando apt:
sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate python-docutils pkg-config cmake nodejs git-core postfix
Nota:durante installazione postfix, seleziona "sito internet" e poi premi invio per confermare il nome host.
Se tutti i pacchetti sono installati, controlla la versione di git e assicurati che la versione di git sia 1.7.xo superiore.
git --version
git version 2.1.4
Passaggio 3:installa Ruby and Go
Gitlab richiede una versione Ruby 2.x o successiva. In questo tutorial utilizzeremo la versione 2.7 di Ruby. In questa fase, dobbiamo installare Ruby manualmente (dal sorgente). Se hai già installato ruby sul tuo sistema, rimuovilo con il comando seguente:
apt-get remove ruby -y
Successivamente, installeremo Ruby manualmente. Crea una nuova directory per i file di origine di Ruby:
mkdir -p /tmp/ruby && cd /tmp/ruby
Scarica il sorgente di ruby con il comando curl:
curl -O --progress https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.gz
Ora verifica ed estrai ruby.tar.gz, quindi entra nella directory di ruby:
echo 'e2e195a4a58133e3ad33b955c829bb536fa3c075 ruby-2.1.7.tar.gz' | shasum -c - && \
tar xzf ruby-2.1.7.tar.gz && \
cd ruby-2.1.7
Compila e installa Ruby:
./configure --disable-install-rdoc --prefix=/usr/local
make
make install
Come passaggio successivo, dobbiamo installare Go. Da gitlab 8.0, la richiesta git HTTP è gestita da gitlab-workhorse che è scritto in Go. Per installare gitlab-workhorse, abbiamo bisogno del compilatore go, scaricalo e installalo.
Crea una nuova directory per Go:
mkdir -p /tmp/go && cd /tmp/go
Scarica Go - usiamo la versione a 64 bit:
curl -O --progress https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz
Verificalo ed estrailo nella directory "/usr/local/":
echo '46eecd290d8803887dec718c691cc243f2175fe0 go1.5.1.linux-amd64.tar.gz' | shasum -c - && \
sudo tar -C /usr/local -xzf go1.5.1.linux-amd64.tar.gz
Ora crea un collegamento simbolico per Vai nella directory bin:
sudo ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/
Ora abbiamo installato Ruby and Go.
Fase 4:crea un nuovo utente Linux e configura il database PostgreSQL
In questo passaggio, creeremo un nuovo utente del sistema Linux chiamato "git" con la home directory "/home/git". Gitlab verrà eseguito come utente git in seguito.
Crea un nuovo utente git con il comando adduser:
sudo adduser --disabled-login --gecos 'GitLab' git
Ora configuriamo il database per gitlab. Gitlab supporta MySQL e PostgreSQL, in questo tutorial utilizzeremo il tipo di database consigliato PostGreSQL.
Installa PostgreSQL con il comando apt di seguito:
sudo apt-get install -y postgresql postgresql-client libpq-dev
Una volta terminato, accedi a PostgreSQL e crea un nuovo ruolo/utente chiamato "git " per gitlab:
sudo -u postgres psql -d template1
CREATE USER git CREATEDB;
Quindi crea un nuovo database per gitlab chiamato "gitlabhq_production " e concedi al database git utente/ruolo:
CREATE DATABASE gitlabhq_production OWNER git;
Ora esci per la shell postgresql e testa il nuovo ruolo/utente con il database che abbiamo creato:
\q
sudo -u git -H psql -d gitlabhq_production
È stato creato un nuovo utente di sistema chiamato "git".
È stato creato anche il nuovo ruolo/utente "git" per psotgreSQL che è stato concesso al database gitlab "gitlabhq_production".
Passaggio 5:configura il server Redis
Prima di modificare il file di configurazione di redis nella directory "/etc/redis", creeremo una copia di backup con il nome redis.conf.original.
cd /etc/redis/
cp redis.conf redis.conf.original
Quindi modifica il file "redis.conf" con l'editor vim:
vim redis.conf
Vai alla riga 45 e modifica il valore in 0 , perché vogliamo che Redis ascolti solo su un socket unix e non su una porta:
Listen 0
Quindi vai alla fine del file e aggiungi un socket redis e l'autorizzazione per esso:
unixsocket /var/run/redis/redis.sock
unixsocketperm 777
Salva il file ed esci.
Quindi, crea una nuova directory per il socket redis nella directory "/var/run" e modifica il proprietario e le autorizzazioni della directory:
mkdir -p /var/run/redis
chown redis:redis /var/run/redis
chmod 755 /var/run/redis
Vai alla directory socket redis ed esegui il comando seguente:
cd /var/run/redis
if [ -d /etc/tmpfiles.d ]; then
echo 'd /var/run/redis 0755 redis redis 10d -' | sudo tee -a /etc/tmpfiles.d/redis.conf
fi
Se tutto è fatto, riavvia il server redis e aggiungi l'utente "git" al gruppo "redis":
sudo service redis-server restart
sudo usermod -aG redis git
Passaggio 6:installa GitLab
Vai alla directory "/home/git" e scarica gitlab dal suo repository GIT:
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 8-2-stable gitlab
Nota:
sudo -u git -H clone command =eseguiamo il comando "clone" come utente "git".
- Configura GitLab
Vai alla directory gitlab per configurare gitlab:
cd /home/git/gitlab
Copia l'esempio del file di configurazione di gitlab gitlab.yml.example in gitlab.yml nella directory "config":
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
Nella directory gitlab, cambia il proprietario delle sottodirectory "log e tmp" nell'utente git:
sudo chown -R git {log,tmp}
Quindi cambia i permessi per le altre directory in modo che gitlab (l'utente git) possa scriverci:
mkdir -p public/uploads/
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX {tmp,tmp/pids,tmp/sockets,builds,shared/artifacts}
sudo chmod -R 0750 public/uploads
Copia gli esempi delle configurazioni di attacco Unicorn e Rack:
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
Ora dobbiamo configurare le impostazioni globali per l'utente git con il comando git di seguito:
sudo -u git -H git config --global core.autocrlf input
E dobbiamo configurare la connessione redis copiando il file "resque.yml" nella directory di configurazione, quindi modificarlo con vim per cambiare la configurazione di redis, usare il socket unix mentre abbiamo configurato redis per l'ascolto su un socket:
sudo -u git -H cp config/resque.yml.example config/resque.yml
- Configurazione database
Il passaggio successivo è configurare le impostazioni del database GitLab, utilizziamo postgreSQL per il nostro database. Copia il file di configurazione e cambia i permessi:
sudo -u git -H cp config/database.yml.postgresql config/database.yml
sudo -u git -H chmod o-rwx config/database.yml
- Installa le gemme
sudo gem install bundler
sudo -u git -H bundle install --deployment --without development test mysql aws kerberos
Attendi fino al termine dei comandi.
- Installa Gitlab-shell
Gitlab-shell consente l'accesso SSH e la gestione del repository per Gitlab. Utilizzeremo la configurazione predefinita, quindi non è necessario modificarla. Esegui il comando seguente per installare gitlab-shell:
sudo -u git -H bundle exec rake gitlab:shell:install[v2.6.8] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production
REDIS_URL =assicurati di utilizzare unix socket per la configurazione redis nell'ambiente di produzione.
- Installa gitlab-workhorse
Gitlab-workhorse è un piccolo demone per gestire il traffico HTTP Git da unicorn, codificato in Go. Clona e installalo:
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
cd gitlab-workhorse
sudo -u git -H git checkout 0.4.2
sudo -u git -H make
- Inizializza il database e attiva le funzionalità di gitlab
Vai alla directory di installazione di gitlab ed esegui il comando seguente:
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
digita "sì" per creare le tabelle.
Il risultato sarà un account gitlab con nome utente "root " e password "5iveL!fe ".
Passaggio 7:configurare lo script di inizializzazione
Copia gitlab init script dalla directory di installazione di gitlab e aggiungi gitlab per iniziare all'avvio con il comando update-rc.d:
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo update-rc.d gitlab defaults 21
Quindi copia la configurazione di gitlab logrotate per la gestione dei log:
sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
E controlla lo stato della domanda e compila le risorse:
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
Se non ci sono errori, avvia gitlab con:
/etc/init.d/gitlab start
Fase 8 - Installa e configura Nginx
Utilizzeremo Nginx come server Web front-end per gestire le richieste del browser. Installalo semplicemente con questo comando apt:
apt-get install nginx -y
Copia la configurazione dell'host virtuale Nginx dalla directory gitlab e rimuovi l'host virtuale predefinito Nginx predefinito:
sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
sudo rm /etc/nginx/sites-enabled/default
Modifica il file di configurazione con vim:
sudo vim /etc/nginx/sites-available/gitlab
Modifica il valore delle righe Listen e ServerName nella sezione HTTP:
Listen *:80; #Port Default
#Listen 0.0.0.0:80; #comment one of this
ServerName my.gitlab.me; #Gitlab FQDN/Domain
Salva ed esci.
Attiva gitlab virtualhost, avvia nginx e riavvia gitlab:
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
service nginx start
/etc/init.d/gitlab restart
Ora puoi accedere a gitlab con il tuo browser su my.gitlab.me (il nome host che hai scelto per il tuo server) e accedi con il nome utente predefinito "root " e password "5iveL!fe ".
Per prima cosa dovresti sostituire la password predefinita di gitlab con la tua password.
Gitlab 8 con PostgreSQL e Nginx su Ubuntu 15.04 è ora installato correttamente.
Nota :
Se si verifica un errore, ad esempio "502 gateway errato", risolverlo aumentando il timeout dell'unicorno o aggiornando l'hardware. Vai alla directory di installazione di gitlab e modifica il file unicorn.rb con vim:
sudo -u git -H vim config/unicorn.rb
Scopri di più sulla risoluzione dei problemi di Gitlab qui https://github.com/gitlabhq/gitlab-public-wiki/wiki/Trouble-Shooting-Guide.
Conclusione
Gitlab è un software di gestione del repository git open source scritto in Ruby. È una delle migliori soluzioni per creare il tuo server git. Gitlab è creato da Dmitriy Zaporozhets ed è disponibile in 2 versioni, Gitlab CE (Community Edition) e Gitlab EE (Enterprise Edition). Gitlab è facile da installare e configurare con una bellissima interfaccia, utilizzata da oltre 100.000 aziende tecnologiche. È un software molto potente che aiuta gli sviluppatori a creare applicazioni insieme ad altri sviluppatori.