Vous êtes sur la page 1sur 7

Outils

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 ma- chine Linux sans effort.

• L’installation d’Apache, MySQL et PHP à par- tir de paquetages.

• La compilation des mêmes logiciels.

Ce qu’il faut savoir :

• Installer une application sous Windows.

• Quelques notions de base de la ligne de commande.

• Quelques notions en réseau.

Niveau de difficulté

• Quelques notions en réseau. Niveau de difficulté L AMP est un acronyme désignant un ensemble

L AMP est un acronyme désignant un ensemble de logiciels libres permet- tant 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 alternati-

ves 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 combi-

naison de référence pour les serveurs web. Les statistiques montrent qu’Apache est utilisé sur 40% des serveurs (source : http://

10

est utilisé sur 40% des serveurs (source : http:// 10 news.netcraft.com/archives/2009/04/06/april_

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 environ- nement LAMP pour tester ses développe- ments est un atout, qui offre les avantages suivants :

• Tester le changement de système d’ex- ploitation 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 cas- se ; 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 facili- té par le fait qu’il est généralement plus facile de compiler un logiciel sous Linux que sous Windows, ce qui est souvent re- quis pour tester des versions non stan- dard.

• 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 sim- plicité, nous allons proposer dans cet article une solution basée sur un système de machi- ne virtuelle, afin de faire cohabiter votre sys- tè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 per- mettant de faire fonctionner, sur une ma- chine, 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 pla- ce facilitée de serveurs de développement). De plus, avec la généralisation des processeur multi-cœurs, la performance est au rendez- vous 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

5/2009

LAMP
LAMP

LAMP

de sauvegarde, et, en cas de mauvaise mani- pulation dans les jours suivants, il vous suf- fira 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 re- partirez 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 par- le de faire fonctionner un environnement Linux, nous sommes parfaitement conscient du fait que de nombreux développeurs tra- vaillent 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 ni- veau de l’entreprise au sein de laquelle ils tra- vaillent. Le but de cet article n’est donc aucu- nement 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 exten- sions sur Windows. Ce que cet article vous encourage à faire est de continuer à travailler au sein de vo- tre environnement de travail habituel, que ce soit Windows, Mac OS, ou Linux : votre environnement de développement, les navi- gateurs sous lesquels vous testez votre appli- cation, 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 installe- rez 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évelop- pement, 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, vo- tre machine physique devrait posséder au mi- nimum 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 machi-

www.phpsolmag.org

ne 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 solu- tions les plus adaptées pour un poste de tra- vail 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 per- met à la fois la création et l’utilisation de ma- chines virtuelles, et VMware Player, qui per- met leur utilisation) sont gratuits. Virtual Box est un logiciel édité par Sun, lui aussi gra- tuit. 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 ni- veau des fonctionnalités disponibles.

Lancement d’une VM Avant de lancer une VM, il vous faudra pas- ser par la case téléchargement. Dans le cas de VMware vous avez la possibilité de trou- ver des machines toutes prêtes, cf. les liens en fin d’article. Privilégiez les versions ser- veurs 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 édi- tions 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 uti- liserez, voici quelques points qui nous sem- blent 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 possi- ble d’en affecter 2 à la machine virtuelle. De

la sorte, si la machine virtuelle se met à con- sommer 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 instal- lé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 quel- que 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 for- mant 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 dis- tributions basées sur Debian ou ses dérivées, nous utilisons généralement la distribution Ubuntu Server comme base pour mes machi- nes virtuelles de développement. D’autres auront plus l’habitude de travailler sur Red- hat et ses dérivées, auquel cas une version de CentOS est une possibilité – ces deux distri- butions étant relativement accessibles à des débutants, notamment au niveau du proces-

sus d’installation. Dans un cas comme dans l’autre, montez l’ISO de la distribution, lan- cez la machine virtuelle, et, à peu de chose près, choisissez Suivant une série de fois : voi- la votre machine Linux installée ! Bien évidemment, vous trouverez peut-être que ce n’est pas aussi évident au premier coup

Forcément, c’est nouveau, et quelques

principes différent certainement des systè-

mes auxquels vous êtes habitués

Mais rap-

d’œil

pelez-vous : vous aller travailler au sein d’une machine virtuelle : si vous ratez votre installa- tion, 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 machi-

ne virtuelle, et d’en re-créer une ! En somme, en plus de vous permettre de développer dans un environnement plus sou- ple, et plus proche de vos serveurs de pro-

duction, voici aussi une excellente occasion de faire vos premiers pas sous Linux si vous

Et les notions que vous al-

n’aviez jamais osé

lez acquérir vous seront sans le moindre dou- te 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 pou- vez y ajouter les services désirés de différen-

tes manières. La manière la plus classique est d’utiliser le système de packaging de la distri- bution que vous utilisez. Il y a plusieurs avan- tages 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écu- rité. Vous bénéficierez aussi d’une arbores-

cence normalisée. Si votre serveur est destiné

à être maintenu par d’autres administrateurs,

d’une arbores- cence normalisée. Si votre serveur est destiné à être maintenu par d’autres administrateurs, 1

11

Outils

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 lo- giciels Open Source, c’est à dire que les dé- veloppeurs ont fait le choix de placer le co- de 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’ins- tallation ainsi que des outils d’installation automatique à partir de dépôts locaux et dis- tants.

Les deux familles de packages : RPM et DEB Les deux systèmes de packaging les plus cou- ramment 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 ges- tion 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 sys- tèmes sont incompatibles entre eux mais des portages de l’un à l’autre existent. Chacun de ces systèmes offre un ensemble de comman- des permettant d’installer les services ; nous allons voir ici quelques commandes simples qui vont vous permettre de déployer facile- ment un serveur LAMP sur l’un ou l’autre des systèmes. Nous nous sommes volontaire- ment limités à l’utilisation de la ligne de com- mande, mais sachez qu’il existe des systèmes de mise à jour graphiques (synaptic dans le cas Debian/Ubuntu, up2date dans celui de Red- hat/CentOS) qui ne seront malheureusement pas très pratiques le jour où vous serez blo- qué 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 automatique- ment 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 en- trepreneur sud-africain Mark Shuttleworth, connaît un grand succès depuis quelques an- nées. Elle se base sur la distribution Debian et est déclinée en versions station de travail, et serveur. Comme Debian, elle fournit plu- sieurs interfaces pour exécuter des comman- des sur le système APT, certaines graphiques, d’autres en lignes de commandes. Nous al- lons, 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éren- ces sur vos paquets et sudo aptitude safe- upgrade installera automatiquement les nouvelles versions des paquets. Si vous dési- rez rechercher un paquet, vous pouvez utili- ser la commande suivante aptitude search nompaquet, comme par exemple aptitude search php5. À noter qu’il n’est pas néces- saire 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écifi- quement 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 com- me 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

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

12

RPM # yum install httpd php mysql-server php-mysql 12 déployer sans frais un serveur de qualité

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 logi- ciels. Ainsi, PHP est toujours dans la branche 5.1. Il est à noter qu’il existe d’autres distribu- tions basées sur le système RPM mettant à vo- tre disposition des versions plus à jours com- me par exemple la Fedora. Comme dans les distributions dérivées de Debian, il existe plu- sieurs 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 com- mande yum de l’option install comme vous pouvez le voir sur le Listing 2. Vous devrez utiliser le compte root pour effectuer des ins- tallations et suppressions de paquets. Comme aptitude, yum propose des options supplémen- taires permettant de mettre à jour le système,

upgrade. La recherche

yum update suivi de yum

s’effectue au moyen de l’option search suivie des éléments de recherche. Vous obtiendrez

alors les paquets correspondant à chacun de

Vous obtiendrez alors les paquets correspondant à chacun de Figure 1. Installer une plate-forme LAMP directement

Figure 1. Installer une plate-forme LAMP directement depuis l’installeur d’Ubuntu

LAMP directement depuis l’installeur d’Ubuntu Figure 2. Chercher un paquet avec aptitude Figure 3.

Figure 2. Chercher un paquet avec aptitude

depuis l’installeur d’Ubuntu Figure 2. Chercher un paquet avec aptitude Figure 3. Chercher un paquet avec

Figure 3. Chercher un paquet avec yum

5/2009

LAMP
LAMP

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 lan- cer dans l’aventure (pourtant très intéressan- te 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 der- niers 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 com- mandes suivantes :

# rpm --import url _ cle sur système

utilisant RPM,

wget -q 'url _ cle' -O- | sudo apt-

key 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 comman- des 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.

non officiel DEB, spécialisé sur les paquets LAMP et web. Figure 4. Apache lancé dans la

Figure 4. Apache lancé dans la VM

les paquets LAMP et web. Figure 4. Apache lancé dans la VM Figure 5. PhpMyAdmin fonctionne

Figure 5. PhpMyAdmin fonctionne : nous avons un environnement LAMP fonctionnel !

www.phpsolmag.org

Sudo make me a coffee Comme sur tous les systèmes d’exploitation, l’installation de nouveaux logiciels et la ma- nipulation de la configuration d’une machi- ne sous Linux sont réservés à l’administra- teur 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 re- courir à la commande sudo. Cette commande permet aux utilisateurs d’obtenir temporaire- ment 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 utilisa- teur 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 dis- tribution 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 ins- tallées, passer par le gestionnaire de paquets de votre distribution est sans aucun doute la solution la plus simple – et celle à privi- lé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éci- fiques. 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 proba- blement 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écessai- rement 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 tour- ner 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 Apa- che 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 suf- fit de quelques commandes pour cela, et cela vous permet de bénéficier exactement des ver- sions 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 compi- ler 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 Apa- che 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 compi- lation 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 à par- tir 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.

configure , • compiler, à l’aide de la commande make , • et installer, en utilisant

13

Outils

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 cer- taines bibliothèques utilisées par le logiciel que vous installez, en versions de dévelop- pement. 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 :

un sous-répertoire lamp. Nous utiliserons donc l’option de configuration --prefix, en lui indiquant vers quel répertoire nous sou- haitons 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éper- toire lamp. Tous les logiciels seront installés dans ce répertoire afin de permettre ensuite, facilement, un export vers une autre machi- ne. Le Listing 3 permet de créer les répertoi- re nécessaires à notre application.

Installation des logiciels / bibliothèques de développement Pour vous faciliter les choses, voici les com- mandes 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écessai-

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 der- niè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écompres- ser 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

checking libxml2 install dir

 

no

res à la compilation de logiciels sont regrou-

installation «système», nous n’aurions pas uti-

checking

for

xml2-config

path

pés dans le meta-paquet build-essential ; nous

lisé --prefix lors de la configuration, et nous

configure:

error:

xml2-config

not

aurons aussi besoin de quelques utilitaires et

aurions du utiliser sudo make install pour

found.

Please check

your libxml2

bibliothèques en version de développement :

le déploiement. Ce point sera vrai aussi pour

installation.

 

les autres logiciels, plus bas.

 

$ sudo aptitude install build-essential

Par défaut, Apache se lance en écoutant sur

Vous saurez qu’il faut installer la version de

libicu-dev libxml2-dev libssl-

le port 80, et seul root peut accéder aux ports

développement de la librairie xml2. Sous

dev libbz2-dev libcurl4-gnutls-dev

inférieurs à 1024. Nous devons donc lancer

Ubuntu, recherchons s’il existe un paquet

libpng12-dev libmcrypt-dev libxslt1-

Apache en tant que root, à l’aide de la com-

correspondant par la commande aptitude

dev unzip libncurses5-dev.

mande sudo (voir l’encart sudo make me a

avec l’option search : aptitude search

coffee pour plus de détails sur cette comman-

libxml2. En retour vous obtenez des infor-

mations synthétiques sur les paquets dispo- nibles comme affiché sur la Figure 2. Vous n’avez plus qu’à l’installer par la comman-

de suivante : $

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 compi- lation, il faut choisir ici le paquet libxml2-

sudo aptitude install

devel et l’installer avec yum : #yum install

libxml2-devel.

Pour les compilations que nous allons réa- liser ici, nous serons identifié en tant qu’utili- sateur nommé test, et nous installerons les lo- giciels dans notre répertoire personnel, dans

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, identi- fication, et installation. CentOS ne propose pas de meta paquets mais il est possible d’ins- taller les éléments individuellement :

#

devel

yum

install gcc

gcc-c++ kernel-

Comme pour Ubuntu, la version de PHP choi- sie nécessite l’installation de paquets supplé- mentaires :

# yum install libxml2-devel openssl-

devel curl-devel zlib-devel libpng-

devel libmcrypt-devel libxslt-devel

unzip ncurses-devel.

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

14

--enable-so $ make $ make install 14 d e ) : $ sudo ~/lamp/apache/bin/apachectl start .

de) : $ 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 confi- guration 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 res- te 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, uti- lisez 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/.

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

5/2009

LAMP
LAMP

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 pro-

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 fonc- tionnent, 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 : puis- qu’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 pas- sée, consultons le numéro de version :

voquer des échecs lors de la compilation

$ /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 fonction- nalités que cette version majeure apportera. Il reste juste à configurer Apache pour que les fi- chiers .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 res- te 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 fonc- tionnalité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

www.phpsolmag.org

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 environ- nement 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

données MySQL, auquel nous accédons via une interface Web. Un des premiers exemple qui vient à l’esprit est phpMyAdmin. L’installa- tion 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 mo- dèle fourni, comme présenté par le Listing 10. Le fichier de configuration par défaut per- met 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

Listing 5. Téléchargement des sources de PHP 6 et installation.

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 --with-

gd --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

$ cp ~/lamp/apache/htdocs/phpMyAdmin/config.sample.inc.php ~/lamp/apache/ htdocs/phpMyAdmin/config.inc.php 1 5

15

Outils

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 confi- guration. Il ne nous reste plus qu’à ouvrir no- tre 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 ha- bituels. Cela signifie que les sources de vo- tre application, qui sont hébergées par ladite machine virtuelle, doivent être rendues ac- cessibles de l’extérieur de celle-ci. La solution que nous avons tendance à pri- vilégier pour cela est de passer par un partage réseau «samba», utilisant le protocole CIFS : le protocole de partage réseau utilisé en particu- lier sous Windows, mais qui est largement ré- pandu sous Linux aussi. Nous allons donc ins- taller dans notre machine virtuelle un serveur Samba, puis le configurer pour qu’il expose le répertoire contenant les sources de notre ap- plication ; ici, les sources de phpMyAdmin.

Installation et configuration de samba

Considérant que nous souhaitons uni- quement travailler avec samba, sans avoir spécifiquement besoin d’utiliser la toute

dernière version, ou de disposer de fonc- tionnalité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 sour- ces. Pour cela, il suffira de rajouter les quel- ques lignes du Listing 11 au fichier de confi- guration /etc/samba/smb.conf. Attention à bien l’éditer avec les droits root. Redémar- rez 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, de- puis 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

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

16

create mode = 0775 force user = test force group = test 16 membres de votre

membres de votre équipe. Cela signifie aussi que, pour peu que vous utilisiez une machine virtuelle différente par projet, ce que nous en- courageons fortement, vos projets sont isolés les uns des autres, et les modifications appor- té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 physi- que, nous gardons le confort de notre environ- nement 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 virtuel- le, 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’ac- cès en écriture aux répertoires de cache sont

Sur un gros projet, voila entre deux

heures et une demi-journée de gagnée, à cha-

corrects

que nouveau développeur joignant l’équipe ! Bien sûr, au lancement du projet, il faut jus- qu’à environ une demi-journée pour créer, ins-

taller et, configurer la machine virtuelle

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 envi- ronnement virtuel devient habituel, et que les documents et procédures s’enrichissent ! L'étape suivante serait de passer au déploie- ment des outils utilisés par votre projet pour son contrôle qualité. Par exemple, est-ce qu'il ne seraitpasintéressant,pourchaquedéveloppeur, de disposer de PHPUnit sur sa machine de dé- veloppement, afin de pouvoir lancer les tests

Mais

automatisés du projet avant de commiter toute modification sur les sources de celui-ci ? Moyennement quelques heures de for- mation, 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 Cel- lule Architecture PHP de SQLI Lyon. Ils intervien- nent sur différents projets utilisant PHP à un ni- veau 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.

5/2009