Installation de Trac et SVN

Documents pareils
Serveur Subversion Debian GNU/Linux

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

REPARTITION DE CHARGE LINUX

TP Service HTTP Serveur Apache Linux Debian

Réaliser un inventaire Documentation utilisateur

SERVEUR HTTP Administration d apache

CDS Invenio Installation et configuration de base

Procédure d'installation

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Chapitre 02. Configuration et Installation

Tutoriel compte-rendu Mission 1

Préparation d un serveur Apache pour Zend Framework

GUIDE D INSTALLATION DE L APPLICATION GECOL SUR

Projet de mise en œuvre d un serveur ftp sur serveur dédié

Note : Ce tutoriel a été réalisé sur GNU/Linux (Ubuntu) avec un serveur LAMP installé en local.

Installation GLPI-OCSNG-SSL Linux Debian Sarge

04/02/2014 Tutoriel. Lubuntu & glpi. thomas [NOM DE LA SOCIETE]

Serveur Web Apache - SSL - PHP Debian GNU/Linux

TP HTTP. Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A

Afin d'éviter un message d'erreur au démarrage du service Apache du type :

Installation d'un serveur sftp avec connexion par login et clé rsa.

Installation de Zabbix

Installation d un hébergement Web à domicile

Projet de Semestre. Page Web Didactique de Visualisation d Algorithme. Université de Genève - semestre de printemps 2012

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

Mise en place d un serveur Proxy sous Ubuntu / Debian

PPE GESTION PARC INFORMATIQUE

GUIDE D INSTALLATION. Portaneo Enterprise Portal version 4.0

Module 7 : Configuration du serveur WEB Apache

Tuto 2 : Configuration Virtual box, Configuration et installation du serveur XiBO

Sauvegarde automatique des données de GEPI

Table des matières Hakim Benameurlaine 1

Installation du serveur WEB Apache ( MySQL, PHP) sous Debian 7.

Maintenance et gestion approfondie des Systèmes d exploitation Master 2 SILI. Année universitaire David Genest

Atelier individuel. Linux 101. Frédérick Lefebvre & Maxime Boissonneault frederick.lefebvre@calculquebec.ca U. Laval - Janv. 2014

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

Déploiement d OCS 1.02 RC2 sous Debian Etch 64

BTS SIO Dossier BTS. PURCHLA Romain

Formation subversion (svn) Marc-Olivier Buob

WDpStats Procédure d installation

C.M. 1 & 2 : Prise en main de Linux

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Utilisation de l espace personnel (Serveur DATA)

SSH. Romain Vimont. 7 juin Ubuntu-Party

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

Ajout et Configuration d'un nouveau poste pour BackupPC

Serveur de sauvegardes incrémental

COURS 5 Mettre son site en ligne! Exporter son site avec WordPress Duplicator Installer un logiciel FTP Faire le suivi des visites de son site avec

Installation et configuration d OCS/GLPI sur un Serveur Debian

Installation d' OCS inventory et de GLPI

WEBMESTRE : CONCEPTION DE SITES ET ADMINISTRATION DE SERVEURS WEB

CYBERGATE -TP-APACHE_2.DOC

Gérer ses environnements de développement avec Vagrant RMLL 2012

L installation a quelque peu changée depuis les derniers tutos, voici une actualisation.

TD4 - Supervision et métrologie des réseaux. 1 Supervision des applications et services réseaux et des ressources locales

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

Outils Logiciels Libres

Sauvegardes par Internet avec Rsync

2011 Hakim Benameurlaine 1

Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall

FTP : File TRansfer Protocol => permets d envoyer des gros fichiers sur un serveur (ou de télécharger depuis le serveur)

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Installation / Sauvegarde Restauration / Mise à jour

Projet Administration Réseaux

INSTALLATION NG V2.1 D OCS INVENTORY. Procédure d utilisation. Auteur : GALLEGO Cédric 23/10/2014 N version : v1

sshgate Patrick Guiran Chef de projet support

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

GLPI OCS Inventory. 1. Prérequis Installer un serveur LAMP : apt-get install apache2 php5 libapache2-mod-php5 apt-get install mysql-server php5-mysql

SERVEUR WEB LINUX LAMP. Raymond RAZAFIMAMONJY Administration LINUX / UNIX Chapitre 15

Serveur de travail collaboratif Michaël Hoste -

Documentation FOG. Déploiement d images de systèmes d exploitation à travers le réseau.

Bon ben voilà c est fait!

UE5A Administration Réseaux LP SIRI

Comment avoir le logiciel? Le serveur web APACHE peut être téléchargé gratuitement du site web de APACHE:

Aubert Coralie, Ruzand Brice GTR 2002 Bonvarlet Manuel, Desroches Alexandre, Magnin Cyril DRT Notice technique 1

Simple Database Monitoring - SDBM Guide de l'usager

Installation d ORACLE 10g sous Debian Etch

équipement radio Procédure

Atelier Le gestionnaire de fichier

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Documentation FOG. 3. Choisir le nom de la machine, le nom d utilisateur et le mot de passe correspondant (par exemple : fog, password)

CASE-LINUX MAIL - ROUNDCUBE

Supervision avec OCS Inventory NG

Serveur de sauvegarde à moindre coût

Installation du transfert de fichier sécurisé sur le serveur orphanet

Accès aux ressources informatiques de l ENSEEIHT à distance

Serveur d impression CUPS

Installation des outils OCS et GLPI

ADF Reverse Proxy. Thierry DOSTES

Petit guide pour l installation de CVW sous Linux

GPI Gestion pédagogique intégrée

Chapitre 1 Windows Server

TD séance n 2c Mise à jour des Systèmes

Dans le cadre de SECURIDAY Et sous le thème de Computer Forensics Investigation SECURINETS. Analyse des fichiers LOG. Tarek LABIDI (RT3)

Documentation technique template Mailing list. Debian 5.0 ispconfig3

1 Démarrage de Marionnet

OCS Inventory & GLPI

Transcription:

Faculté des Sciences Département d Informatique Installation de Trac et SVN Gaëtan PODEVIJN - François SANTY - Florent VANSILIETTE BA3 - Informatique Administration des Systèmes Sébastien COLETTE Année académique 2009 2010

Administration de systèmes (INFO-F-309) Rapport d analyse Mars 2010 Table des matières 1 Introduction 1 2 Descriptif et choix 2 3 Comparaisons avec les alternatives 2 4 Contraintes 3 4.1 Besoins matériels................................ 3 4.2 Système d exploitation............................. 3 5 Phases du déploiement 4

1 Introduction La société forge. extbft S.A., spécialisée dans le développement d applications bancaires, souhaite améliorer la productivité de son équipe de développeurs en mettant à leur disposition un logiciel de gestion de projets. L équipe d administrateurs système a étudié le problème et propose dans le présent document, une analayse détaillée de la mise en place d un tel service. L équipe de développeurs est composée comme suit : Sylvain, le chef de projet ; son rôle est de planifier, gérer et veiller au bon déroulement des projets que se voit attribué(e) forge. extbft S.A.. Julien et Pierre, les deux analystes ; ils ont la tâche d évaluer, à un haut niveau, les différentes manières de mettre en oeuvre les besoins des clients. Laurent, Pascal, Samuel, Sébastien et Romain, les cinqs programmeurs ; leur rôle est de mettre au point et traduire en lignes de code une solution technique liée aux projets sur lesquels ils travaillent. Le service devant être le plus complet possible, il est impératif d aménager : un système permettant à l équipe de créer et modifier des pages Web et ce, de manière intuitive. Il est en effet important de pouvoir centraliser les informations liées aux différents projets (spécificités des besoins systèmes, spécificités des besoins utilisateurs,...) ; un outil de signalisation de bugs, grâce auquel il serait possible d avertir l équipe de la découverte d une erreur ; un gestionnaire de versions, de manière à ce que chaque employé puisse, à tout moment, disposer de la dernière version disponible des fichiers. un historique, qui permettra aux développeurs d accéder facilement à une version antérieure d un fichier, et au chef de projet de vérifier le bon respect des contraintes temporelles. D autre part, le logiciel devra permettre d accorder des droits en écriture et en lecture sur les sources au chef de projet ainsi qu aux développeurs, mais uniquement des droits en lecture pour les analystes. De plus, dans le but d éviter toute perte de donnée, la société souhaite disposer d un système de backup qui devra, à intervalles réguliers, sauvegarder l ensemble des fichiers relatifs à chacun des projets en cours. Ces sauvegardes seront envoyées sur un serveur externe à l entreprise. En effet, une catastrophe naturelle dans le bâtiment pourrait avoir comme conséquence la perte des données stockées sur les deux serveurs. Cependant, pour des raisons de sécurités et parce que la machine n est pas gérée de manière physique par l équipe des administrateurs, ceux-ci ont décidé de chiffrer les archives de sauvegardes. Enfin, compte tenu du budget accordé à l équipe pour la mise en place d un tel système, celui-ci est basé sur une solution de logiciels libres ayant fait leurs preuves dans leur domaine. 1

2 Descriptif et choix Un gestionnaire de projet, également connu sous le nom de forge, est un système de développement collaboratif d applications. Son but est de permettre à plusieurs développeurs de participer conjointement à l élaboration d un logiciel, généralement au travers d Internet. Selon le type de projet, tout un chacun est en mesure d apporter une contribution plus ou moins importante au développement d une application. Les outils les plus couramment offerts par les systèmes de gestion de projets sont les suivants 1 : un gestionnaire de versions ; un gestionnaire de listes de discussions ; un outil de signalisation et de suivi des bugs (BugTracker) ; un gestionnaire de pages Web (généralement sous forme d un Wiki) ; un gestionnaires des tâches à réaliser ; un outil de traduction en ligne. Il existe deux types de forges : 1. celles qui se basent sur un service d hébergement en ligne (la plus connue étant certainement SourceForge.net) ; 2. celles qui nécessitent l installation d un ou plusieurs logiciels. Leur principal avantage par rapport aux précédentes est la relative indépendance qu elles apportent, puisqu il est alors possible de configurer beaucoup plus finement les différentes options que propose le système. En contrepartie, elles apportent un coût supplémentaire de mise en place et de maintenance. Trac appartient à la deuxième catégorie de forges. Il s agit d un logiciel libre 2 de gestion de projets développé par la société Edgewall Software. Il est écrit en Python et implémenté sous la forme d une interface Web. Trac est un logiciel éprouvé qui est actuellement utilisé au sein d un très grand nombre de projets 3. 3 Comparaisons avec les alternatives Une première alternative à Trac, et aux forges de manière générale, consiste à installer tous les outils qu il propose séparément. Cependant, outre la complexité de déploiement évidente, il peut également se présenter des problèmes d interférences et/ou d incompatibilités entre ces différents outils. D autre part, il est également envisageable d opter pour un système d hébergement de projets en ligne (forges de première catégorie). Mais ces solutions, bien qu elles présentent l avantage d être immédiatement utilisables, sont généralement réservées aux projets libres, même si il est parfois possible, en échange d une certaine somme d argent, de protéger les fichiers hébergés. Par ailleurs, elles ne proposent pas toujours 1 fr.wikipedia.org/wiki/forge_(informatique), 15 mars 2010 2 Licence BSD depuis le second semestre de 2005 3 trac.edgewall.org/wiki/tracusers 2

un niveau de configuration suffisant. Enfin, il existe un grand nombre de logiciels de gestion de projets, qu ils soient libres ou non. Cependant, ils proposent des outils différents qui ne répondent pas toujours aux contraintes imposées par forge. extbft S.A.. Notre choix s est porté sur Trac pour sa grande notoriété et sa robustesse reconnue. 4 Contraintes 4.1 Besoins matériels Trac sera installé sur une machine centrale appelée serveur. Celle-ci stockera les fichiers relatifs aux projets en cours. Un serveur externe quant à lui, sera utilisé pour stocker les archives de backup. Néanmoins, les exigences matérielles liées à Trac sont relativement faibles. Ainsi, il sera nécessaire de disposer d une machine équipée : d un processeur dont la fréquence est supérieure ou égale à 500Mhz ; d un minimum de 128MB de mémoire vive. 4.2 Système d exploitation Il est à la fois possible d installer Trac sur un système Windows et sur un système Unix. Nous excluons la première solution car elle implique l acquisition d une licence supplémentaire qui peut, suivant la version du système considérée, s avérer relativement élevée. Il nous reste alors à considérer les différentes alternatives au sein des systèmes Unix. Notre choix se portera sur un système d exploitation GNU/Linux. En effet, ces systèmes ont pour avantage d être totalement gratuits et parfaitement modulables. En particulier, nous utiliserons la distribution Ubuntu car elle dispose d une communauté d utilisateurs très active et est actuellement très réputée pour sa facilité 3

d utilisation et sa stabilité. En pratique, nous utiliserons la version 9.10 (Karmic Koala) de la distribution Ubuntu, sortie en octobre 2009 et maintenue jusqu en avril 2011. Cependant, dans le rapport technique, nous ne considérerons pas l installation du serveur. 5 Phases du déploiement Le déploiement du système sera découpé en plusieurs phases : l installation et la configuration des différentes libraires requises au bon fonctionnement de Trac ; l installation à proprement parlé du logiciel Trac ; l installation du logiciel de backups ; la vérification du bon fonctionnement du système. 4

Administration de systèmes (INFO-F-309) Rapport d implémentation Mars 2010 Table des matières 1 Aspects techniques 1 2 Implémentation 1 2.1 Localisation des projets.................................. 1 2.2 Installation des paquets................................. 1 2.3 Création des fichiers d identifications et de permissions............... 2 2.4 Configuration du serveur Web............................. 4 3 Outils supplémentaires 6 3.1 Création d un nouveau projet.............................. 6 3.2 Ajouter des utilisateurs.................................. 7 3.3 Installation du plugin................................... 8 3.4 Backup distant....................................... 8 3.4.1 Installation..................................... 8 3.4.2 Configuration................................... 9

1 Aspects techniques Le système fait continuellement tourner deux processus en mémoire : apache2 et svnserve. Le premier est le serveur Web grâce auquel sera accessible l interface de Trac ainsi que l accessibilité aux fichiers déposés sur SVN. Le logiciel de backup est lancé grâce à cron. Fichiers de configuration /etc/apache2/site-avalaible/tracserver fichier VirtualHost permettant de configurer l accessibilité à Trac er SVN. /etc/accessfile fichier relatif aux permissions d accès des repositories SVN. /etc/autfile fichier contenant les utilisateurs de Trac et SVN aisni que leurs mot-de-passes chiffrés. Ce fichier est généré à l aide de la commande htpasswd. /etc/backup-manager.conf fichier de configuration du logiciel de backups. Scripts d administration projectcreator scriot bash à lancer en root qui permet d ajouter un nouveau projet. trac-adduser script python à lancer en root qui permet d ajouter un nouvel utilisateur dans un groupe existant 2 Implémentation 2.1 Localisation des projets Nous allons créer deux répertoires à la racine du système de fichier du serveur, trac et svn. Chacun de ces deux répertoires contiendra des sous-répertoires correspondant aux projets de forge. extbft S.A.. La commande à utiliser est la suivante : > sudo mkdir /trac /svn 2.2 Installation des paquets Avant de débuter l installation et la configuration de Trac à proprement parler, il est nécessaire de télécharger les paquets correspondants à Apache, Python et Subversion, ainsi qu un certain nombre de leurs dépendances. Nous allons passer par le gestionnaire de paquet apt-get : > sudo apt-get update > sudo apt-get install apache2 libapache2-mod-python libapache2-svn python-setuptools subversion pythonsubversion Suivant la méthode d installation choisie, Trac est disponible en plusieurs versions. Il aurait été tout à fait envisageable d installer Trac à l aide du gestionnaire de paquet apt-get, mais la version disponible dans le dépôt Universe est la 0.11.5. Afin de bénéficier des dernières mises à jours et fonctionnalités, nous allons installer la version 0.11.7, disponible sur le site des développeurs. Cette opération nécessite d utiliser l outil easy install, un gestionnaire de modules Python qui permet d installer des fichiers locaux ou distants. Il suffit de donner en paramètre le chemin d accès au fichier : 1

> sudo easy install http ://ftp.edgewall.com/pub/trac/trac-0.11.7.tar.gz Nous disposons à présent de l ensemble des outils nécessaires au déploiement et à la configuration de Trac. 2.3 Création des fichiers d identifications et de permissions Nous allons créer un fichier qui contiendra des couples {identifiant : motdepasse} de manière à ce que chacun des employés de forge. extbft S.A. puisse s identifier sur l interface Web de Trac et auprès du serveur Subversion. La création de ce fichier fait appel à l utilitaire htpasswd. Nous allons commencer par créer un seul utilisateur correspondant à Sylvain, le chef de projet. Cet utilisateur se verra également attribuer tous les droits administrateurs par la suite. Nous ajouterons ensuite les autres employés. Le fichier d identification se situera dans le répertoire /etc. > sudo htpasswd -cm /etc/authfile Sylvain > sudo htpasswd -m /etc/authfile Julien > sudo htpasswd -m /etc/authfile Pierre > sudo htpasswd -m /etc/authfile Laurent > sudo htpasswd -m /etc/authfile Pascal > sudo htpasswd -m /etc/authfile Samuel > sudo htpasswd -m /etc/authfile Sebastien > sudo htpasswd -m /etc/authfile Romain Le flag c indique à htpasswd de créer le fichier d authentification, tandis que le flag m lui impose d utiliser l algorithme de cryptage MD5 d Apache. Nous créons à présent un fichier de permissions qui nous permettra d attribuer des permissions différentes suivant le statut des employés. > sudo vim /etc/accessfile Ce fichier contiendra les informations suivantes : # Définition des groupes d utilisateurs [groups] administrator = Sylvain developers = Laurent, Pascal, Samuel, Sebastien, Romain analysts = Julien, Pierre # Définition des permissions pour chacun des groupes [/] @administrator = rw @developers = rw @analysts = r Ce fichier déterminera les permissions d accès aux répertoires de Subversion. Une fois ce fichier créé, le script suivant permet d ajouter un utilisateur à un groupe existant. La commande est la suivante : > sudo./trac-adduser user=user group=groupe 2

#!/usr/bin/python -Wignore # -*- coding: utf-8 -*- import os import commands from optparse import OptionParser from getpass import getpass ACCESS_FILE = "accessfile" PWD_FILE = "pwdfile" def create_user(user): if os.path.exists(pwd_file): [err_no, err_msg] = commands.getstatusoutput("htpasswd -m %s %s" % (PWD_FILE, user)) else: [err_no, err_msg] = commands.getstatusoutput("htpasswd -cm %s %s" % (PWD_FILE, user)) return [err_no, err_msg] def get_existing_groups(): grouplist = [] try: f = open(access_file, r ) # on skip la première ligne "[groups]" f.readline() # tant qu on arrive pas à [/] line = f.readline() while line!= "[/]\n": # On récupère le nom de chaque groupe, lequel se trouve # à gauche de chaque symbole = groupline = line.split( =, 1) agroup = groupline[0] grouplist.append(agroup) line = f.readline() f.close() except IOError as (errno, strerror): print "I/O error({0}): {1}".format(errno, strerror) except: print "Erreur inatendue : ", sys.exec_info()[0] raise return grouplist def add_user_to_group(user, group): os.rename( ACCESS_FILE, ACCESS_FILE+" " ) try: destination = open( ACCESS_FILE, "w" ) # Pour chaque ligne qu on réécrit, on récupère le nom du groupe # Si ce dernier est celui dans lequel on ajoutera le nouvel # utilisateur, alors on ajoute le nom de ce dernier à la fin de la ligne wordslist = [] i = 0 for line in open(access_file+" ", "r"): 3

wordslist.append(line.split( =, 1)) if wordslist[i][0] == group: line = "%s, %s \n" % (line.replace("\n",""), user) destination.write( line ) i +=1 except IOError as (errno, strerror): print "I/O error({0}): {1}".format(errno, strerror) except: print "Erreur inatendue : ", sys.exec_info()[0] raise destination.close() os.remove(access_file+" ") def main(): usage = "usage: %prog [option] arg" parser = OptionParser(usage=usage, version="%prog 1.0") parser.add_option("-u", "--user", dest="user", default=none, help="username du nouvel utilisateur") parser.add_option("-g", "--group", dest="group", default=none, help= "Group de destination du nouvel utilisateur") (options, args) = parser.parse_args() if os.getuid()!= 0: print "Vous n êtes pas root!" exit(1) user = options.user group = options.group while not user: user = raw_input( Username: ) while not group: group = raw_input( Groupe: ) while group not in get_existing_groups(): print "Erreur: le groupe " + group + " n existe pas!" group = raw_input( Groupe: ) [err_no, err_msg] = create_user(user) if err_no!= 0: print "\nune erreur est survenue lors de l ajout de l utilisateur" print "Message :" print "\t" + err_msg add_user_to_group(user, group) if name == main : main() 2.4 Configuration du serveur Web Nous allons créer et configurer un nouvel hôte virtuel sur notre serveur Apache. L hébergement virtuel consiste, pour un serveur Web, à servir plusieurs sites Web simultanément, et ce, de manière totalement transparente pour les clients. Nous allons pour cela créer un nouveau 4

fichier de configuration. Nous commencons par nous placer dans le répertoire contenant les sites Web virtuellement hébergés : > cd /etc/apache2/sites-available/ Nous créons ensuite le fichier relatif à l interface Web de Trac : > sudo vim tracserver Ce fichier contiendra les informations suivantes : <VirtualHost *> ServerAdmin administrator@email.com # Répertoire racine DocumentRoot /var/www/ <Directory /> # Le serveur est autorisé à suivre les liens symboliques Options FollowSymLinks # Les éventuels fichier.htaccess sont ignorés AllowOverride None </Directory> <Directory /var/www/> # Interdir le listage du répertoire, autoriser les liens symboliques, permet à Apache de rechercher un répertoire dont le nom ressemble au répertoire recherché Options Indexes FollowSymLinks MultiViews # Les éventuels fichier.htaccess sont ignorés AllowOverride None Order allow,deny # Tout le monde peut accéder au répertoire allow from all </Directory> # Fichier journal des erreurs ErrorLog /var/log/apache2/error.log # Indique au serveur de n indiquer dans le journal que les warning LogLevel warn CustomLog /var/log/apache2/access.log combined # Permet la configuration d une ligne de bas de page pour les documents générés par le serveur ServerSignature On <Location /svn/> # Activation du module SVN DAV svn # Définition du dossier parent des répertoires SVN SVNParentPath /svn # Si l utilisateur accède au répertoire parent, l ensemble des sous-répertoire s affichera 5

SVNListParentPath on # Authentification par mot de passe AuthType Basic AuthName "Subversion Repository" # Fichier d authentification (ensemble de couples identifiant:motdepasse) AuthUserFile /etc/authfile Require valid-user # Fichier de permissions AuthzSVNAccessFile /etc/accessfile </Location> <Location /trac> # Trac sera géré par un module Python SetHandler mod_python PythonHandler trac.web.modpython_frontend # Répertoire racine des environnements trac PythonOption TracEnvParentDir /trac PythonOption TracUriRoot /trac # Authentification par mot de passe AuthType Basic AuthName "Trac" # Fichier de permissions AuthUserFile /etc/authfile Require valid-user </Location> </VirtualHost> Une fois notre hôte virtuel configuré, nous l activons, nous rechargeons Apache, et nous rendons l utilisateur www-data propriétaire du fichier : > sudo a2ensite tracserver > sudo /etc/init.d/apache2 reload > sudo chown -R www-data /trac Afin de rendre l interface Web de Trac accessible, il est cependant nécessaire de désactiver l entrée par défaut : > sudo a2dissite default > sudo /etc/init.d/apache2 reload 3 Outils supplémentaires 3.1 Création d un nouveau projet En vue de simplifier l intégration d un nouveau projet dans Trac, nous avons écrit un script qui automatise les tâches à réaliser. Il suffit de donner en paramètre au script le mnémonique et le nom complet du nouveau projet. Ainsi, la commande à insérer est la suivante : > projectcreator mnemonique nomcomplet 6

Le script est le suivant : #!/bin/bash if [ "$(whoami)"!= root ] ; then echo "Erreur : exéctuez le script en root!" exit fi mnemonique="$1" nomcomplet="$2" admin="$3" # -z permet de vérifier si une variable est vide # $# est le nombre d arguments passés en ligne de commande if [ "$#"!= 2 ] [ -z "$mnemonique" ] [ -z "$nomcomplet" ] [ -z "$admin" ] ; then echo "Utilisation : projectcreator <mnemonique> <nomcomplet> <admin>" exit fi svnadmin create /svn/$mnemonique 2$>>$ err_createproject.log res_create=$? chown -R www-data /svn/$mnemonique 2$>>$ err_createproject.log res_chown_svn=$? trac-admin /trac/$mnemonique initenv $nomcomplet sqlite:db/trac.db svn /svn/ $mnemonique --inherit=/etc/trac.ini 2$>>$ err_createproject.log res_trac_admin_init=$? chown -R www-data /trac/$mnemonique 2$>>$ err_createproject.log res_chown_trac=$? trac-admin /trac/$mnemonique permission add $admin TRAC_ADMIN 2$>>$ err_createproject.log res_trac_admin_perm=$? if [ $res_create!= 0 ] [ $res_chown_svn!= 0 ] \ [ $res_trac_admin_init!= 0 ] [ $res_chown_trac!= 0 ] \ [ $res_trac_admin_perm!= 0 ] ; then echo "Erreur : une erreur est survenue lors de la création du projet" else echo "Projet ajouté avec succès" fi Une fois le script écrit, nous autorisons son exécution et nous le plaçons dans le répertoire /bin afin qu il soit exécutable depuis n importe quel emplacement. > sudo chmod a+x projectcreator > sudo mv projectcreator /bin/ 3.2 Ajouter des utilisateurs Pour ajouter des utilisateurs, il est nécessaire que le fichier accessfile soit fonctionnel. Pour ceci, nous vous renvoyons à la section 2.3. Le script utilisé est le suivant 7

3.3 Installation du plugin Nous allons installer un plugin qui permet de gérer les projets. Il aura pour but d administrer finement les permissions des projets et d ajouter ou supprimer des utilisateurs. Tout d abord, il faut récupérer le plugin Svnuthz File Administration : > sudo easy install http://trac-hacks.org/svn/svnauthzadminplugin/0.11 Il faut ensuite éditer le fichier /etc/trac.ini et configurer la variable authz file : [trac] authz file = /etc/accessfile La gestion des permissions est à présent disponible dans le panneau d administration de l interface web. Il sera cependant nécessaire d activer manuellement le plugin via le panneau de configuration. 3.4 Backup distant Pour des raisons de sécurité, nous allons implémenter un système de backup incrémentale des deux répertoires utilisés par Trac et SVN. Ceux-ci envoyés sur un serveur externe dont la distribution installée est Ubuntu. Ce serveur, appelé backup dans la suite, n est pas hébergé au sein de l entreprise. En effet, des catastrophes naturelles peuvent arriver et endommager le serveur de backups. Ainsi, en externalisant les sauvegardes, nous augmentons les chances de récupérer les données perdues. Cependant, la machine n étant pas physiquement dans l entreprise, nous n avons aucun contrôle quant à l accès à cette dernière. C est pourquoi chaque archive sera cryptée à l aide de gpg. L outil utilisé est backup-manager. A partir d un fichier de configuration, ce dernier pourra crypter et envoyer les sauvegardes via scp sur la machine distante. Bien sûr, d autres méthodes de transfert sont disponibles (ftp, rsync, s3, ssh-gpg). 3.4.1 Installation Sur le serveur, il est nécessaire d installer les paquets relatifs à backup-manager et opensshclient. > sudo apt-get install backup-manager openssh-client Bien que l installateur nous demande certaines informations, nous allons laisser celles par défaut. En effet, il suffira d éditer le fichier de configuration par la suite pour spécifier nos préférences. Sur la machine backup, il suffit d installer le paquet openssh-server. La commande à insérer est la suivante : > sudo apt-get install openssh-server 8

3.4.2 Configuration Afin d automatiser les backups, la connexion au serveur distant doit se faire sans introduire de mot-de-passe. Ainsi, nous allons utiliser une technique de clé publique / clé privée. Mot-de-passe root C est l utilisateur root qui enverra les données et qui se connectera sur la machine backup. Aussi, la première étape est de leur attribuer un mot-de-passe. En effet, Ubuntu utilise le système sudo pour exécuter des commandes sous le super-utilisateur. Sur le serveur et sur la machine de backup, il suffit de se connecter avec son identifiant et d exéctuter les commandes suivantes : > sudo su - > passwd Nous introduisons ensuite un mot de passe de notre choix. Clé publique et clé privée (ssh) Nous créons à présent le jeu de clé sur le serveur. > ssh-keygen -t dsa Le système nous demande où localiser le fichier (nous laissons la valeur par défaut) et un «passphrase» que nous laissons vide. La deuxième étape consiste à copier la clé publique sur la machine backup : > ssh-copy-id -i /.ssh/id dsa.pub root@backup La clé publique est maintenant sur la machine de backup et l utilisateur root peut s y connecter en ssh sans devoir y entrer son mot-de-passe. Clé publique et clé privée (gpg) Les archives seront cryptées à l aide de gpg. Il faut donc créer sa paire de clé. > gpg gen-key Le système nous demande plusieurs informations. Premièrement, le type de clé voulu. Nous sélectionnons la première DSA and Elgamal. Ensuite, la taille de la clé. Une bonne valeur est 1024. La clé doit ne doit pas expirer. L e-mail inséré sera important pour la configuration de backup-manager. Enfin, nous choisissons une passphrase qui servira pour décrypter les archives. Backup-Manager Nous allons à présent configurer backup-manager. Le fichier à éditer est /etc/backup-manager.conf : 9

> sudo vim /etc/backup-manager.conf Voici les lignes nécessaires à sa configuration. Les autres peuvent être commentées ou supprimées. #################################### # Les répertoires #################################### # Où stocker les archives export BM_REPOSITORY_ROOT="/var/archives" # Emplacement des fichiers temporaires export BM_TEMP_DIR="/tmp" # Pour des raisons de sécurités, le répertoire contenant les archives ainsi que # ces dernières seront r/w par un user/group spécifié. export BM_REPOSITORY_SECURE="true" export BM_REPOSITORY_USER="root" export BM_REPOSITORY_GROUP="root" export BM_REPOSITORY_CHMOD="770" #################################### # Les archives #################################### # Chaque archive est chmod pour des raisons de sécurités export BM_ARCHIVE_CHMOD="660" # Time to Live de chaque archive export BM_ARCHIVE_TTL="5" # Pas de purge récursif export BM_REPOSITORY_RECURSIVEPURGE="false" # Création de symlinks pour les archives dupliquées # Ex : archive-jour-n == archive-jour-n-1 selon le hash md5 export BM_ARCHIVE_PURGEDUPS="true" # Prefix des archives export BM_ARCHIVE_PREFIX="$HOSTNAME" # On purge uniquement nos archives (préfixée de BM_ARCHIVE_PREFIX) export BM_ARCHIVE_STRICTPURGE="true" # On laisse un nice moyen export BM_ARCHIVE_NICE_LEVEL="10" # On choisit un backup incrémental pour des raisons de places export BM_ARCHIVE_METHOD="tarball-incremental" #################################### # Encryptions des archives #################################### # Seulement disponibles pour les archives du types tar, tar.gz, tar.bz2 export BM_ENCRYPTION_METHOD="gpg" # Email spécifié lors de la création des clés gpg export BM_ENCRYPTION_RECIPIENT="EMAIL" 10

#################################### # Tarball #################################### # Nom du fichier d archive # long : host-full-path-to-folder.tar.gz # short : parentfolder.tar.gz export BM_TARBALL_NAMEFORMAT="long" # Type de l archive # Types disponibles # tar, tar.gz, tar.bz2, tar.lz, dar, zip. # tar.bz2 a un meilleur taux de compression export BM_TARBALL_FILETYPE="tar.bz2" # On ne veut pas déréférencer les fichiers pointés par des symlinks export BM_TARBALL_DUMPSYMLINKS="false" # Cible du backup # Chemins d accès vers les répertoires export BM_TARBALL_DIRECTORIES="/trac /svn" # Fréquences à laquelles les backups complets sont effectués export BM_TARBALLINC_MASTERDATETYPE="weekly" # Jour 1 = Lundi, jour 7 = dimanche export BM_TARBALLINC_MASTERDATEVALUE="6" ################################## # Section "UPLOAD" ################################## # On utilise scp pour envoyer les archives sur le réseau export BM_UPLOAD_METHOD="scp" # Destination export BM_UPLOAD_HOSTS="ip-destination" # Dans quel répertoire? export BM_UPLOAD_DESTINATION="/var/backups" # C est l utilisateur root qui upload les fichiers export BM_UPLOAD_SSH_USER="root" # Sa clé privée export BM_UPLOAD_SSH_KEY="/root/.ssh/id_dsa" # L host (override BM_UPLOAD_HOSTS) export BM_UPLOAD_SSH_HOSTS="ip-destination" # Port d ssh export BM_UPLOAD_SSH_PORT="22" # destination des archives (override BM_UPLOAD_DESTINATION) export BM_UPLOAD_SSH_DESTINATION="/var/backups" # On purge les archives sur la machine de backup avant l upload export BM_UPLOAD_SSH_PURGE="true" ############################################# 11

# Options avancées ############################################# # On log les message de BM export BM_LOGGER="true" # On utilise cron pour lancer BM export BM_LOGGER_FACILITY="cron" Une fois le fichier sauvegardé, backup-manager se chargera automatiquement de sauvegarder les répertoires /svn et /trac chaque samedi. Pour décrypter les archives, utilisez la commande : > gpg -d <archive.gpg> > archive Et entrez votre passphrase. 12