Introduction
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