Installation von Gitlab CE unter Ubuntu

Iinstallation von Gitlab unter Ubuntu Bild

Gitlab CE ist ein web-basiertes Git Management mit Wiki und Issue Tracking Features. Dabei stellt Gitlab eine Konkurrenz zu Github dar, da es ein open-source basiertes Projekt ist und somit von jeder Person kostenlos installiert werden kann. Diese Installation wird anhand von zwei Wegen erklärt, einerseits mittels des Omnibus Paketes und andererseits ohne ein Paket, also von Source, und wurde auf Ubuntu 14.04.2 LTS getestet. Alle Angaben im Zuge des Artikels sind auf jedem Debian basierten Betriebssystem umsetzbar und beziehen sich auf Gitlab Version 7.12.

Vor der Installation, sollte das Betriebssystem auf den aktuellen Stand gebracht werden. Dazu öffnet man ein Terminal (Shell) und tippt folgende Befehle ein.

# Run as root
apt-get update -y
apt-get upgrade -y
apt-get install -y sudo

Auf Ubuntu ist das Paket sudo bereits vorinstalliert, auf anderen Debian basierten Systemen könnte dieses Paket nicht installiert sein. Aus diesem Grund, ist der letzte Befehl aus obigen Befehlen angeführt. Nachdem das Betriebssystem auf dem neuesten Stand ist, kann mit einer der unten angeführten Methoden Gitlab installiert werden.

Omnibus Paket Installer

Der Omnibus Paket Installer ermöglicht das schnelle Installieren und Konfigurieren von Gitlab. Für unerfahrene Benutzer ist dies zu bevorzugen, allerdings ist es nicht möglich Gitlab vollständig zu konfigurieren. Dies wird sich in zukünftigen Versionen des Omnibus Paket Installers sicherlich ändern.

Abhängigkeiten Installieren

Bevor Gitlab mittels des Omnibus Installers installiert werden kann sind zu aller erst die entsprechenden Abhängigkeiten der Software zu installieren. Dafür führt man folgenden Befehl aus.

sudo apt-get install curl openssh-server ca-certificates postfix

Paket installieren

Sind alle Abhängigkeiten im System installiert, so wird Omnibus installiert. Da dieser nicht in den Ubuntu Repositories enthalten ist, wird das Debian Paket direkt heruntergeladen.

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt-get install gitlab-ce

Paket Konfigurieren & Gitlab starten

Zu guter Letzt, muss der Omnibus Paket Installer bzw. Gitlab vor dem ersten Start rekonfiguriert werden. Dafür tippt man folgenden Befehl ein.

sudo gitlab-ctl reconfigure

Gitlab sollte von obigem Befehl automatisch gestartet worden sein. Gratulation, Gitlab ist installiert.

Admin Login Daten (erstes Einloggen)

Nach der Installation kann mittels folgender Authentifizierungsdaten eingeloggt werden. Dabei sollte das Standardpasswort auf ein sicheres Passwort geändert werden.

user: root
pwd: 5iveL!fe

Omnibus Konfigurationsdateien

In der Datei /etc/gitlab/gitlab.rb kann gitlab entsprechend konfiguriert werden. Nach getaner Arbeit kann mittels des obigem Befehls, Gitlab rekonfiguriert bzw. die Änderungen übernommen werden.

Installation von Source

Die Installation von Source wird in diesem Teil des Artikels demonstriert, ist jedoch sehr langwierig. Es bringt allerdings im Unterschied zum Omnibus Paket Installer unter anderem den Vorteil, dass wirklich jede mögliche Konfiguration von Gitlab umgesetzt werden kann. So werden zu allererst die Abhängigkeiten von Gitlab installiert.

Abhängigkeiten installieren

Im Zuge dieser Anleitung der Installation von Source, müssen mehrere Dateien editiert werden. So wird im folgenden vim als Standardeditor des Systems festgelegt. Es ist hier ebenfalls möglich einen entsprechend anderen Editor als Standard im System zu setzen. Soll der bereits festgelegte Editor des Systems verwendet werden, so können folgende Befehle übersprungen werden.

sudo apt-get install -y vim
sudo update-alternatives --set editor /usr/bin/vim.basic

Ist der Standardeditor gesetzt, müssen alle Abhängigkeiten von Gitlab im System installiert werden.

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

Anschließend wird Git im System installiert. Dabei ist als Version des Git Paketes mindestens 1.7.10 Voraussetzung. Im folgenden wird deshalb die aktuell installierte Git Version angezeigt.

sudo apt-get install -y git
git --version

Zu guter Letzt ist das Installieren eines Mailclients notwendig, um die volle Funktionsweise von Gitlab auszuschöpfen. Somit wird im Folgenden das Paket postfix auf dem System installiert. Dabei ist dieses Paket ein Mailclient. Soll die Funktion des Versendens von Mails, nicht verwendet werden, so kann dies übersprungen werden.

sudo apt-get install -y postfix

Im Zuge des Installationsvorganges, muss „Internet Site“ ausgewählt werden.

Ruby installieren

Generell ist die Verwendung eines Ruby-Version Managers wie zum Beispiel RVM , rbenv oder chruby mit Gitlab nicht empfohlen, da dies häufig zu schwer diagnostizierbaren Problemen führen kann. Beispielsweise wird die Gitlab Shell von OpenSSH aufgerufen und wäre ein Ruby Version Manager installiert, so kann das Pushen und Pullen des Git Repositories über SSH fehlschlagen. Aus diesem oben genannten Grund, wird ein Ruby Version Manager nicht unterstützt und ist demnach auch nicht empfohlen. So wird im folgenden eine einzige Ruby Version im System von Source installiert.

Ältere Ruby Versionen müssen zuvor entfernt werden. Gitlab benötigt Ruby 2.1.0 oder höher.

sudo apt-get remove ruby1.8* ruby1.9* ruby2.0*

Im nächsten Schritt findet der Download und das Kompilieren bzw. die Installation von Ruby statt. Dabei kann die hier angegebene Version, durch eine höhere ersetzt werden.

mkdir /tmp/ruby && cd /tmp/ruby
curl -L --progress http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.gz | tar xz
cd ruby-2.1.6
./configure --disable-install-rdoc
make
sudo make install

Zu guter Letzt, installiere das Ruby Paket bundler. Dieses Paket ermöglicht das Bereitstellen einer Umgebung für Applikationen, so auch für Gitlab.

sudo gem install bundler --no-ri --no-rdoc

Git User

Nun wird ein User für Gitlab erstellt. Mit Hilfe dieses Users werden alle Gitlab Operationen durchgeführt.

sudo adduser --disabled-login --gecos 'GitLab' git

Datenbank aufsetzen

Gitlab benötigt für die einwandfreie Ausführung eine eigene Datenbank. Dabei können PostgreSQL, aber auch MySQL verwendet werden. Im Falle von MySQL sind jedoch noch etwaige Fehler in Gitlab vorhanden, weshalb die Benutzung von PostgreSQL dringendst empfohlen wird. Aus diesem Grund wird in diesem Artikel nur auf PostgreSQL Bezug genommen. Weitere Informationen zur Installation mit SQL sind hier Verfügbar.

Zu aller erst wird PostgreSQL und dessen Abhängigkeiten im System installiert.

sudo apt-get install -y postgresql postgresql-client libpq-dev

Anschließend wird die Datenbank für Gitlab vorbereitet. Das Eingeben von „template1=#“ ist nicht nötig, dies ist Teil der Datenbank Shell.

sudo -u postgres psql -d template1
template1=# CREATE USER git CREATEDB;
template1=# CREATE DATABASE gitlabhq_production OWNER git;
template1=# \q

Um zu Testen, ob alles erfolgreich verlaufen ist, wird eine Datenbank Session als Test initialisiert.

sudo -u git -H psql -d gitlabhq_production
gitlabhq_production> \q

Redis installieren

In diesem Schritt soll Redis installiert werden.

sudo apt-get install redis-server

Anschließend ist entsprechende Konfiguration erforderlich.

# Configure redis to use sockets
sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.orig

# Disable Redis listening on TCP by setting 'port' to 0
sed 's/^port .*/port 0/' /etc/redis/redis.conf.orig | sudo tee /etc/redis/redis.conf

# Enable Redis socket for default Debian / Ubuntu path
echo 'unixsocket /var/run/redis/redis.sock' | sudo tee -a /etc/redis/redis.conf
# Grant permission to the socket to all members of the redis group
echo 'unixsocketperm 770' | sudo tee -a /etc/redis/redis.conf

# Create the directory which contains the socket
mkdir /var/run/redis
chown redis:redis /var/run/redis
chmod 755 /var/run/redis

Anschließend muss der Redis Benutzer zur Git Gruppe hinzugefügt werden.

sudo usermod -a -G redis git

Um die Änderungen zu übernehmen, wird der Redis Dienst neu gestartet.

sudo service redis-server restart

Gitlab installieren

Es ist empfohlen Gitlab im Ordner des Benutzers Git zu installieren. Dies kann natürlich auch geändert werden, jedoch ist in diesem Fall klarerweise eine Anpassung folgender Befehle nötig.

cd /home/git

Anschließend wird das Source Repository geklont, um Gitlab installieren zu können. Wie bereits erwähnt wird hier die Version 7.12 installiert. Entsprechend der gewünschten Version, muss dies angepasst werden.

sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 7-12-stable gitlab

Anschließend erfolgt die Installation. Dabei bezieht sich editor auf den zuvor gesetzten Standard Editor des Systems.

cd /home/git/gitlab

# Copy the example Gitlab config
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

# Update Gitlab config file, follow the directions at top of file
sudo -u git -H editor config/gitlab.yml

# Make sure Gitlab can write to the log/ and tmp/ directories
sudo chown -R git log/
sudo chown -R git tmp/
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX tmp/

# Create directory for satellites
sudo -u git -H mkdir /home/git/gitlab-satellites
sudo chmod u+rwx,g=rx,o-rwx /home/git/gitlab-satellites

# Make sure Gitlab can write to the tmp/pids/ and tmp/sockets/ directories
sudo chmod -R u+rwX tmp/pids/
sudo chmod -R u+rwX tmp/sockets/

# Make sure Gitlab can write to the public/uploads/ directory
sudo chmod -R u+rwX  public/uploads

# Copy the example Unicorn config
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb

# Find number of cores
nproc

# Enable cluster mode if you expect to have a high load instance (3 workers on 2GB RAM machine)
# Set the number of workers to at least the number of cores
sudo -u git -H editor config/unicorn.rb

# Copy the example Rack attack config
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb

# Configure Git global settings for git user, used when editing via web editor
sudo -u git -H git config --global core.autocrlf input

# Configure Redis connection settings
sudo -u git -H cp config/resque.yml.example config/resque.yml

# Change the Redis socket path if you are not using the default Debian / Ubuntu configuration
sudo -u git -H editor config/resque.yml

Besonders wichtig ist hierbei, dass entsprechende Einstellungen der Dateien gitlab.yml und unicorn.rb gleich sein müssen.

Anschließend wird die Datenbank für Gitlab mit folgenden Befehl konfiguriert.

sudo -u git cp config/database.yml.postgresql config/database.yml
sudo -u git -H chmod o-rwx config/database.yml

Ist die Datenbank konfiguriert, werden weitere Ruby Abhängigkeiten, sog. Gems, installiert. Dabei wird das Paket MySQL nicht installiert. Soll, wie bereits oben beschrieben, nicht PostgreSQL verwendet werden, so ist mysql mit postgres in folgendem Befehl zu ersetzen.

sudo -u git -H bundle install --deployment --without development test mysql aws kerberos

Um Verbindungen zu Git Repositories über Gitlab zu ermöglichen, wird die Gitlab Shell mittels folgender Befehle installiert. Die Version der Gitlab Shell kann dabei entsprechend angepasst werden.

sudo -u git -H bundle exec rake gitlab:shell:install[v2.6.3] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production
sudo -u git -H editor /home/git/gitlab-shell/config.yml

Dabei sollten alle Konfigurationsdateien generiert werden. Anschließend muss gewährleistet werden, dass der Hostname mittels eines DNS- oder eines /etc/hosts Dateieintrages auflösbar ist. In der Datei config.yml, kann dieser spezifiziert werden.

Nun wird die Datenbank initialisiert. Dazu folgenden Befehl exekutieren und, sobald nötig, der Aufforderung in der Konsole mittels yes zustimmen. Anschließend sollte „Administrator account created“ sichtbar sein.

sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production

Um entsprechendes Starten von Gitlab beim System Boot zu ermöglichen, wird ein Startup Script registriert. Dafür müssen folgende Befehle ausgeführt werden. Wurde der Installationsort variiert, so muss das Script entsprechend umgeschrieben werden.

sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo update-rc.d gitlab defaults 21

Anschließend werden die folgenden Befehle ausgeführt, um das Logging von Gitlab zu aktivieren, die Installation zu testen und die Assets zu kompilieren.

sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
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

Gratulation, Gitlab ist nun installiert und kann mittels folgendem Befehl gestartet werden.

sudo service gitlab start
# or
sudo /etc/init.d/gitlab restart

Nginx installieren und konfigurieren

Prinzipiell ist Gitlab nun installiert. Allerdings ist noch ein Webserver nötig, um mit Gitlab über den Browser zu interagieren. Als Standard ist Nginx von Gitlab empfohlen, falls dies jedoch nicht gewünscht ist, so kann weitere Information hier eingesehen werden.

Um Nginx zu installieren, wird folgender Befehl ausgeführt.

sudo apt-get install -y nginx

Anschließend wird Nginx konfiguriert. Dabei muss YOUR_SERVER_FQDN auf die Domain des Hosts, welcher Gitlab ausliefert, geändert werden.

sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
sudo editor /etc/nginx/sites-available/gitlab

Es folgt ein Test der Konfiguration.

sudo nginx -t

Zu guter Letzt wird der Nginx Dienst neu gestartet.

sudo service nginx restart

Admin Login Daten (erstes Einloggen)

Nach der Installation kann mittels folgender Authentifizierungsdaten eingeloggt werden. Dabei sollte das Standardpasswort auf ein sicheres Passwort geändert werden.

user: root
pwd: password

About the author /


Schon früh hat sich meine technische Begabung gezeigt, weshalb ich mich vor ein paar Jahren entschloss ein Informatik Studium zu beginnen. Ich beschäftige mich intensiv mit Programmieren, besonders im Bereich Java und Mobile Applications. Ich bin immer bemüht mich in verschiedensten technischen Bereichen weiterzubilden und neue Erfahrungen zu sammeln. Außerhalb der technischen Welt spiele ich gerne Squash, hin und wieder ein interessantes Computerspiel und ich versuche mich im Kochen und Backen mit mehr oder weniger gutem Erfolg.

Related Articles

Post your comments

Your email address will not be published. Required fields are marked *

*

Unterstütz uns!

Folgt uns!

Diese Seite

wurde erstellt mit Ehrgeiz, Liebe und viel Koffein. Bei der Erstellung kamen keine jar-Dateien zu Schaden. Das Logo wurde erstellt von Star-seven.at.