Virtualisation : Ce qu il faut savoir :



Documents pareils
Installer un serveur web de développement avec VirtualBox

Table des matières. 1. Installation de VMware ESXI Pré-requis Installation... 3

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

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

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

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

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

Machine virtuelle W4M- Galaxy : Guide d'installation

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

BTS SIO Dossier BTS. PURCHLA Romain

THEME : Mise en place d une plateforme d enseignement à distance

Projet Semestre2-1SISR

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min)

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

Installation de VirtualPOPC-1 sur Ubuntu Server LTS 64bits

Architecture de la plateforme SBC

INSTALLATION DEBIAN 7 (NETINSTALL) SUR VM

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

Itium XP. Guide Utilisateur

ArcGis Server 10 (sur VM CentOS bits) DOCUMENT D INSTALLATION

Mise en place des TPs Réseau en machines virtuelles. Utilisation de VmPlayer

But de cette présentation. Bac à sable (Sandbox) Principes. Principes. Hainaut P

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

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

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Il est courant de souhaiter conserver à

[ GLPI et OCS pour Gentoo 2006] ArtisanMicro. Alexandre BALMES

Installation / Sauvegarde Restauration / Mise à jour

Guide d installation de SugarCRM Open Source version 4.5.1

Pratique et administration des systèmes

Installation de Zabbix

Installation des outils OCS et GLPI

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

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

Installation d ORACLE 10g sous Debian Etch

Table des matières. 1. Installation de VMware ESXI Pré-requis Installation... 5

1. La plate-forme LAMP

A Libre Ouvert. Médiathèque Jacques Ellul. le

ClariLog - Asset View Suite

Guide d installation BiBOARD

Installation et configuration d OCS/GLPI sur un Serveur Debian

MANUEL D INSTALLATION D UN PROXY

Serveur Acronis Backup & Recovery 10 pour Linux. Update 5. Guide d'installation

Supervision avec OCS Inventory NG

Documentation d'installation Plateforme femme actuelle

INSTALLATION ET CONFIGURATION D'UN SERVEUR WEB SUR MAC OS X

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

DOCUMENTATION ADMINISTRATEUR

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

GEST_INSTANCES APPLICATION DE GESTION DES INSTANCES ET REUNIONS EN EPLE ETABLISSEMENT PUBLIC LOCAL D ENSEIGNEMENT

MANUEL UTILISATEUR KIWI BACKUP V 3

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

Notes pour l'installation d'une version de Eprints sur une machine CentOS4.2 Stéphanie Lanthier Le jeudi 17 février 2006

Étape 1 / CHOISIR UN HÉBERGEMENT

Joomla! Création et administration d'un site web - Version numérique

Mise en place d un serveur trixbox sur un domaine Kwartz. Version 1.0 du 25 juin 2012 Lycée Polyvalent d Artois, Noeux les Mines Adrien Bonnel

Installation du Hub. Installation du Hub. 1. Description de l installation. by LegalBox. 2 types de serveur sont à installer :

Guide de migration BiBOARD V10 -> v11

PPE GESTION PARC INFORMATIQUE

Atelier Le gestionnaire de fichier

Compte rendu d'activité PTI n 2

Mise en place d un système de Téléphonie sur IP basé sur le logiciel Asterisk

CASE-LINUX MAIL - ROUNDCUBE

Raspberry pi : Développer une petite application web sur Raspberry

Parallels Transporter Lisez-moi

Les serveurs WEBUne introduction

DSI - Pôle Infrastructures

LiveUSB clefisn. Meilland jean claude et Kbida Abdellatif. 16 septembre 2012

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

Visualization sur Ubuntu: Quels Choix? Nicolas Barcet

L installation du module Webmail nécessite également quelques prérequis, à savoir :

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

Installer Joomla Pearson France Joomla! Le guide officiel Jennifer Marriott, Elin Waring

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

Projet Administration Réseaux

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

Gestion de parc Windows depuis Unix. Pascal Cabaud & Laurent Joly

User Documentation. Documentation utilisateur. version 0.2b

Tutoriel Drupal version 7 :

Système Principal (hôte) 2008 Enterprise x64

OCS Inventory & GLPI

Fais ton site internet toi-même

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

Systèmes informatiques

SQL Server Installation Center et SQL Server Management Studio

windows. deb etch main deb-src etch main

MANUEL INSTALLATION. GANESHA version 4. Editeur Anéma SAS Département Développement

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

La virtualisation de serveurs avec VMWare Infrastructure - Retour d expérience. Rodérick Petetin CRI INSA Rennes

TP Déploiement de réseaux IP sous Linux et MS Windows sur une infrastructure virtualisée

Etudiant Ella Fitzgerald

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

Les différentes méthodes pour se connecter

PROCEDURE ESX & DHCP LINUX

Stéphane Mariel. les Cahiers. Programmeur PHP 5. Avec la contribution de Jean Zundel et Jean-Marie Thomas. Groupe Eyrolles, 2004, ISBN

Sommaire. 1 Introduction Présentation du logiciel de commerce électronique 23

Transcription:

Virtualisation : LAMP à ma portée! Aujourd hui, la plupart des développeurs débutants utilisent WampServer pour développer leurs applications PHP, au grand dam des puristes de Linux, pardon GNU/Linux. Cet article a pour but de présenter aux uns et aux autres les nouveautés en termes d architecture, afin de réconcilier tout le monde (rien que ça). Cet article explique : Le contenu classique d un LAMP. Les différents moyens de déployer une machine Linux sans effort. L installation d Apache, MySQL et PHP à partir de paquetages. La compilation des mêmes logiciels. Niveau de difficulté LAMP est un acronyme désignant un ensemble de logiciels libres permettant de mettre en place un serveur Web. On y retrouve des produits célèbres du monde Open Source : le L de Linux, le A de Apache, le M de MySQL et le P de PHP. À noter qu il existe de nombreuses alternatives où PHP est remplacé par Perl ou Python, et MySQL par PostgreSQL comme on peut le voir ici http://en.wikipedia.org/wiki/lamp_ (software_bundle), mais pour cet article nous conservons le cas le plus classique. Chacun de ces logiciels fournit une brique d un serveur web avancé : Linux le système d exploitation. Apache, le serveur HTTP. MySQL le système de gestion de bases de données. PHP, le langage de scripts dynamique. Le faible coût de licence de ces différents produits ainsi que la facilité d exploitation et d adaptation ont fait de LAMP la combinaison de référence pour les serveurs web. Les statistiques montrent qu Apache est utilisé sur 40% des serveurs (source : http:// Ce qu il faut savoir : Installer une application sous Windows. Quelques notions de base de la ligne de commande. Quelques notions en réseau. news.netcraft.com/archives/2009/04/06/april_ 2009_web_server_survey.html) et PHP sur 32 % des serveurs (source : http://www.nexen.net/ chiffres_cles/phpversion/18822-evolution_de_ php_sur_internet_october_2008.php). Avantages d un LAMP La plupart des développeurs web disposent avec WampServer ou EasyPHP de solutions simples pour tester leurs développements. Toutefois, avoir à sa disposition un environnement LAMP pour tester ses développements est un atout, qui offre les avantages suivants : Tester le changement de système d exploitation avant la mise en production et anticiper les différences de gestion des noms de fichiers. Sous Windows, les noms de fichiers sont insensibles à la casse ; ce n est pas le cas sous Linux! Obtenir de meilleures performances lors de développements sur des applications faisant appel à de nombreux fichiers (Magento, ezpublish,...). Avoir la possibilité de mettre en place une architecture particulière (PHP 6, APC, extensions pecl), ce qui est facilité par le fait qu il est généralement plus facile de compiler un logiciel sous Linux que sous Windows, ce qui est souvent requis pour tester des versions non standard. Travailler avec un serveur de façon sûre (ce dont vous serez gré le jour où vous devrez mettre en place une correction sur votre serveur de production, avec pour seul accès une connexion SSH!). En plus, notez que de nouveaux moyens vous permettent d installer Linux très facilement sans même rebooter votre machine ou sacrifier votre précieux Windows et ce gratuitement, et même en utilisant des logiciels libres. Linux sans se fatiguer La première étape pour déployer votre LAMP est d avoir à votre disposition un système Linux. Dans un but d efficacité et de simplicité, nous allons proposer dans cet article une solution basée sur un système de machine virtuelle, afin de faire cohabiter votre système d exploitation habituel (Windows ou Linux) et celui de votre serveur LAMP (donc Linux). Principe des machines virtuelles La virtualisation est un domaine qui a pris son essor ces dernières années. En bref, il s agit de moyens matériels ou logiciels permettant de faire fonctionner, sur une machine, plusieurs systèmes d exploitation. Les intérêts sont divers, et concernent aussi bien les infrastructures réseau (séparation des services, allocation de charge facilitée) que le poste de travail (installation de machines, tests de plusieurs architectures, mise en place facilitée de serveurs de développement). De plus, avec la généralisation des processeur multi-cœurs, la performance est au rendezvous même avec des systèmes hétéroclites. Nous ajouterons, et c est particulièrement vrai si vous êtes débutant sous Linux, qu une machine virtuelle est un excellent moyen pour «pratiquer sans risque» : une fois votre machine installée, vous en faites une copie 10

LAMP de sauvegarde, et, en cas de mauvaise manipulation dans les jours suivants, il vous suffira de repartir de cette copie de sauvegarde! Accessoirement, pour éviter d effectuer une nouvelle copie de sauvegarde tous les deux jours, notez les commandes utilisées lorsque vous installez ou configurez un logiciel : vous n aurez plus qu à les rejouer lorsque vous repartirez d une sauvegarde datant de quelques jours, sans avoir à les chercher à nouveau. Continuer à développer dans votre environnement habituel Avant toute chose, même si cet article parle de faire fonctionner un environnement Linux, nous sommes parfaitement conscient du fait que de nombreux développeurs travaillent sur une machine en environnement Windows, que ce soit par choix, par maîtrise des outils, par manque de connaissance, ou bien même à cause de choix effectués au niveau de l entreprise au sein de laquelle ils travaillent. Le but de cet article n est donc aucunement de tenter de vous «convertir» à Linux comme environnement de travail! Par contre, on ne peut nier que lorsque l on travaille avec Apache, PHP, et MySQL, nos projets sont souvent amenés à être déployés sur des serveurs tournant sous Linux. Nous avons tous connu des difficultés au moment d une livraison, à cause des différences présentes entre les systèmes Windows et Linux. Nombreux parmi nous regrettent régulièrement de ne pouvoir facilement utiliser les dernières versions de PHP ou de ses extensions sur Windows. Ce que cet article vous encourage à faire est de continuer à travailler au sein de votre environnement de travail habituel, que ce soit Windows, Mac OS, ou Linux : votre environnement de développement, les navigateurs sous lesquels vous testez votre application, votre client mail, vos outils de travail collaboratif et de messagerie instantanée... Tout reste tel que vous en avez l habitude! La différence est que plutôt que de déployer des serveurs Apache et MySQL directement sur votre machine de travail, vous les installerez au sein d une machine virtuelle, qui, elle, sera hébergée par votre machine physique! Votre base de données, vos fichiers sources, tous hébergés par la machine virtuelle, seront bien évidemment mis à disposition de votre machine physique et de vos outils de développement, typiquement en passant par un réseau virtuel reliant ces deux systèmes. Avant de réellement entrer dans le vif du sujet, un mot au niveau des performances : pour travailler dans de bonnes conditions, votre machine physique devrait posséder au minimum 2 Go de RAM, et avoir un processeur dual-core ; 1 Go de RAM est de toute façon à peine suffisant, même sans lancer de machine virtuelle, si vous voulez travailler sous un IDE complet, en testant votre application sur plusieurs navigateurs en parallèle. Quelques exemples : Virtualbox et VmWARE Il existe plusieurs solutions de virtualisation, aussi bien propriétaires que libres. Les solutions les plus adaptées pour un poste de travail sont Virtual Box et Vmware. VMware est un logiciel propriétaire, connu et utilisé dans le monde professionnel, mais les composants qui nous intéressent (VMware Server, qui permet à la fois la création et l utilisation de machines virtuelles, et VMware Player, qui permet leur utilisation) sont gratuits. Virtual Box est un logiciel édité par Sun, lui aussi gratuit. Il permet à la fois d utiliser et de créer des machines virtuelles. Il existe à la fois en version propriétaire et en version libre, dite OSE, comportant quelques restrictions au niveau des fonctionnalités disponibles. Lancement d une VM Avant de lancer une VM, il vous faudra passer par la case téléchargement. Dans le cas de VMware vous avez la possibilité de trouver des machines toutes prêtes, cf. les liens en fin d article. Privilégiez les versions serveurs ou des distributions orientées serveurs (Debian), vos machines seront plus légères et moins gourmandes en mémoire et espace disque ce, en particulier, puisque les éditions serveurs de la plupart des distributions n incluent pas d environnement graphique, inutile sur une machine accédée seulement en réseau, à travers des protocoles SSH, FTP, et HTTP. Si vous choisissez de créer et d installer vous-même la machine virtuelle que vous utiliserez, voici quelques points qui nous semblent intéressants, à l usage. Si vous avez une machine dual-core, affectez un CPU à votre machine virtuelle ; si vous avez plus de core sur votre machine physique, il devient possible d en affecter 2 à la machine virtuelle. De la sorte, si la machine virtuelle se met à consommer tout le CPU mis à sa disposition, il vous en restera pour votre système hôte. Pour faire fonctionner un serveur sous Linux, avec Apache, MySQL et PHP installés, et des applications de taille raisonnable, il n est pas nécessaire d affecter trop de mémoire à votre machine virtuelle : de l ordre de 300 Mo de RAM répondront largement à votre besoin, tout en assurant qu il en reste à votre machine hôte. Au niveau de l espace disque disponible, si vous partez avec quelque chose autour de 4 à 5 Go, vous verrez que c est plus que suffisant pour la quasi-totalité des cas. Une fois la machine virtuelle créée, vient le moment d installer le système d exploitation, sous lequel tourneront les logiciels que nous utiliserons pour nos développements. Linux est disponible sous forme de «distributions», terme désignant un ensemble de logiciels formant un tout cohérent et prêts à installer. Il n est pas imaginable de lister l ensemble des distributions Linux disponibles, mais, si on souhaite se limiter aux plus connues, on peut citer Debian, Ubuntu, Fedora, Mandriva, CentOS,... Ayant l habitude de travailler avec des distributions basées sur Debian ou ses dérivées, nous utilisons généralement la distribution Ubuntu Server comme base pour mes machines virtuelles de développement. D autres auront plus l habitude de travailler sur Redhat et ses dérivées, auquel cas une version de CentOS est une possibilité ces deux distributions étant relativement accessibles à des débutants, notamment au niveau du processus d installation. Dans un cas comme dans l autre, montez l ISO de la distribution, lancez la machine virtuelle, et, à peu de chose près, choisissez Suivant une série de fois : voila votre machine Linux installée! Bien évidemment, vous trouverez peut-être que ce n est pas aussi évident au premier coup d œil... Forcément, c est nouveau, et quelques principes différent certainement des systèmes auxquels vous êtes habitués... Mais rappelez-vous : vous aller travailler au sein d une machine virtuelle : si vous ratez votre installation, que vous détruisez votre machine, que vous oubliez votre mot de passe, ou que vous installez n importe quoi, finalement, ce n est pas grave : il vous suffit de détruire la machine virtuelle, et d en re-créer une! En somme, en plus de vous permettre de développer dans un environnement plus souple, et plus proche de vos serveurs de production, voici aussi une excellente occasion de faire vos premiers pas sous Linux si vous n aviez jamais osé... Et les notions que vous allez acquérir vous seront sans le moindre doute des plus utiles le jour où un problème se posera sur votre vrai serveur, et que vos collègues plus expérimentés ne seront pas là. Installer un LAMP depuis sa distribution Une fois votre machine installée, vous pouvez y ajouter les services désirés de différentes manières. La manière la plus classique est d utiliser le système de packaging de la distribution que vous utilisez. Il y a plusieurs avantages et inconvénients à cela. En utilisant les packages préinstallés, vous bénéficierez d un système complètement intégré, qui sera facile à maintenir par des processus automatisés. C est un atout d un point de vue de la sécurité. Vous bénéficierez aussi d une arborescence normalisée. Si votre serveur est destiné à être maintenu par d autres administrateurs, www.phpsolmag.org 11

ce sera un atout important. En contre-partie vous n aurez pas toujours le choix des différentes versions des serveurs. Principe du packaging Linux, Apache, MySQL et PHP sont des logiciels Open Source, c est à dire que les développeurs ont fait le choix de placer le code source sous une licence permettant de le partager. Ce code source peut être modifié, consulté et, bien sûr, compilé par chacun d entre nous. Le principe d une distribution est d offrir par un système d installation une série de logiciels libres compilés sous forme de paquets. En outre, les différents systèmes de packaging comprennent des interfaces de paramétrage des logiciels avant et après l installation ainsi que des outils d installation automatique à partir de dépôts locaux et distants. Les deux familles de packages : RPM et DEB Les deux systèmes de packaging les plus couramment répandus sont ceux initiés par les distributions Debian et Redhat. Le premier utilise le format de fichier.deb avec le système Advanced Packet Tools ou APT pour la gestion des paquets. Ce système est utilisé dans les distributions dérivées de Debian comme la célèbre Ubuntu. Le deuxième utilise le format.rpm pour Redhat Package Manager que l on retrouve sur les distributions Fedora, CentOS ou RedHat Enterprise Server. Les systèmes sont incompatibles entre eux mais des portages de l un à l autre existent. Chacun de ces systèmes offre un ensemble de commandes permettant d installer les services ; nous allons voir ici quelques commandes simples qui vont vous permettre de déployer facilement un serveur LAMP sur l un ou l autre des systèmes. Nous nous sommes volontairement limités à l utilisation de la ligne de commande, mais sachez qu il existe des systèmes de mise à jour graphiques (synaptic dans le cas Debian/Ubuntu, up2date dans celui de Redhat/CentOS) qui ne seront malheureusement pas très pratiques le jour où vous serez bloqué avec pour seul accès à votre serveur une liaison SSH. Une grande force des systèmes de gestion de paquets est qu ils gèrent automatiquement ce qui est appelé dépendances : si vous essayez d installer un logiciel A qui a besoin d un paquet B pour fonctionner, ce paquet B sera automatiquement installé par l outil de gestion de packages. Installation sous Ubuntu La distribution Ubuntu, initiée par un entrepreneur sud-africain Mark Shuttleworth, connaît un grand succès depuis quelques années. Elle se base sur la distribution Debian et est déclinée en versions station de travail, et serveur. Comme Debian, elle fournit plusieurs interfaces pour exécuter des commandes sur le système APT, certaines graphiques, d autres en lignes de commandes. Nous allons, dans la suite de ce paragraphe, utiliser aptitude qui vous permet de rechercher et installer les paquets. Avec ce logiciel vous pouvez installer votre LAMP en une ligne en exécutant la commande aptitude suivie de l option install, puis des noms des paquets comme vous pouvez le voir sur le listing 1. Il est à noter que cette commande doit être exécutée avec les droits d administration de la machine. Sous Ubuntu, la bonne pratique est d utiliser le compte principal créé lors de l installation de la machine et de faire précéder votre commande de sudo et votre mot de passe sera demandé. Voilà c est fait. Pour aller un peu plus loin avec aptitude, un sudo aptitude update va vous permettre de mettre à jour les références sur vos paquets et sudo aptitude safeupgrade installera automatiquement les nouvelles versions des paquets. Si vous désirez rechercher un paquet, vous pouvez utiliser la commande suivante aptitude search nompaquet, comme par exemple aptitude search php5. À noter qu il n est pas nécessaire d avoir les droits root pour effectuer des recherches. Dans le cas où vous êtes en train de créer une machine virtuelle Ubuntu Server spécifiquement pour servir de plate-forme LAMP, vous noterez que c est une des options prévue par l installeur ; sélectionner cette option est alors la solution la plus simple pour mettre en place Apache, MySQL et PHP, directement lors de l installation de la distribution comme affiché en Figure 1. Installation sur CentOS La distribution Centos est une distribution Linux qui a pour caractéristique majeure d être la copie conforme (logo hormis) de la distribution Red Hat Enterprise Linux, donc utilisable sans licence. Elle permet donc de déployer sans frais un serveur de qualité et est actuellement très en vogue chez les hébergeurs. L inconvénient est que les paquets contiennent des versions anciennes, mais considérés comme stables, des différents logiciels. Ainsi, PHP est toujours dans la branche 5.1. Il est à noter qu il existe d autres distributions basées sur le système RPM mettant à votre disposition des versions plus à jours comme par exemple la Fedora. Comme dans les distributions dérivées de Debian, il existe plusieurs utilitaires de gestion de paquets RPM. Nous allons utiliser ici YUM, comme Yellow dog Updater Modifier, qui permet d installer les logiciels depuis les dépôts officiels. Il est, là aussi, possible d installer votre LAMP en une ligne en faisant suivre la commande yum de l option install comme vous pouvez le voir sur le Listing 2. Vous devrez utiliser le compte root pour effectuer des installations et suppressions de paquets. Comme aptitude, yum propose des options supplémentaires permettant de mettre à jour le système, yum update suivi de yum upgrade. La recherche s effectue au moyen de l option search suivie des éléments de recherche. Vous obtiendrez alors les paquets correspondant à chacun de Figure 1. Installer une plate-forme LAMP directement depuis l installeur d Ubuntu Figure 2. Chercher un paquet avec aptitude Listing 1. Installation d un LAMP en une ligne avec APT $ sudo aptitude install apache2 php5-mysql libapache2-mod-php5 mysql-server Listing 2. Installation d un LAMP en une ligne avec RPM # yum install httpd php mysql-server php-mysql Figure 3. Chercher un paquet avec yum 12

LAMP vos éléments de recherche et à la combinaison de ceux-ci. La suppression d un paquet se fait avec l option erase suivie du nom du paquet à supprimer. Dépôts non officiels Si vous êtes pressés et ne désirez pas vous lancer dans l aventure (pourtant très intéressante et gratifiante) de la compilation, tout n est pas perdu. Il existe de nombreux dépôts non officiels spécialisés dans le packaging des derniers logiciels. Le processus est réalisable en quelques étapes. Tout d abord ajoutez la clé du dépôt sur votre machine à l aide des commandes suivantes : # rpm --import url _ cle sur système utilisant RPM, wget -q 'url _ cle' -O- sudo aptkey add - sur système utilisant APT. Ensuite éditez la configuration de yum ou aptitude pour référencer ce nouveau dépôt. Enfin mettez à jour votre système de façon classique par le biais de yum update ; yum upgrade sur les distributions type RPM et aptitude update ; aptitude upgrade sous les distributions utilisant des paquets DEB. Ne pas oublier de taper ces commandes avec les droits d administrateur. Vous trouverez plus d informations sur les sites suivants : http://www.jasonlitka.com/yum-repository/ dépôt non officiel yum spécialisé sur les paquets LAMP, http://dotdeb.org/ dépôt non officiel DEB, spécialisé sur les paquets LAMP et web. Figure 4. Apache lancé dans la VM Figure 5. PhpMyAdmin fonctionne : nous avons un environnement LAMP fonctionnel! Sudo make me a coffee Comme sur tous les systèmes d exploitation, l installation de nouveaux logiciels et la manipulation de la configuration d une machine sous Linux sont réservés à l administrateur de celle-ci, à savoir l utilisateur root. De plus en plus de distributions grand public interdisent, par défaut, aux utilisateurs de se connecter en root. Pour permettre quand même la manipulation, elles proposent de recourir à la commande sudo. Cette commande permet aux utilisateurs d obtenir temporairement les droits administrateur. Pour cela elle authentifie cet utilisateur en lui demandant son propre mot de passe. Par défaut, Ubuntu attribue ce droit à l utilisateur que vous créez lors de l installation. Par convention nous avons préfixé, dans cet article, les commandes tapées par un utilisateur root de # et par $ les commandes pouvant être tapées par n importe quel utilisateur. Soyez en avance sur votre hébergeur Les différents composants d un serveur web connaissent des mises à jour régulièrement. Il s avère parfois nécessaire de compiler le code source d une application pour pouvoir bénéficier de la dernière et même d une future version. Inconvénients des packages d une distribution Utiliser les packages fournis par votre distribution a un grand avantage : vous n avez qu une ou deux commandes à lancer pour les installer, et leur mise à jour est à peu de chose près automatisée. Si vous n avez pas, pour votre projet, des besoins spécifiques, et que vous êtes «simplement» à la recherche d un environnement LAMP sans réellement vous soucier des versions et extensions installées, passer par le gestionnaire de paquets de votre distribution est sans aucun doute la solution la plus simple et celle à privilégier! Par contre, si vous avez des besoins très spécifiques, le système de paquets de votre distribution ne répondra probablement pas à vos attentes. Voici quelques exemples spécifiques. Vous désirez une version de PHP bien définie, parce qu elle est imposée par votre hébergement «de production», sur lequel vous n avez pas la main, ou par une application ne supportant pas les versions récentes de PHP. Par exemple, une vieille version de PHP 4 : totalement dépassée et non maintenue, cette version n est plus forcément supportée par votre distribution et vous devriez probablement encourager votre hébergeur à mettre ses serveurs à jour! L exemple opposé serait la mise en place d une version non-stable de PHP comme la prochaine version 6. Vous pouvez vouloir intégrer certains patchs au source de PHP comme le patch de sécurité Suhoshin. Celui-ci n est pas nécessairement intégré à la version de PHP fournie par votre distribution. Pour maintenir son serveur à jour, avec la toute dernière version de chaque logiciel les distributions étant souvent en retard à ce niveau là. Au moment de l écriture de cet article, la dernière version de stable de PHP est la 5.2.10 ; La version de la plus à jour de la distribution Ubuntu, elle, ne proposent que PHP 5.2.6, qui date d il y a plus d un an! Pour CentOS ou Redhat, c est encore pire, les dépôts officiels ne propose que la 5.1.6, pénalisant si on veut faire tourner une application utilisant les dernières versions de symfony ou du Zend Framework. Nous avons cité des exemples concernant PHP, car bien souvent c est le projet le plus actif de l ensemble AMP, mais les exemples s appliquent de la même manière pour Apache ou MySQL. Installer Apache, MySQL et PHP de façon autonome En environnement Linux, il est relativement simple d installer Apache, MySQL, et PHP en les compilant à partir de leur sources : il suffit de quelques commandes pour cela, et cela vous permet de bénéficier exactement des versions et composants dont vous avez besoin. Sur un poste de développement ou une machine virtuelle, vous pouvez tester votre projet sur la version de logiciel qui vous intéresse, et, pour un serveur de production, vous pouvez compiler vos logiciels de manière à ne disposer que de ce dont vous avez besoin ce qui ne peut être qu un plus niveau performances et sécurité! Cette installation manuelle, à partir des sources, est ce que nous allons faire dans la partie suivante de cet article. À la fin, vous obtiendrez l ensemble des trois briques Apache MySQL PHP dans un répertoire de votre compte utilisateur que vous pourrez ensuite facilement mettre à jour ou exporter. Travaux pratiques Nous allons maintenant procéder à la compilation et à l installation des dernières versions d Apache, MySQL et PHP. Ce chapitre décrit toutes les étapes nécessaires. Quelques mots avant de commencer Le principe d installation d un logiciel à partir de ses sources sous Linux est généralement le suivant : récupérer les sources du logiciel, décompresser ces sources, configurer la compilation, à l aide de la commande configure, compiler, à l aide de la commande make, et installer, en utilisant make install. www.phpsolmag.org 13

La commande configure accepte souvent un nombre important d options, indiquant quels composants du logiciel doivent être compilés ou non. Utilisez configure -- help pour obtenir la liste de ces options. Notez que pour que la compilation puisse se faire, vous devrez souvent installer certaines bibliothèques utilisées par le logiciel que vous installez, en versions de développement. Pour déterminer quelles bibliothèques sont nécessaires, la solution souvent la plus simple est de lancer la commande configure avec les options qui vous intéressent, d agir en cas de message d erreur, en installant la bibliothèque mentionnée lorsque l erreur remonte, et de relancer la configuration. Par exemple, si la commande configure échoue avec le message d erreur suivant : checking libxml2 install dir... no checking for xml2-config path... configure: error: xml2-config not found. Please check your libxml2 installation. Vous saurez qu il faut installer la version de développement de la librairie xml2. Sous Ubuntu, recherchons s il existe un paquet correspondant par la commande aptitude avec l option search : aptitude search libxml2. En retour vous obtenez des informations synthétiques sur les paquets disponibles comme affiché sur la Figure 2. Vous n avez plus qu à l installer par la commande suivante : $ sudo aptitude install libxml2-dev. Sous CentOS, la recherche s effectue de la même manière avec yum comme ceci : # yum search libxml2. Vous obtiendrez alors un résultat identique à ce que vous pouvez voir en Figure 3. Comme ce sont les sources qui sont nécessaires pour mener à bien la compilation, il faut choisir ici le paquet libxml2- devel et l installer avec yum : #yum install libxml2-devel. Pour les compilations que nous allons réaliser ici, nous serons identifié en tant qu utilisateur nommé test, et nous installerons les logiciels dans notre répertoire personnel, dans un sous-répertoire lamp. Nous utiliserons donc l option de configuration --prefix, en lui indiquant vers quel répertoire nous souhaitons installer chaque logiciel. À chaque fois, nous téléchargerons et décompresserons les sources des logiciels dans un sous-répertoire nommé sources du répertoire lamp. Tous les logiciels seront installés dans ce répertoire afin de permettre ensuite, facilement, un export vers une autre machine. Le Listing 3 permet de créer les répertoire nécessaires à notre application. Installation des logiciels / bibliothèques de développement Pour vous faciliter les choses, voici les commandes qu il vous faudra lancer pour réussir à compiler Apache, PHP, et MySQL avec les options de configuration que nous utiliserons plus bas. Sous Ubuntu, les paquets nécessaires à la compilation de logiciels sont regroupés dans le meta-paquet build-essential ; nous aurons aussi besoin de quelques utilitaires et bibliothèques en version de développement : $ sudo aptitude install build-essential libicu-dev libxml2-dev libssldev libbz2-dev libcurl4-gnutls-dev libpng12-dev libmcrypt-dev libxslt1- dev unzip libncurses5-dev. Vous remarquerez que Ubuntu a l habitude de nommer sous la forme -dev les versions de développement des bibliothèques, ce qui n est pas sans faciliter leur recherche, identification, et installation. CentOS ne propose pas de meta paquets mais il est possible d installer les éléments individuellement : # yum install gcc gcc-c++ kerneldevel Comme pour Ubuntu, la version de PHP choisie nécessite l installation de paquets supplémentaires : # yum install libxml2-devel openssldevel curl-devel zlib-devel libpngdevel libmcrypt-devel libxslt-devel unzip ncurses-devel. La nomenclature est un peu différente de ce qu on trouve sur Ubuntu, mais on retrouve l indication de version de développement par le suffixe -devel. Installation d Apache Pour cet article, nous allons installer la dernière version en date d Apache au moment où nous écrivons ceci : la version 2.2.11. Commençons par télécharger et décompresser les sources qui nous intéressent. Ensuite à l aide des scripts configure nous paramétrons les fichiers de compilation en passant différents paramètres et enfin nous compilons le serveur. Le Listing 4 détaille les différentes commandes à lancer. Un point à noter, nous avons pu effectuer l installation en tant que simple utilisateur, puisqu elle s est faite dans notre répertoire personnel. Si nous avions voulu effectuer une installation «système», nous n aurions pas utilisé --prefix lors de la configuration, et nous aurions du utiliser sudo make install pour le déploiement. Ce point sera vrai aussi pour les autres logiciels, plus bas. Par défaut, Apache se lance en écoutant sur le port 80, et seul root peut accéder aux ports inférieurs à 1024. Nous devons donc lancer Apache en tant que root, à l aide de la commande sudo (voir l encart sudo make me a coffee pour plus de détails sur cette commande) : $ sudo ~/lamp/apache/bin/apachectl start. Si vous n avez pas la possibilité d avoir les droits root, vous pouvez néanmoins utiliser le serveur sur des ports supérieurs à 1024. Traditionnellement on utilise le port 8080. Pour cela il suffit d éditer le fichier de configuration http.conf qui se trouve dans le répertoire /home/test/lamp/apache/conf/ et de remplacer la directive Listen 80 par Listen 8080. Pour tester si cela fonctionne, il ne vous reste plus qu à accéder à votre machine virtuelle à l aide d un navigateur comme présenté dans la Figure 4. Pour connaître son adresse IP, utilisez la commande ifconfig. Ne pas oublier de rajouter le port dans l URL si vous avez modifié celui-ci de la façon suivante : http:// adresseip:numport/. Listing 3. Création des répertoires de notre LAMP $ mkdir ~/lamp $ mkdir ~/lamp/sources Listing 4. Détail des commandes à lancer pour compiler apache $ cd ~/lamp/sources/ $ wget http://apache.crihan.fr/dist/httpd/httpd-2.2.11.tar.bz2 $ tar xvf httpd-2.2.11.tar.bz2 $ cd httpd-2.2.11/ $./configure --prefix=/home/test/lamp/apache/ --enable-so $ make $ make install Installation de PHP Une des situations dans laquelle nous aimons utiliser une machine virtuelle est lorsque nous souhaitons tester une version expérimentale d un logiciel, sans aucun risque pour notre machine habituelle. Pour PHP, la version correspondant à cette définition est PHP 6! Les sources de PHP 6 sont fréquemment extraites du CVS du projet, et une archive est déposée sur le site de snapshots du projet. Téléchargeons et décompressons la dernière 14

LAMP version comme indiqué dans le Listing 5. Attention : vous devrez adapter le numéro du snapshot, qui dépend de la date! PHP 6 est actuellement dans un état quelque peu instable, et certaines extensions peuvent provoquer des échecs lors de la compilation... Il vous faudra donc peut-être en activer ou désactiver certaines, en fonction des éventuels messages d erreur que vous obtiendrez. Au moment où nous rédigeons cet article, les options indiquées dans le Listing 5 fonctionnent, et ne provoquent pas d échec lors de la configuration, de la compilation, et de l installation. Notez que nous avons activé par défaut un grand nombre d extensions : puisqu il s agit d une version future, cela peut être intéressant pour découvrir ce qui arrivera dans quelques temps. Pour vérifier que la compilation s est bien passée, consultons le numéro de version : $ /home/test/lamp/php/bin/php --version PHP 6.0.0-dev (cli) (built: Jun 6 2009 13:17:20) Copyright (c) 1997-2009 The PHP Group Zend Engine v3.0.0-dev, Copyright (c) 1998-2009 Zend Technologies Vous voila avec une installation de PHP 6 sur votre machine virtuelle : de quoi commencer à tester dès maintenant les nouvelles fonctionnalités que cette version majeure apportera. Il reste juste à configurer Apache pour que les fichiers.php soient interprétés par PHP, et non servis comme du texte brut. Pour cela, il vous faudra modifier le fichier ~/lamp/apache/conf/ httpd.conf, et ajouter ou modifier les directives présentées dans le Listing 6. Ceci fait, il ne reste plus qu à redémarrer Apache : $ ~/lamp/apache/bin/apachectl restart. Et vous voici avec un environnement Apache + PHP ; il ne reste plus qu à installer MyS- QL... Installation de MySQL Ici aussi, profitons du fait que nous travaillons dans un environnement virtualisé pour tester une future version de MySQL : la version 6. Les étapes sont les mêmes que plus haut ; commençons par la récupération et la décompression des sources, puis la configuration, la compilation et le déploiement comme décrit dans le Listing 7. Ici encore, n hésitez pas à utiliser configure - -help pour obtenir la liste des options et fonctionnalités que vous pouvez activer! Quelques étapes viennent ensuite, avant d avoir un serveur pleinement opérationnel... Tout d abord, création et enregistrement du répertoire de données puis le lancement du démon MySQL par le binaire mysqld_safe comme indiqué au Listing 8. Nous allons ensuite sécuriser notre serveur en affectant à l utilisateur un mot de passe déterminé puis tenter de nous connecter avec celui-ci comme présenté dans le listing 9. Et voila un environnement LAMP enfin installé : une machine virtuelle, sous Linux, sur laquelle nous avons déployé Apache, MySQL, et PHP. Installation de PHPMyAdmin Pour prouver que notre installation manuelle fonctionne, nous allons déployer un logiciel PHP, se connectant à un serveur de base de Listing 5. Téléchargement des sources de PHP 6 et installation. données MySQL, auquel nous accédons via une interface Web. Un des premiers exemple qui vient à l esprit est phpmyadmin. L installation est des plus simples : il faut récupérer les sources PHP, les décompresser, les déplacer vers le répertoire servi par Apache, et, enfin, créer le fichier de configuration en se basant sur le modèle fourni, comme présenté par le Listing 10. Le fichier de configuration par défaut permet d accéder aux bases de données déployées sur le même serveur que PHP ; ici, MySQL est installé sur la même machine virtuelle que cd ~/lamp/sources $ wget http://snaps.php.net/php6.0-200906061030.tar.bz2 $ tar xvf php6.0-200906061030.tar.bz2 $ cd php6.0-200906061030/ $./configure --prefix=/home/test/lamp/php --with-apxs2=/home/test/lamp/ apache/bin/apxs --disable-ipv6 --with-openssl --with-zlib --with-bz2 -- enable-bcmath --with-bz2 --with-curl --enable-exif --enable-ftp --withgd --enable-gd-native-ttf --with-mhash --with-imap-ssl --with-ldap -- enable-mbstring --with-mcrypt --with-mysql=mysqlnd --with-mysqli=mysqlnd --enable-pcntl --with-pdo-mysql=mysqlnd --disable-phar --enable-shmop - -enable-soap --enable-sockets --with-xmlrpc --with-xsl --enable-zip -- disable-fileinfo disable-soap $ make $ make install?> Listing 6. Modification du fichier http.conf # Ajouté par l'installation de PHP LoadModule php6 _ module modules/libphp6.so # Ajouter index.php <IfModule dir _ module> DirectoryIndex index.html index.php </IfModule> # Ajouter à la fin du fichier <IfModule mod _ php6.c> AddType application/x-httpd-php.php.phtml.php3 AddType application/x-httpd-php-source.phps </IfModule> Listing 7. Récupération des sources et installation de mysql $ cd ~/lamp/sources $ wget http://dev.mysql.com/get/downloads/mysql-6.0/mysql-6.0.11-alpha.zip/ from/http://mir2.ovh.net/ftp.mysql.com/ $ unzip mysql-6.0.11-alpha.zip $ cd mysql-6.0.11-alpha/ $./configure prefix=/home/test/lamp/mysql --enable-community-features -- enable-profiling --with-charset=utf8 --without-docs --without-man $ make $ make install Listing 8. Installation de la base de données et opération d administration $ mkdir ~/lamp/mysql-data$ ~/lamp/mysql/bin/mysql _ install _ db basedir=/ home/test/lamp/mysql --user=test --datadir=/home/test/lamp/mysql-data$ ~/ lamp/mysql/bin/mysqld _ safe --basedir=/home/test/lamp/mysql --user=test -- datadir=/home/test/lamp/ mysql-data & Listing 9. Modification du mot de passe root et connection $ ~/lamp/mysql/bin/mysqladmin -u root password 'motdepasse' $ ~/lamp/mysql/bin/mysql --user=root --password=motdepasse -- host=localhost Listing 10. Installation de PHPMyAdmin $ cd ~/lamp/sources $ wget http://freefr.dl.sourceforge.net/sourceforge/phpmyadmin/phpmyadmin- 3.1.5-english.tar.bz2 $ tar xvf phpmyadmin-3.1.5-english.tar.bz2 $ mv phpmyadmin-3.1.5-english ~/lamp/apache/htdocs/phpmyadmin $ cp ~/lamp/apache/htdocs/phpmyadmin/config.sample.inc.php ~/lamp/apache/ htdocs/phpmyadmin/config.inc.php www.phpsolmag.org 15

Sur Internet http://www.vmware.com/download/server/ Projet VMWare, http://www.virtualbox.org/ Projet Virtual Box, http://www.ubuntu.com/ Adresse de la distribution Ubuntu, http://www.centos.org/ Adresse de la distribution CentOS, http://www.thoughtpolice.co.uk Téléchargez des VM sur ce site. Code source des applications http://httpd.apache.org/download.cgi Apache, http://snaps.php.net/ Snaps PHP, http://dev.mysql.com/downloads/mysql/6.0.html#source Versions de développement de MySQL, http://www.phpmyadmin.net/home_page/downloads.php PHPMyAdmin. Apache, PHP, et phpmyadmin. Il n est donc pas nécessaire de modifier le fichier de configuration. Il ne nous reste plus qu à ouvrir notre navigateur, en pointant vers le répertoire phpmyadmin de notre serveur, avec une URL de ce type : http://192.168.0.14/phpmyadmin/ ou http://192.168.0.14:8080/phpmyadmin/. Et voilà, nous avons un environnement LAMP fonctionnel, comme en témoigne la Figure 5. Travailler depuis votre machine physique Nous disions plus haut que seuls les serveurs étaient déployés sur la machine virtuelle, et que vous continuiez à développer sur votre machine physique, en utilisant vos outils habituels. Cela signifie que les sources de votre application, qui sont hébergées par ladite machine virtuelle, doivent être rendues accessibles de l extérieur de celle-ci. La solution que nous avons tendance à privilégier pour cela est de passer par un partage réseau «samba», utilisant le protocole CIFS : le protocole de partage réseau utilisé en particulier sous Windows, mais qui est largement répandu sous Linux aussi. Nous allons donc installer dans notre machine virtuelle un serveur Samba, puis le configurer pour qu il expose le répertoire contenant les sources de notre application ; ici, les sources de phpmyadmin. Installation et configuration de samba Considérant que nous souhaitons uniquement travailler avec samba, sans avoir spécifiquement besoin d utiliser la toute Listing 11. Configuration d un répertoire partagé avec Samba [pma] comment = Apache Htdocs read only = no path = /home/test/lamp/apache/htdocs/ guest ok = yes writable = yes public = yes create mode = 0775 force user = test force group = test dernière version, ou de disposer de fonctionnalités spécifiques, nous utiliserons les paquets fournis par notre distribution. Sous Ubuntu : $ sudo aptitude install samba Et sous CentOS : # yum install samba Une fois samba installé, il faut lui indiquer qu il doit partager notre répertoire de sources. Pour cela, il suffira de rajouter les quelques lignes du Listing 11 au fichier de configuration /etc/samba/smb.conf. Attention à bien l éditer avec les droits root. Redémarrez le serveur samba en root $ sudo /etc/ init.d/samba restart ou # /etc/init. d/smb restart sur CentOS. Vous pouvez à présent accéder en lecture et en écriture, depuis votre machine physique, aux fichiers se trouvant sur votre machine virtuelle, dans le répertoire que vous venez de partager. Conclusion En conclusion de cet article, voici quelques points qui nous semblent importants. Tout d abord, rappelons que nous avons choisi de travailler en environnement virtualisé, avec une machine virtuelle par développeur. Cela signifie que nous sommes sous Linux, dans une situation où il n y pas de risque important de «casser» quoi que ce soit : au pire, il suffit de repartir d une copie de la machine datant de quelques jours, ou d en recréer une, sans que cela n ait d impact sur le travail des autres membres de votre équipe. Cela signifie aussi que, pour peu que vous utilisiez une machine virtuelle différente par projet, ce que nous encourageons fortement, vos projets sont isolés les uns des autres, et les modifications apportées sur l un, ou sur la machine l hébergeant, sont sans impact sur les autres. Travailler, pendant le développement d un projet, sur un serveur Linux donne de bonnes notions, qui seront sans aucun doute utiles une fois l application déployée en production, en environnement LAMP. Comme l on garde l IDE et les navigateurs sur la machine physique, nous gardons le confort de notre environnement de travail habituel ; en somme, nous bénéficions du meilleur des deux mondes. Un nouveau développeur doit arriver sur votre projet? Éteignez votre machine virtuelle, zippez-là, donnez le zip à votre collègue, et quelques minutes après, il a un serveur de développement installé et opérationnel! Les serveurs sont déjà installés et configurés, le plus gros des sources du projet est déjà extrait du serveur de sources, les traitements dont dépend l application pour générer ses fichiers de données ont déjà été lancés, les droits d accès en écriture aux répertoires de cache sont corrects... Sur un gros projet, voila entre deux heures et une demi-journée de gagnée, à chaque nouveau développeur joignant l équipe! Bien sûr, au lancement du projet, il faut jusqu à environ une demi-journée pour créer, installer et, configurer la machine virtuelle... Mais c est une seule personne, expérimentée, qui s en charge, et ce coût va décroissant au fur et à mesure des projets, alors qu installer un environnement virtuel devient habituel, et que les documents et procédures s enrichissent! L'étape suivante serait de passer au déploiement des outils utilisés par votre projet pour son contrôle qualité. Par exemple, est-ce qu'il ne serait pas intéressant, pour chaque développeur, de disposer de PHPUnit sur sa machine de développement, afin de pouvoir lancer les tests automatisés du projet avant de commiter toute modification sur les sources de celui-ci? Moyennement quelques heures de formation, il deviendrait alors possible pour tout développeur de contribuer activement à l'écriture de ces tests, ce qui, au final, ne peut avoir que des conséquences bénéfiques pour le projet tout entier! Brice Favre, Pascal Martin Brice Favre et Pascal Martin font partie de la Cellule Architecture PHP de SQLI Lyon. Ils interviennent sur différents projets utilisant PHP à un niveau avancé. Dans le cadre de leurs travaux, ils sont amenés à tester et préconiser différents outils améliorant la productivité des projets du groupe. L environnement de développement est un des chantiers sur lesquels ils échangent fréquemment. 16