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).
• Travailler avec un serveur de façon sû-
Cet article explique : Ce qu’il faut savoir : re (ce dont vous serez gré le jour où vous
• Le contenu classique d’un LAMP. • Installer une application sous Windows. devrez mettre en place une correction
• Les différents moyens de déployer une ma- • Quelques notions de base de la ligne de sur votre serveur de production, avec
chine Linux sans effort. commande. pour seul accès une connexion SSH !).
• L’installation d’Apache, MySQL et PHP à par- • Quelques notions en réseau.
tir de paquetages. En plus, notez que de nouveaux moyens vous
• La compilation des mêmes logiciels. permettent d’installer Linux très facilement
sans même rebooter votre machine ou sacrifier
votre précieux Windows – et ce gratuitement,
news.netcraft.com/archives/2009/04/06/april_ et même en utilisant des logiciels libres.
2009_web_server_survey.html) et PHP sur 32
Niveau de difficulté % des serveurs (source : http://www.nexen.net/ Linux sans se fatiguer
chiffres_cles/phpversion/18822-evolution_de_ La première étape pour déployer votre LAMP
php_sur_internet_october_2008.php). est d’avoir à votre disposition un système
Linux. Dans un but d’efficacité et de sim-

L
AMP est un acronyme désignant un Avantages d’un LAMP plicité, nous allons proposer dans cet article
ensemble de logiciels libres permet- La plupart des développeurs web disposent une solution basée sur un système de machi-
tant de mettre en place un serveur avec WampServer ou EasyPHP de solutions ne virtuelle, afin de faire cohabiter votre sys-
Web. On y retrouve des produits célèbres simples pour tester leurs développements. tème d’exploitation habituel (Windows ou
du monde Open Source : le L de Linux, le Toutefois, avoir à sa disposition un environ- Linux) et celui de votre serveur LAMP (donc
A de Apache, le M de MySQL et le P de PHP. nement LAMP pour tester ses développe- Linux).
À noter qu’il existe de nombreuses alternati- ments est un atout, qui offre les avantages
ves où PHP est remplacé par Perl ou Python, suivants : Principe des machines virtuelles
et MySQL par PostgreSQL comme on peut le La virtualisation est un domaine qui a pris
voir ici http://en.wikipedia.org/wiki/LAMP_ • Tester le changement de système d’ex- son essor ces dernières années. En bref, il
(software_bundle), mais pour cet article nous ploitation avant la mise en production s’agit de moyens matériels ou logiciels per-
conservons le cas le plus classique. et anticiper les différences de gestion mettant de faire fonctionner, sur une ma-
Chacun de ces logiciels fournit une brique des noms de fichiers. Sous Windows, les chine, plusieurs systèmes d’exploitation. Les
d’un serveur web avancé : noms de fichiers sont insensibles à la cas- intérêts sont divers, et concernent aussi bien
se ; ce n’est pas le cas sous Linux ! les infrastructures réseau (séparation des
• Linux le système d’exploitation. • Obtenir de meilleures performances lors services, allocation de charge facilitée) que
• Apache, le serveur HTTP. de développements sur des applications le poste de travail (installation de machines,
• MySQL le système de gestion de bases de faisant appel à de nombreux fichiers tests de plusieurs architectures, mise en pla-
données. (Magento, eZPublish, ...). ce facilitée de serveurs de développement).
• PHP, le langage de scripts dynamique. • Avoir la possibilité de mettre en place De plus, avec la généralisation des processeur
une architecture particulière (PHP 6, multi-cœurs, la performance est au rendez-
Le faible coût de licence de ces différents APC, extensions pecl), ce qui est facili- vous même avec des systèmes hétéroclites.
produits ainsi que la facilité d’exploitation té par le fait qu’il est généralement plus Nous ajouterons, et c’est particulièrement
et d’adaptation ont fait de LAMP la combi- facile de compiler un logiciel sous Linux vrai si vous êtes débutant sous Linux, qu’une
naison de référence pour les serveurs web. que sous Windows, ce qui est souvent re- machine virtuelle est un excellent moyen
Les statistiques montrent qu’Apache est quis pour tester des versions non stan- pour «pratiquer sans risque» : une fois votre
utilisé sur 40% des serveurs (source : http:// dard. machine installée, vous en faites une copie

10 5/2009
LAMP

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

www.phpsolmag.org 11
Outils

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


Figure 3. Chercher un paquet avec yum

12 5/2009
LAMP

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

www.phpsolmag.org 13
Outils

La commande configure accepte souvent un sous-répertoire lamp. Nous utiliserons La nomenclature est un peu différente de ce
un nombre important d’options, indiquant donc l’option de configuration --prefix, en qu’on trouve sur Ubuntu, mais on retrouve
quels composants du logiciel doivent être lui indiquant vers quel répertoire nous sou- l’indication de version de développement par
compilés ou non. Utilisez configure -- haitons installer chaque logiciel. le suffixe -devel.
help pour obtenir la liste de ces options. À chaque fois, nous téléchargerons et dé-
Notez que pour que la compilation puisse compresserons les sources des logiciels dans Installation d’Apache
se faire, vous devrez souvent installer cer- un sous-répertoire nommé sources du réper- Pour cet article, nous allons installer la der-
taines bibliothèques utilisées par le logiciel toire lamp. Tous les logiciels seront installés nière version en date d’Apache au moment
que vous installez, en versions de dévelop- dans ce répertoire afin de permettre ensuite, où nous écrivons ceci : la version 2.2.11.
pement. facilement, un export vers une autre machi- Commençons par télécharger et décompres-
Pour déterminer quelles bibliothèques sont ne. Le Listing 3 permet de créer les répertoi- ser les sources qui nous intéressent. Ensuite à
nécessaires, la solution souvent la plus simple re nécessaires à notre application. l’aide des scripts configure nous paramétrons
est de lancer la commande configure avec les les fichiers de compilation en passant diffé-
options qui vous intéressent, d’agir en cas de Installation des logiciels / rents paramètres et enfin nous compilons le
message d’erreur, en installant la bibliothè- bibliothèques de développement serveur. Le Listing 4 détaille les différentes
que mentionnée lorsque l’erreur remonte, Pour vous faciliter les choses, voici les com- commandes à lancer.
et de relancer la configuration. mandes qu’il vous faudra lancer pour réussir Un point à noter, nous avons pu effectuer
Par exemple, si la commande configure à compiler Apache, PHP, et MySQL avec les l’installation en tant que simple utilisateur,
échoue avec le message d’erreur suivant : options de configuration que nous utiliserons puisqu’elle s’est faite dans notre répertoire
plus bas. Sous Ubuntu, les paquets nécessai- 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- Vous remarquerez que Ubuntu a l’habitude de) : $ sudo ~/lamp/apache/bin/apachectl
mations synthétiques sur les paquets dispo- de nommer sous la forme -dev les versions start.
nibles comme affiché sur la Figure 2. Vous de développement des bibliothèques, ce qui Si vous n’avez pas la possibilité d’avoir les
n’avez plus qu’à l’installer par la comman- n’est pas sans faciliter leur recherche, identi- droits root, vous pouvez néanmoins utiliser
de suivante : $ sudo aptitude install fication, et installation. CentOS ne propose le serveur sur des ports supérieurs à 1024.
libxml2-dev. pas de meta paquets mais il est possible d’ins- Traditionnellement on utilise le port 8080.
Sous CentOS, la recherche s’effectue de la taller les éléments individuellement : Pour cela il suffit d’éditer le fichier de confi-
même manière avec yum comme ceci : # yum guration http.conf qui se trouve dans le ré-
search libxml2. Vous obtiendrez alors un # yum install gcc gcc-c++ kernel- pertoire /home/test/lamp/apache/conf/ et de
résultat identique à ce que vous pouvez voir devel remplacer la directive Listen 80 par Listen
en Figure 3. Comme ce sont les sources qui 8080.
sont nécessaires pour mener à bien la compi- Comme pour Ubuntu, la version de PHP choi- Pour tester si cela fonctionne, il ne vous res-
lation, il faut choisir ici le paquet libxml2- sie nécessite l’installation de paquets supplé- te plus qu’à accéder à votre machine virtuelle
devel et l’installer avec yum : #yum install mentaires : à l’aide d’un navigateur comme présenté dans
libxml2-devel. la Figure 4. Pour connaître son adresse IP, uti-
Pour les compilations que nous allons réa- # yum install libxml2-devel openssl- lisez la commande ifconfig. Ne pas oublier
liser ici, nous serons identifié en tant qu’utili- devel curl-devel zlib-devel libpng- de rajouter le port dans l’URL si vous avez
sateur nommé test, et nous installerons les lo- devel libmcrypt-devel libxslt-devel modifié celui-ci de la façon suivante : http://
giciels dans notre répertoire personnel, dans unzip ncurses-devel. adresseip:numport/.

Listing 3. Création des répertoires de notre LAMP Installation de PHP


Une des situations dans laquelle nous aimons
$ mkdir ~/lamp utiliser une machine virtuelle est lorsque
$ mkdir ~/lamp/sources
nous souhaitons tester une version expé-
Listing 4. Détail des commandes à lancer pour compiler apache rimentale d’un logiciel, sans aucun risque
pour notre machine habituelle. Pour PHP, la
$ cd ~/lamp/sources/
$ wget http://apache.crihan.fr/dist/httpd/httpd-2.2.11.tar.bz2
version correspondant à cette définition est
$ tar xvf httpd-2.2.11.tar.bz2 PHP 6 !
$ cd httpd-2.2.11/ Les sources de PHP 6 sont fréquemment
$ ./configure --prefix=/home/test/lamp/apache/ --enable-so
$ make
extraites du CVS du projet, et une archive
$ make install est déposée sur le site de snapshots du projet.
Téléchargeons et décompressons la dernière

14 5/2009
LAMP

version comme indiqué dans le Listing 5. ensuite sécuriser notre serveur en affectant données MySQL, auquel nous accédons via
Attention : vous devrez adapter le numéro à l’utilisateur un mot de passe déterminé puis une interface Web. Un des premiers exemple
du snapshot, qui dépend de la date ! PHP 6 tenter de nous connecter avec celui-ci comme qui vient à l’esprit est phpMyAdmin. L’installa-
est actuellement dans un état quelque peu présenté dans le listing 9. Et voila un environ- tion est des plus simples : il faut récupérer les
instable, et certaines extensions peuvent pro- nement LAMP enfin installé : une machine sources PHP, les décompresser, les déplacer vers
voquer des échecs lors de la compilation... Il virtuelle, sous Linux, sur laquelle nous avons le répertoire servi par Apache, et, enfin, créer le
vous faudra donc peut-être en activer ou dé- déployé Apache, MySQL, et PHP. fichier de configuration en se basant sur le mo-
sactiver certaines, en fonction des éventuels dèle fourni, comme présenté par le Listing 10.
messages d’erreur que vous obtiendrez. Installation de PHPMyAdmin Le fichier de configuration par défaut per-
Au moment où nous rédigeons cet article, Pour prouver que notre installation manuelle met d’accéder aux bases de données déployées
les options indiquées dans le Listing 5 fonc- fonctionne, nous allons déployer un logiciel sur le même serveur que PHP ; ici, MySQL est
tionnent, et ne provoquent pas d’échec lors PHP, se connectant à un serveur de base de installé sur la même machine virtuelle que
de la configuration, de la compilation, et de
l’installation. Notez que nous avons activé par Listing 5. Téléchargement des sources de PHP 6 et installation.
défaut un grand nombre d’extensions : puis-
qu’il s’agit d’une version future, cela peut être cd ~/lamp/sources
$ wget http://snaps.php.net/php6.0-200906061030.tar.bz2
intéressant pour découvrir ce qui arrivera $ tar xvf php6.0-200906061030.tar.bz2
dans quelques temps. $ cd php6.0-200906061030/
Pour vérifier que la compilation s’est bien pas- $ ./configure --prefix=/home/test/lamp/php --with-apxs2=/home/test/lamp/
apache/bin/apxs --disable-ipv6 --with-openssl --with-zlib --with-bz2 --
sée, consultons le numéro de version : enable-bcmath --with-bz2 --with-curl --enable-exif --enable-ftp --with-
gd --enable-gd-native-ttf --with-mhash --with-imap-ssl --with-ldap --
$ /home/test/lamp/php/bin/php --version enable-mbstring --with-mcrypt --with-mysql=mysqlnd --with-mysqli=mysqlnd
--enable-pcntl --with-pdo-mysql=mysqlnd --disable-phar --enable-shmop -
PHP 6.0.0-dev (cli) (built: Jun 6 2009 -enable-soap --enable-sockets --with-xmlrpc --with-xsl --enable-zip --
13:17:20) disable-fileinfo –disable-soap
$ make
Copyright (c) 1997-2009 The PHP Group
$ make install?>
Zend Engine v3.0.0-dev, Copyright (c)
1998-2009 Zend Technologies Listing 6. Modification du fichier http.conf

# Ajouté par l'installation de PHP


Vous voila avec une installation de PHP 6 sur LoadModule php6 _ module        modules/libphp6.so
votre machine virtuelle : de quoi commencer # Ajouter index.php
à tester dès maintenant les nouvelles fonction- <IfModule dir _ module>
    DirectoryIndex index.html index.php
nalités que cette version majeure apportera. Il </IfModule>
reste juste à configurer Apache pour que les fi- # Ajouter à la fin du fichier
<IfModule mod _ php6.c>
chiers .php soient interprétés par PHP, et non
  AddType application/x-httpd-php .php .phtml .php3
servis comme du texte brut. Pour cela, il vous   AddType application/x-httpd-php-source .phps
faudra modifier le fichier ~/lamp/apache/conf/ </IfModule>
httpd.conf, et ajouter ou modifier les directives
Listing 7. Récupération des sources et installation de mysql
présentées dans le Listing 6. Ceci fait, il ne res-
te plus qu’à redémarrer Apache : $ 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/
$ ~/lamp/apache/bin/apachectl restart. $ unzip mysql-6.0.11-alpha.zip
$ cd mysql-6.0.11-alpha/
Et vous voici avec un environnement Apache $ ./configure –prefix=/home/test/lamp/mysql --enable-community-features --
enable-profiling --with-charset=utf8 --without-docs --without-man
+ PHP ; il ne reste plus qu’à installer MyS- $ make
QL... $ make install

Listing 8. Installation de la base de données et opération d’administration


Installation de MySQL
Ici aussi, profitons du fait que nous travaillons $ mkdir ~/lamp/mysql-data$ ~/lamp/mysql/bin/mysql _ install _ db –basedir=/
home/test/lamp/mysql --user=test --datadir=/home/test/lamp/mysql-data$ ~/
dans un environnement virtualisé pour tester lamp/mysql/bin/mysqld _ safe --basedir=/home/test/lamp/mysql --user=test --
une future version de MySQL : la version 6. Les datadir=/home/test/lamp/ mysql-data &
étapes sont les mêmes que plus haut ; commen-
çons par la récupération et la décompression des Listing 9. Modification du mot de passe root et connection
sources, puis la configuration, la compilation et $ ~/lamp/mysql/bin/mysqladmin -u root password 'motdepasse'
le déploiement comme décrit dans le Listing 7. $ ~/lamp/mysql/bin/mysql --user=root --password=motdepasse --
host=localhost
Ici encore, n’hésitez pas à utiliser configure -
-help pour obtenir la liste des options et fonc- Listing 10. Installation de PHPMyAdmin
tionnalités que vous pouvez activer !
$ cd ~/lamp/sources
Quelques étapes viennent ensuite, avant $ wget http://freefr.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-
d’avoir un serveur pleinement opérationnel... 3.1.5-english.tar.bz2
Tout d’abord, création et enregistrement du $ tar xvf phpMyAdmin-3.1.5-english.tar.bz2
$ mv phpMyAdmin-3.1.5-english ~/lamp/apache/htdocs/phpMyAdmin
répertoire de données puis le lancement du $ cp ~/lamp/apache/htdocs/phpMyAdmin/config.sample.inc.php ~/lamp/apache/
démon MySQL par le binaire mysqld_safe htdocs/phpMyAdmin/config.inc.php
comme indiqué au Listing 8. Nous allons

www.phpsolmag.org 15
Outils

membres de votre équipe. Cela signifie aussi


Sur Internet que, pour peu que vous utilisiez une machine
• http://www.vmware.com/download/server/ – Projet VMWare, virtuelle différente par projet, ce que nous en-
• http://www.virtualbox.org/ – Projet Virtual Box, courageons fortement, vos projets sont isolés
• http://www.ubuntu.com/ – Adresse de la distribution Ubuntu, les uns des autres, et les modifications appor-
• http://www.centos.org/ – Adresse de la distribution CentOS, tées sur l’un, ou sur la machine l’hébergeant,
• http://www.thoughtpolice.co.uk – Téléchargez des VM sur ce site.
sont sans impact sur les autres.
Travailler, pendant le développement d’un
Code source des applications projet, sur un serveur Linux donne de bonnes
• http://httpd.apache.org/download.cgi – Apache,
notions, qui seront sans aucun doute utiles
• http://snaps.php.net/ – Snaps PHP, une fois l’application déployée en production,
• http://dev.mysql.com/downloads/mysql/6.0.html#source – Versions de développement de en environnement LAMP. Comme l’on garde
MySQL, l’IDE et les navigateurs sur la machine physi-
• http://www.phpmyadmin.net/home_page/downloads.php – PHPMyAdmin. que, nous gardons le confort de notre environ-
nement de travail habituel ; en somme, nous
bénéficions du meilleur des deux mondes.
Apache, PHP, et phpMyAdmin. Il n’est donc dernière version, ou de disposer de fonc- Un nouveau développeur doit arriver sur
pas nécessaire de modifier le fichier de confi- tionnalités spécifiques, nous utiliserons les votre projet ? Éteignez votre machine virtuel-
guration. Il ne nous reste plus qu’à ouvrir no- paquets fournis par notre distribution. Sous le, zippez-là, donnez le zip à votre collègue,
tre navigateur, en pointant vers le répertoire Ubuntu : et quelques minutes après, il a un serveur de
phpMyAdmin de notre serveur, avec une URL développement installé et opérationnel ! Les
de ce type : http://192.168.0.14/phpMyAdmin/ $ sudo aptitude install samba serveurs sont déjà installés et configurés, le
ou http://192.168.0.14:8080/phpMyAdmin/. Et sous CentOS : plus gros des sources du projet est déjà extrait
Et voilà, nous avons un environnement LAMP du serveur de sources, les traitements dont
fonctionnel, comme en témoigne la Figure 5. # yum install samba dépend l’application pour générer ses fichiers
de données ont déjà été lancés, les droits d’ac-
Travailler depuis votre machine Une fois samba installé, il faut lui indiquer cès en écriture aux répertoires de cache sont
physique qu’il doit partager notre répertoire de sour- corrects... Sur un gros projet, voila entre deux
Nous disions plus haut que seuls les serveurs ces. Pour cela, il suffira de rajouter les quel- heures et une demi-journée de gagnée, à cha-
étaient déployés sur la machine virtuelle, et ques lignes du Listing 11 au fichier de confi- que nouveau développeur joignant l’équipe !
que vous continuiez à développer sur votre guration /etc/samba/smb.conf. Attention Bien sûr, au lancement du projet, il faut jus-
machine physique, en utilisant vos outils ha- à bien l’éditer avec les droits root. Redémar- qu’à environ une demi-journée pour créer, ins-
bituels. Cela signifie que les sources de vo- rez le serveur samba en root $ sudo /etc/ taller et, configurer la machine virtuelle... Mais
tre application, qui sont hébergées par ladite init.d/samba restart ou # /etc/init. c’est une seule personne, expérimentée, qui
machine virtuelle, doivent être rendues ac- d/smb restart sur CentOS. Vous pouvez à s’en charge, et ce coût va décroissant au fur et
cessibles de l’extérieur de celle-ci. présent accéder en lecture et en écriture, de- à mesure des projets, alors qu’installer un envi-
La solution que nous avons tendance à pri- puis votre machine physique, aux fichiers se ronnement virtuel devient habituel, et que les
vilégier pour cela est de passer par un partage trouvant sur votre machine virtuelle, dans le documents et procédures s’enrichissent !
réseau «samba», utilisant le protocole CIFS : le répertoire que vous venez de partager. L'étape suivante serait de passer au déploie-
protocole de partage réseau utilisé en particu- ment des outils utilisés par votre projet pour
lier sous Windows, mais qui est largement ré- Conclusion son contrôle qualité. Par exemple, est-ce qu'il ne
pandu sous Linux aussi. Nous allons donc ins- En conclusion de cet article, voici quelques serait pas intéressant, pour chaque développeur,
taller dans notre machine virtuelle un serveur points qui nous semblent importants. Tout de disposer de PHPUnit sur sa machine de dé-
Samba, puis le configurer pour qu’il expose le d’abord, rappelons que nous avons choisi de veloppement, afin de pouvoir lancer les tests
répertoire contenant les sources de notre ap- travailler en environnement virtualisé, avec automatisés du projet avant de commiter toute
plication ; ici, les sources de phpMyAdmin. une machine virtuelle par développeur. Cela modification sur les sources de celui-ci ?
signifie que nous sommes sous Linux, dans Moyennement quelques heures de for-
Installation et configuration une situation où il n’y pas de risque important mation, il deviendrait alors possible pour
de samba de «casser» quoi que ce soit : au pire, il suffit tout développeur de contribuer activement
Considérant que nous souhaitons uni- de repartir d’une copie de la machine datant à l'écriture de ces tests, ce qui, au final, ne
quement travailler avec samba, sans avoir de quelques jours, ou d’en recréer une, sans peut avoir que des conséquences bénéfiques
spécifiquement besoin d’utiliser la toute que cela n’ait d’impact sur le travail des autres pour le projet tout entier !

Listing 11. Configuration d’un répertoire partagé avec Samba Brice Favre, Pascal Martin
Brice Favre et Pascal Martin font partie de la Cel-
[pma]
comment = Apache Htdocs lule Architecture PHP de SQLI Lyon. Ils intervien-
read only = no nent sur différents projets utilisant PHP à un ni-
path = /home/test/lamp/apache/htdocs/ veau avancé. Dans le cadre de leurs travaux,
guest ok = yes
writable = yes ils sont amenés à tester et préconiser différents
public = yes outils améliorant la productivité des projets du
create mode = 0775 groupe. L’environnement de développement est
force user = test
force group = test un des chantiers sur lesquels ils échangent fré-
quemment.

16 5/2009

Vous aimerez peut-être aussi