Gitlab 6 on FreeBSD

Gitlab est un puissant outil permettant de monter une infrastructure de type github sur son infrastructure. Gitlab peut se connecter à un annuaire LDAP d’entreprise afin que les utilisateurs soient automatiquement reconnus. En terme de fonctionnalités, Gitlab permet de créer des repositories git, forker, créer des branches, faire des commits sur HTTP(S), partager des projets entre plusieurs utilisateurs… Nous allons ici voir comment installer Gitlab sur un serveur FreeBSD.

Prérequis

Afin d’utiliser Gitlab il vous faudra installer les packages suivants:

pkg install git icu libxml2 libxslt postfix python27 logrotate py27-docutils rubygem-bundler rubygem-passenger sudo gmake rubygem-rake

Bases de données

Afin d’utiliser Gitlab il vous faudra deux bases de données, une base Redis et une base MySQL/PostgreSQL. Nous utiliserons ici une base PostgreSQL 9.2 existante. Vous pouvez installer PostgreSQL et Redis sur le serveur, néanmoins nous utiliserons un serveur externe.

Installation et configuration de Redis

On installe le paquet Redis, on active le service et on le lance:

pkg install redis
echo "redis_enable=\"yes\"" > /etc/rc.confservice redis start

Création de la base et de l’utilisateur PostgreSQL

Le service de base de données PostgreSQL est considéré comme prêt, on va ajouter une base de données et un utilisateur:

su - pgsql
createdb gitlab
psql gitlab
CREATE USER gitlab WITH PASSWORD 'dbpwd';
GRANT ALL PRIVILEGES ON DATABASE gitlab TO gitlab;
\q

Préparation de l’environnement

Nous aurons besoin d’un utilisateur et d’un groupe dédié:

pw addgroup git
pw adduser git -g git -m -d /usr/local/www/gitlab -c "GitLab"
ln -s /usr/local/bin/git /usr/bin/git

Gitlab-shell

Installation

On va installer le shell gitlab, permettant d’interface gitlab avec git. On se connecte en utilisateur git et on clone les sources:

su - git
git clone https://github.com/gitlabhq/gitlab-shell.git
git checkout v1.9.4

Configuration

Toujours en utilisateur git, on copie la configuration d’example

cp config.yml.example config.yml

Il faut modifier ici trois éléments:

  • Changez tout d’abord l’URL de votre site (gitlab_url)
  • Remplacez les chemins en /home/git par /usr/local/www/gitlab
  • Configurez redis en paramétrant le chemin du binaire (/usr/local/bin/redis-cli) et l’adresse de votre serveur Redis

Enfin lancez la commande /usr/local/www/gitlab/gitlab-shell/bin/install.

Gitlab

Installation

En utilisateur git on clone le repository gitlab et on se place sur la version en cours

su - git
git clone https://github.com/gitlabhq/gitlabhq.git gitlab
git checkout 6-8-stable

Configuration

En utilisateur git, copiez la configuration de gitlab et éditez la

cp config/gitlab.yml.example config/gitlab.yml

Tout d’abord modifiez le nom du serveur web, l’hôte et le port:

host: gitlab.unix-experience.fr
port: 443
https: true

Ensuite l’adresse mail de notification et de support:

email_from: gitlab@unix-experience.fr
support_email: support@unix-experience.fr

Modifiez le chemin de git:

bin_path: /usr/local/bin/git

Modifiez tous les chemins contenant /home/git par /usr/local/www/gitlab/ Copiez ensuite la configuration d’unicorn et modifiez également les chemins. *

cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb

Ajoutez également la ligne listen suivante:

listen "/usr/local/www/gitlab/gitlab/tmp/sockets/gitlab.socket"

Enfin copiez et modifiez la configuration de base de données:

cp config/database.yml.postgresql config/database.yml
vi config/database.yml

On va ensuite procéder à l’installation d’une gem et de notre base de données.

gem install charlock_holmes --version '0.6.9.4'
bundle install --deployment --without development test mysql aws

Enfin, en utilisateur git, toujours dans le répertoire d’installation de gitlab, on termine l’installation en préparant les assets.

bundle exec rake assets:precompile RAILS_ENV=production

Script init

Gitlab utilise un service qui s’exécute sur la machine. On va copier le script init dans le rc.d de FreeBSD et le lancer

cp lib/support/init.d/gitlab /usr/local/etc/rc.d/gitlab
chmod +x /usr/local/etc/rc.d/gitlab
service gitlab start

Configuration Apache

Après avoir installé rubygem-passenger (dans la liste de prérequis), vous devrez compiler le module pour Apache. Lancez simplement la commande suivante:

/usr/local/lib/ruby/gems/1.9/gems/passenger-4.0.41/bin/passenger-install-apache2-module

Sélectionnez ruby et validez, puis attendez que la compilation se termine. Ajoutez ensuite les lignes suivantes dans votre configuration Apache:

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9/gems/passenger-4.0.41/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
        PassengerRoot /usr/local/lib/ruby/gems/1.9/gems/passenger-4.0.41
        PassengerDefaultRuby /usr/local/bin/ruby19
</IfModule

Workaround: Problème avec la librairie underscore

Si votre Gitlab rencontre un erreur (en 6.8 c’est le cas), lorsque vous vous connectez en interface web, vérifiez les logs de l’application dans /usr/local/www/gitlab/gitlab/log/production.log. Si vous rencontrez l’erreur suivante:

couldn't find file 'underscore'

Editez le fichier /usr/local/www/gitlab/gitlab/app/assets/javascripts/application.js.coffee et supprimez la ligne concernant underscore

Conclusion

Vous avez désormais en votre possession un Gitlab opérationnel, permettant d’ajouter une valeur ajoutée à votre entité, en offrant un service de qualité de type github, tout en gardant la main-mise sur les données.

Source

Afin de rédiger cet article je me suis basé sur le tutoriel suivant et l’ai modifié afin de moderniser l’installation de gitlab. https://github.com/chadliu23/Installation-guide-for-GitLab6-on-Freebsd