Installation de Gitosis et RedMine sur squeeze - The Debian way!
Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du gestionnaire de projet RedMine (optionnel évidemment...).
Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude. Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.
Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 (Git). Nous avons choisis Gitolite qui est une version plus sécurisée de Git. Gitosis permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.
RedMine RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails (Redmine).
Gitosis
Installation de Gitosis
Comme toujours ches Debian, l'installation est très simple:
apt-get install gitosis ... Les paquets supplémentaires suivants seront installés : python-pkg-resources python-setuptools Paquets suggérés : git-daemon-run gitweb python-distribute python-distribute-doc Les NOUVEAUX paquets suivants seront installés : gitosis python-pkg-resources python-setuptools ...
Configuration
Nous créons l'utilisateur "git", le seul à avoir l'accès au dépôt et à la configuration:
adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git Ajout de l'utilisateur système « git » (UID 113) ... Ajout du nouveau groupe « git » (GID 117) ... Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ... Création du répertoire personnel « /var/git »...
Configuration Client/Admin
Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:
Création de la clef:
ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web. Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub. The key fingerprint is: 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol The key's randomart image is: +--[ DSA 1024]----+ | | | | | | | . .. o | | ..xx..S | | xx.+ | | ..xx o | | .oE x x | | .+xx o | +-----------------+
Il faut ensuite envoyer le clef générée sur le serveur:
scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub gitosis-admin-web.pub 100% 604 0.6KB/s 00:00
web-git (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:
cat ~/.ssh/config Host web-git HostName IP_du_serveur Port port_ssh User git PasswordAuthentication no IdentityFile ~/.ssh/gitosis-admin-web.pub
Sur le serveur: Nous intégrons la clef SSH du "client" et initialisons le dépôt gitosis-admin.git.
su - git git@web:~$ gitosis-init < /tmp/gitosis-admin-web.pub Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/ Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/
Sur le client: Nous clonons le dépôt gitosis-admin.git localement
git clone git@web-git:gitosis-admin.git Cloning into 'gitosis-admin'... remote: Counting objects: 5, done. remote: Compressing objects: 100% (4/4), done. remote: Total 5 (delta 0), reused 5 (delta 0) Receiving objects: 100% (5/5), done.
Vérification:
cd gitosis-admin/ vdir total 8 -rw-r--r-- 1 laurent laurent 84 mars 4 11:25 gitosis.conf drwxr-xr-x 2 laurent laurent 4096 mars 4 11:25 keydir
Modification de la configuration de gitosis
Ajout d'un dépôt
Ajoutons maintenant un dépôt à partir du "client" Nous ajoutons le dépôt "portailmadagascar"
nano gitosis.conf
[gitosis] [group gitosis-admin] writable = gitosis-admin members = laurent@sidlol [group portailmadagascar] writable = portailmadagascar members = laurent@sidlol
Activons le dépôt:
git add gitosis.conf git commit -m 'Ajout du dépôt portailmadagascar' [master b0192ad] Ajout du dépôt portailmadagascar Committer: Laurent L <laurent@sidlol.zehome.org> Your name and email address were configured automatically based on your username and hostname. Please check that they are accurate. You can suppress this message by setting them explicitly: git config --global user.name "Your Name" git config --global user.email you@example.com After doing this, you may fix the identity used for this commit with: git commit --amend --reset-author 1 files changed, 3 insertions(+), 0 deletions(-)
Envoyons la modification sur le serveur:
git push origin master Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 389 bytes, done. Total 3 (delta 0), reused 0 (delta 0) To git@web-git:gitosis-admin.git e9439fc..b0192ad master -> master
Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le "récupérer" (pull) depuis le serveur: Initialisation locale du dépôt:
cd ~/git git clone web-git:portailmadagascar.git Cloning into 'portailmadagascar'... Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/ warning: You appear to have cloned an empty repository.
"Peuplement" de notre dépôt
Nous allons maintenant "peupler" notre dépôt (lui ajouter des fichiers):
Il suffit de copier vos fichiers dans le dossier ~/git/portailmadagascar, de les ajouter au dépôt, puis de les envoyer au serveur:
git push origin master Counting objects: 6663, done. Delta compression using up to 4 threads. Compressing objects: 100% (6290/6290), done. Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done. Total 6663 (delta 747), reused 0 (delta 0) To web-git:portailmadagascar.git * [new branch] master -> master
git clone web-git:portailmadagascar.git cd portailmadagascar git add . git commit -m "Initial commit"
Initial commit
- Please enter the commit message for your changes. Lines starting
- with '#' will be ignored, and an empty message aborts the commit.
- On branch master
- Initial commit
- Changes to be committed:
- (use "git rm --cached <file>..." to unstage)
- new file: .htaccess
- new file: WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
- new file: article.zip
- new file: article/admin.js
...
Avant d'envoyer au serveur, configurons nos identifiants:
git config --global user.name "lol" git config --global user.email lol@serveur.tld git commit --amend --reset-author git push origin master
Redmine
Installation
Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisis ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?
mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
Installation redmine-mysql
apt-get install redmine redmine-mysql libapache2-mod-passenger
Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)
nano /etc/redmine/default/database.yml
production: adapter: mysql database: baseredmine host: localhost port: username: mysqlredmine password: votre_mot-de-passe-pour-redmine encoding: utf8
Nous créons maintenant la structure de la base de donnée:
cd /usr/share/redmine/ RAILS_ENV=production rake db:migrate (in /usr/share/redmine) == Setup: migrating ========================================================== -- create_table("attachments", {:force=>true}) -> 0.0993s -- create_table("auth_sources", {:force=>true}) -> 0.0796s ...
Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)
RAILS_ENV=production rake redmine:load_default_data (in /usr/share/redmine) Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr ==================================== Default configuration data loaded.
Configuration de apache2
Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisis un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.
ln -s /usr/share/redmine /var/www/redmine chown www-data:www-data /var/www/redmine/
nano /etc/apache2/sites-available/redmine
<VirtualHost ip_du_serveur:80>
ServerName redmine.serveur.tld
Alias /redmine /var/www/redmine/public
DocumentRoot /var/www/redmine/public
<Directory /var/www/redmine/public/>
PassengerAppRoot /var/www/redmine
RailsBaseURI /
AddHandler fastcgi-script .fcgi
Options Indexes +ExecCGI FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
/etc/apache2/sites-enabled/redmine service apache2 force-reload
Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)
Login: admin Mot de passe: admin
Il est fortement recommandé de changer le mot de passe...
Configuration des mails
Vous devrez maintenant configurer l'envoie des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles "collent" à votre configuration.
cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml nano /etc/redmine/default/email.yml
Intégrer le dépôt Gitosis
Il faut maintenant intégrer notre dépôt Git à Redmine: