gitlabhq installieren

s. auch gitlab-Doku [24.06.2014]

Voraussetzungen (Ubuntu oder Debian)

sudo apt-get install -V 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

ruby installieren

Ich installiere für den User ein eigenes ruby in sein Homeverzeichnis (/home/git):

sudo su - gitlab
export HOMEDIR=/home/git
wget ftp://ftp.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.bz2
tar xjf ruby-2.1.1.tar.bz2
cd ruby-2.1.1
./configure --disable-install-rdoc --prefix=$HOMEDIR/local/ruby
make --silent -j 3
make install
cd $HOMEDIR/local
mv ruby{,-2.1.1} && ln -s ruby{-2.1.1,}
$HOMEDIR/local/ruby/bin/gem install bundler --no-ri --no-rdoc
$HOMEDIR/local/ruby/bin/gem install pg -v '0.15.1'
$HOMEDIR/local/ruby/bin/bundle install
# jetzt $HOMEDIR/config/gitlab.yml anpassen
$HOMEDIR/bin/bundle exec $HOMEDIR/bin/rake gitlab:shell:install[v1.9.6] REDIS_URL=redis://localhost:6379 RAILS_ENV=production
$HOMEDIR/ruby/bin/bundle exec $HOMEDIR/ruby/bin/rake gitlab:setup RAILS_ENV=production

Vielleicht ist das nicht die beste Idee, weil das Programm dann ruby absichtlich oder nicht verändern könnte, vielleicht komme ich eines Tages auf die Idee, ein Debian-Paket aus den ruby-Quellen zu bauen, oder ich finde ein Repository, dem ich vertrauen möchte.

"Alt..."

Pakete

  • folgende Pakete müssen lt. Installationsanleitung untere Debian/Ubuntu installiert werden:
    • sudo
    • vim
    • build-essential
    • zlib1g-dev
    • libyaml-dev
    • libssl-dev
    • libgdbm-dev
    • libreadline-dev
    • libncurses5-dev
    • libffi-dev
    • curl
    • git-core
    • openssh-server
    • redis-server
    • checkinstall
    • libxml2-dev
    • libxslt-dev (Ubuntu 12.04: libxslt1-dev)
    • libcurl4-openssl-dev
    • libicu-dev
    • python2 (Python >= 2.5)
    • ruby1.9.3

Ruby

  • ein Ruby-Bundler Gem muss installiert werden (meine ruby-Kenntnisse sind leider sehr stark begrenzt):
    sudo gem install bundler

Benutzer anlegen

  • User git für git und gitolite anlegen:
    sudo adduser \
      --system \
      --shell /bin/sh \
      --gecos 'Git Version Control' \
      --group \
      --disabled-password \
      --home /home/git \
      git
  • User gitlab für GitLab anlegen:
    sudo adduser --disabled-login --gecos 'GitLab' gitlab
  • User gitlab der Gruppe git hinzufügen:
    sudo usermod -a -G git gitlab
  • ssh-Schlüssel für User gitlab anlegen:
    sudo -u gitlab -H ssh-keygen -q -N '' -t rsa -f ~gitlab/.ssh/id_rsa

gitolite einrichten

  • GitLab-Quellen runterladen:
    cd ~git
    sudo -u git -H git clone -b gl-v320 https://github.com/gitlabhq/gitolite.git ~git/gitolite
  • gitolite einrichten mit GitLab als Administrator:
    # gitolite-Scripte der $PATH-Umgebung hinzufügen
    sudo -u git -H mkdir ~git/bin
    sudo -u git -H sh -c 'printf "%b\n%b\n" "PATH=\$PATH:~git/bin" "export PATH" >> ~git/.profile'
    sudo -u git -H sh -c 'gitolite/install -ln ~git/bin'
     
    # gitlab's (öffentlichen) SSH-Schlüssel kopieren...
    sudo cp ~gitlab/.ssh/id_rsa.pub ~git/gitlab.pub
    sudo chmod 0444 ~git/gitlab.pub
     
    # ...und als Admin-Schlüssel für das Gitolite-Setup verwenden
    sudo -u git -H sh -c "PATH=~git/bin:$PATH; gitolite setup -pk ~git/gitlab.pub"
  • Verzeichnisberechtigungen anpassen:
    # Gitolite-Konfigurationsverzeichnis muss User </b>git<b> gehören
    sudo chmod 750 ~git/.gitolite/
    sudo chown -R git:git ~git/.gitolite/
  • Verzeichnisberechtigungen der Repositories anpassen:
    # Repository-Verzeichnis gehört User git und es bleibt auch so
    sudo chmod -R ug+rwXs,o-rwx ~git/repositories/
    sudo chown -R git:git ~git/repositories/
  • ggf. Host gitlabhq in der SSH-Konfiguration des Users gitlab (~gitlab/.ssh/config) anpassen (z.B. bei von 22 abweichendem sshd-Port), im Folgenden gitlab genannt
  • Testen, ob man clonen kann:
    sudo -u gitlab -H git clone git@gitlab:gitolite-admin.git /tmp/gitolite-admin

Datenbank

Gitlab einrichten

Gitlab wird im Homeverzeichnis des Users gitlab installiert:

cd ~gitlab

Quellen holen

# GitLab-Repo holen
sudo -u gitlab -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab

# ins gitlab-Verzeichnis wechseln 
cd ~gitlab/gitlab
sudo -u gitlab -H git branch -ar
  origin/3-1-stable
  origin/4-0-stable
  origin/4-1-stable
  origin/HEAD -> origin/master
  origin/api_branch
  origin/api_merge_request
  origin/features/projects_page
  origin/features/teams
  origin/fix_bug_wiki
  origin/master
  origin/refactor/css
  origin/stable

# stabile Version auschecken
sudo -u gitlab -H git checkout 4-1-stable

Einrichten

GitLab läuft als eigenständiger Daemon, ich lasse ihn an Port 8443 auf localhost lauschen und verwende einen Apache mit eigenem virtuellen Host und Proxy-Modul, um zur Installation weiterzuleiten.

cd ~gitlab/gitlab

# Beispiel-GitLab-Konfiguration kopieren
## Web application specific settings
#web:
#  host: 127.0.0.1
#  port: 8443
#  https: true
sudo -u gitlab -H cp -av config/gitlab.yml.example config/gitlab.yml

# ggf. Hostnamen anpassen sowie weitere Einstellungen
# wie externe Authentifizierungsmöglichkeiten
sudo -u gitlab -H vim config/gitlab.yml

# GitLab muss nach log/ und tmp/ schreiben können
sudo chown -R gitlab log/
sudo chown -R gitlab tmp/
sudo chmod -R u+rwX  log/
sudo chmod -R u+rwX  tmp/

# Verzeichnis für "satellites" erzeugen
sudo -u gitlab -H mkdir /home/gitlab/gitlab-satellites

# Beispiel-Unicorn-Konfiguration kopieren und anpassen
# listen "127.0.0.1:8443"
sudo -u gitlab -H cp config/unicorn.rb.example config/unicorn.rb

Postgres-Datenbank: Zugangsdaten konfigurieren

sudo -u gitlab cp -aiv config/database.yml.postgresql config/database.yml

Gems installieren

Und wieder bin ich unbedarft, so richtig weiß ich nicht, was das tut...

gem install charlock_holmes --version '0.6.9'
sudo -u gitlab -H bundle install --deployment --without development test mysql

Es hat einfach anscheinend fehlerfrei getan...

git konfigurieren

Es wird empfohlen, als Email-Adresse die aus config/gitlab.yml zu benutzen...

sudo -u gitlab -H git config --global user.name "GitLab"
sudo -u gitlab -H git config --global user.email "gitlab@localhost"

Die Einstellungen sollten dann in ~gitlab/.gitconfig zu finden sein.

GitLab-Hooks einrichten

Hier wird ein post-push-Hook installiert.

sudo cp -iv lib/hooks/post-receive ~git/.gitolite/hooks/common/post-receive
sudo chown git:git ~git/.gitolite/hooks/common/post-receive

Datenbank initialisieren und erweitere Features aktivieren

Sollte man schon eine Datenbank (initialisiert oder benutzt) haben, wird diese dabei gelöscht!

sudo -u gitlab -H bundle exec rake gitlab:setup RAILS_ENV=production
gitlabhq_production=# \dt
                Liste der Relationen
 Schema |        Name        |   Typ   | Eigentümer 
--------+--------------------+---------+------------
 public | events             | Tabelle | gitlab
 public | issues             | Tabelle | gitlab
 public | keys               | Tabelle | gitlab
 public | merge_requests     | Tabelle | gitlab
 public | milestones         | Tabelle | gitlab
 public | namespaces         | Tabelle | gitlab
 public | notes              | Tabelle | gitlab
 public | projects           | Tabelle | gitlab
 public | protected_branches | Tabelle | gitlab
 public | schema_migrations  | Tabelle | gitlab
 public | services           | Tabelle | gitlab
 public | snippets           | Tabelle | gitlab
 public | taggings           | Tabelle | gitlab
 public | tags               | Tabelle | gitlab
 public | users              | Tabelle | gitlab
 public | users_projects     | Tabelle | gitlab
 public | web_hooks          | Tabelle | gitlab
 public | wikis              | Tabelle | gitlab
(18 Zeilen)

init-Script installieren

Damit GitLab bei jedem Systemstart automatisch mit hochkommt, hier das init-Script.

sudo wget -O /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/4-1-stable/init.d/gitlab
chmod a+x /etc/init.d/gitlab

Automatischen Start konfigurieren:

sudo update-rc.d gitlab defaults 21

Ein paar Tests

Der klappte auf Anhieb:

sudo -u gitlab -H bundle exec rake gitlab:env:info RAILS_ENV=production

Hier gab es Probleme:

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

  1. Git configured for gitlab user? ... no
    Try fixing it:
    sudo -u gitlab -H git config --global user.name  "GitLab"
    sudo -u gitlab -H git config --global user.email "github@localhost"
    For more information see:
    doc/install/installation.md in section "GitLab"
    Please fix the error above and rerun the checks.
    Hier bin ich eigentlich der Meinung, dass das weiter oben schon erledigt war, ein Blick in die Datei ~gitlab/.gitconfig bestätigt mir genau das, und sie gehört dem User gitlab...
  2. Checking Sidekiq ...
    Running? ... no
    Try fixing it:
    sudo -u gitlab -H bundle exec rake sidekiq:start
    For more information see:
    doc/install/installation.md in section "Install Init Script"
    see log/sidekiq.log for possible errors
    Please fix the error above and rerun the checks.
    Das bricht ab mit einem Stacktrace:
    sudo -u gitlab -H bundle exec rake sidekiq:start
    rake aborted!
    cannot load such file -- rb-inotify
    /var/lib/gems/1.9.1/gems/bundler-1.2.3/lib/bundler/runtime.rb:68:in require'
    /var/lib/gems/1.9.1/gems/bundler-1.2.3/lib/bundler/runtime.rb:68:inblock (2 levels) in require'
    /var/lib/gems/1.9.1/gems/bundler-1.2.3/lib/bundler/runtime.rb:66:in each'
    /var/lib/gems/1.9.1/gems/bundler-1.2.3/lib/bundler/runtime.rb:66:inblock in require'
    /var/lib/gems/1.9.1/gems/bundler-1.2.3/lib/bundler/runtime.rb:55:in each'
    /var/lib/gems/1.9.1/gems/bundler-1.2.3/lib/bundler/runtime.rb:55:inrequire'
    /var/lib/gems/1.9.1/gems/bundler-1.2.3/lib/bundler.rb:128:in require'
    /home/gitlab/gitlab/config/application.rb:9:in'
    /home/gitlab/gitlab/Rakefile:5:in require'
    /home/gitlab/gitlab/Rakefile:5:in'
    (See full trace by running task with --trace)
    Ich kenne nun ruby zwar nicht, habe aber von vorigen Schritten gelernt, dass ich vielleicht ein "gem" installieren muss:
    gem install rb-inotify
    Das dauerte einen Moment, dann war die Installation abgeschlossen. Allerdings hatte es mit dem Problem gar nichts zu tun, hier sollte die Doku angepasst werden. Allerdings kann man das wohl ignorieren.
  3. Init script up-to-date? ... no
    Try fixing it:
    Redownload the init script 
    For more information see:
    doc/install/installation.md in section "Install Init Script"
    Please fix the error above and rerun the checks.
    Hmm, und das hatte ich mir eben erst runtergeladen :-/ hier half ein beherztes Auschecken des aktuellen stabilen Zweigs
    sudo -u gitlab git checkout -t -b 4-1-stable origin/4-1-stable

GitLab starten

Das war dann einfach (wenn man sich nicht ganz an die Doku hält):

/etc/init.d/gitlab start
Hier sollte man nicht gitlab restart nehmen, wie es in der Doku steht, dann bekommt man nämlich den Fehler Error, unicorn not running! um die Ohren (als wenn Einhörner rennen könnten ;-)).

Meine Tags:
 
Beliebte Tags:
 
Powered by Catalyst