Git : Gitolite et Gitlab sur Debian 6.0
De wikiGite
Git
Git seul permet de créer et d'utiliser pleinement un dépot privé (local), ou un dépot public sans gestion des droits d'accès) via git-daemon.
Git_:_utilisation
Gitolite
Gitolite permet d'héberger des dépôts git, en y ajoutant une gestion des droits d'accès, non seulement par dépôt, par branche et par tag. Il permet notamment de préciser si un utilisateur (ou groupe d'utilisateur) a le droit de push sur une branche.
Gitolite permet de gérer un grand nombre de dépôt et d'utilisateurs, sans même avoir besoin de leur donner un compte sur le serveur, mais juste en intégrant leur clef publique.
Pré-requis
Installer les dépendances :
aptitude install -y git-core wget curl gcc checkinstall libxml2-dev libxslt1-dev sqlite3 libsqlite3-dev libcurl4-openssl-dev libreadline-dev libc6-dev libssl-dev libmysql++-dev make build-essential zlib1g-dev libicu-dev redis-server openssh-server git-core python-dev python-pip libyaml-dev
Ruby
Installation
Par compilation en récuperant les sources sur http://ftp.ruby-lang.org/pub/ruby/1.9/ :
wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.X.tar.gz tar xfv ruby-1.9.X.tar.gz ./configure make make install
Ne pas s'inquieter si chemin d'installation de correspond pas à la version de ruby installé (1.9.1 ou lieu de 1.9.4), cela est fait pour faciliter la mise a jour de ruby.
Pour être sûr :
ruby -v
Gems
Mise à jour des gems :
gem update --system
Installation de rails :
gem install rails
Installer gitolite
Depuis le gestionnaire de paquet (recommendé)
aptitude install gitolite
Générer une paire de clef :
su - gitolite ssh-keygen exit
puis configurer gitolite :
dpkg-reconfigure gitolite
Rentrer le chemin de la clef public lorsque demandé : /var/lib/gitolite/.ssh/id_rsa.pub
Puis donner les droit par defaut aux depots :
sed -i 's/0077/0007/g' /var/lib/gitolite/.gitolite.rc
et les droits à l'utilisateur :
chmod 770 /var/lib/gitolite/repositories chown -R gitolite:gitolite /var/lib/gitolite
Depuis le sources
cd /usr/local/
Installer gitolite :
git clone git://github.com/gitlabhq/gitolite
Créer un utilisateur gitolite qui utilisera gitolite :
adduser --system --shell /bin/sh --gecos 'git version control' --group --disabled-password --home /usr/local/gitolite gitolite chown -R gitolite:gitolite gitolite/
Générer une paire de clef pour l'utilisateur gitolite :
su - gitolite ssh-keygen
Installation de gitolite:
PATH=/usr/local/gitolite/bin:$PATH /usr/local/gitolite/src/gl-system-install sed -i 's/0077/0007/g' /usr/local/gitolite/share/gitolite/conf/example.gitolite.rc gl-setup -q .ssh/id_rsa.pub exit
Modification des permissions :
chmod -R 770 /usr/local/gitolite/repositories/ chown -R gitolite:gitolite /usr/local/gitolite/repositories/
Test de gitolite ( A faire obligatoirement )
CLoner le repo admin pour ajouter localhost à known_hosts et s'assurer que l'utilisateur peut acceder à gitolite :
su - gitolite git clone gitolite@localhost:gitolite-admin.git /tmp/gitolite-admin
Si la commande fonctionne, le supprimer
rm -rf /tmp/gitolite-admin exit
Apache et Phusion passenger
Phusion Passenger sert à connecter des applis Rack ou Rails avec Apache (ou Nginx).
Installation de apache :
aptitude install apache2
Installation de passenger
gem install passenger
Installation des dépendances de passenger :
aptitude install apache2-dev
Compilation et activation de passenger
passenger-install-apache2-module
Créez le fichier de configuration du module Passenger pour Apache 2 (a adapater en fonction de la sortie précedente) :
echo "LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/ext/apache2/mod_passenger.so" > "/etc/apache2/mods-available/passenger.load" echo "PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12 PassengerRuby /usr/local/bin/ruby PassengerDefaultUser www-data" > "/etc/apache2/mods-available/passenger.conf"
activer le module :
a2enmod passenger
Gitlab
Dépendances
pip install pygments gem install bundler
Installation
cd /var/www git clone git://github.com/gitlabhq/gitlabhq.git -b stable cd gitlabhq/
Renommer les fichiers de configuration
cp config/gitlab.yml.example config/gitlab.yml
Modifier la configuration de gitlab /var/www/gitlabhq/config/gitlab.yml :
git_host: system: gitolite admin_uri: gitolite@URL_DU_SITE:gitolite-admin base_path: /var/lib/gitolite/repositories/ host: URL_DU_SITE git_user: gitolite # port: 22
Séléctionner la base de donnée :
- sqlite :
cp config/database.yml.sqlite config/database.yml
- Mysql :
aptitude install mysql-server mysql -u root -p CREATE DATABASE `gitlabhq_production`; CREATE USER `gitlab`@`localhost` IDENTIFIED BY 'MDP' ; GRANT ALL PRIVILEGES ON `gitlabhq_production` . * TO 'gitlab'@'localhost';
cp config/database.yml.example config/database.yml
Penser à changer username/password dans config/database.yml
Dans le répertoire de gitlab :
bundle install
Configuration de la BDD :
rake db:setup RAILS_ENV=production rake db:seed_fu RAILS_ENV=production
Tester la configuration
su gitolite rake gitlab:app:status RAILS_ENV=production
Starting diagnostic config/database.yml............exists config/gitlab.yml............exists /home/git/repositories/............exists /home/git/repositories/ is writable?............YES remote: Counting objects: 6, done. remote: Compressing objects: 100% (4/4), done. Receiving objects: 100% (6/6), 726 bytes, done. remote: Total 6 (delta 0), reused 0 (delta 0) Can clone gitolite-admin?............YES UMASK for .gitolite.rc is 0007? ............YES
Ignorer les erreurs de droits
Modifier /etc/apache2/sites-available/gitlab.http :
<VirtualHost *:80> ServerName www.yourhost.com # !!! Be sure to point DocumentRoot to 'public'! DocumentRoot /var/www/gitlabhq/public <Directory /var/www/gitlabhq/public> # This relaxes Apache security settings. AllowOverride all # MultiViews must be turned off. Options -MultiViews </Directory> </VirtualHost>
a2ensite gitlab.http
Autoriser apache à utiliser gitlab
Se connecter a vec l'utilisateur apache pour creer les fichiers de conf ssh :
chown -R www-data:www-data /var/www/
su -l www-data -s /bin/bash ssh localhost exit
cp -f /var/lib/gitolite/.ssh/id_rsa /var/www/.ssh/ chown www-data:www-data /var/www/.ssh/id_rsa chmod 600 /var/www/.ssh/id_rsa
Ajouter apache au groupe gitolite :
usermod -a -G gitolite www-data
Lui donner les droits :
chown -R www-data:www-data /var/www/gitlabhq
Donner les permissions au repo :
chmod 770 /var/lib/gitolite/repositories/
lancer apache :
/etc/init.d/apache2 restart
Afin d'eviter une lenteur au premier démarage précharger le site :
curl -k URL_DU_SITE
Afin de tester si la configuration est bonne. Se connecter avec apache :
git clone gitolite@localhost:gitolite-admin.git /tmp/gitolite-admin
Se connecter sur l'interface
user: admin@local.host pass: 5iveL!fe
Références
Installation de gitlab sur fedora 16[1]
Wiki installation de gitlab[2]