Créer un serveur de développement avec Virtualbox

Après avoir vu plusieurs messages sur différents forums où des personnes avaient les plus grandes peines du monde à faire fonctionner des logiciels comme EasyPHP ou Wamp, je me suis rendu compte à quel point la solution que j'utilise depuis près d'un an est simple et paramétrable. Wamp est un bon logiciel qui fait ce qu'on lui demande (c'est le plus important), mais il se trouve vite impuissant quand on souhaite ajouter des extensions PHP qu'il ne supporte pas, ou que l'on modifie trop profondément la configuration de celui-ci. De plus, Wamp fonctionne sur un environnement Windows alors que la plupart (voir la totalité) des hébergeurs proposant PHP ne proposent que des serveurs sous Linux. C'est un gros problème surtout quand l'on connait les nombreuses différences entre les versions Windows et Linux de PHP. C'est pour cette raison que depuis quelques temps, j'ai fait le choix d'installer une machine virtuelle sous Ubuntu Server qui me sert de serveur de développement en remplacement de Wamp (ou Mamp sous Mac). On pourrait croire que cela rend plus compliquer le développement, mais la gestion réseaux de Virtualbox permet d'accéder à une machine virtuelle depuis l'ordinateur hôte. Ainsi la machine virtuelle s'efface complètement à tel point qu'on a tendance à oublier de la démarrer au début de la journée :) .

Je vais donc vous proposer aujourd'hui, un article qui vous guidera pas à pas pour créer un serveur de développement pour PHP/MySQL sous Ubuntu Server à l'aide de Virtualbox.

 

Récupération des outils nécessaire


Nous allons commencer par récupérer le logiciel Virtualbox. Vous trouverez les archives pour Windows et Mac OS X ici. Si vous êtes sous Linux, Virtualbox est disponible dans les dépôts des principales distributions (bien que l'utilité d'un tel tutoriel sous Linux soit discutable). Une fois Virtualbox récupéré, installez-le.

Il nous faut aussi récupérer Ubuntu Server (ou n'importe quel autre distribution, mais cet article prendra l'exemple de Ubuntu Server). Pour cela, vous devez vous rendre sur cette page. J'ai personnellement choisi la version LTS, mais vous pouvez aussi prendre la dernière version en date ;) . Si vous désirez récupérer Ubuntu par torrent, vous pouvez le faire ici.

 

Installation de Ubuntu Server


Commencer par créer une nouvelle machine Virtuelle que vous nommerez par exemple "Ubuntu". Pour la taille de mémoire, je vous recommande entre 256 et 512Mo de RAM selon la quantité que possède votre machine (pour un simple serveur Web, les deux devraient être largement suffisant).


Vous devez ensuite créer un disque dur, la valeur par défaut de 8Go est normalement suffisante pour l'utilisation que nous voulons en faire. Adapter cette taille en fonction de vos besoins et de la taille de votre disque dur :) .


Ensuite, lancer la machine virtuelle et sélectionner l'iso de Ubuntu Server précédemment télécharger comme disque par défaut. Votre machine virtuelle devrait démarrer et vous devriez arriver sur l'écran suivant :


Sélectionnais le français, l'installation de Ubuntu démarre. Un écran vous demande de sélectionner votre pays. Ubuntu vous propose ensuite de détecter l'agencement de votre clavier. Une fois cette étape passée, Ubuntu configure le réseau et vous demande de donner un nom à votre machine (personnellement ma machine virtuelle se nomme serveur), vous devez ensuite renseigner le classique couple nom d'utilisateur/mot de passe puis votre zone géographique :p .

Nous arrivons enfin à l'étape du partitionnement. Ici, nous sommes dans une machine virtuelle, notre disque dur réel ne craint rien, nous pouvons donc choisir sans hésiter le partitionnement manuel. Une fois ce choix fait, nous devons créer une table de partition sur notre disque dur. Pour cela, sélectionnez votre disque dur puis à la question "Voulez-vous créer une nouvelle table de partition ?" répondez "oui".

Maintenant nous allons créer deux partitions :

  • Une partition de SWAP de 512Mo.
  • Une partition en ext4 qui prend tout le reste de l'espace disque avec indicateur d'amorçage et un point de montage à la racine (/).


Je vous laisse créer ces deux partitions puis valider les modifications :) . Ubuntu installe alors le système de base puis vous demande si vous désirez configurer un proxy, si vous n'en utilisez pas ou si vous ne savez pas ce que c'est, laisser le champ vide. Ubuntu télécharge alors les paquets manquants ainsi que les mises à jour puis installe le tout. Vous pouvez ensuite configurer les mises à jour automatique (je ne l'ai personnellement pas fait, car le système n'est pas critique ici puisqu'il s'agit d'un serveur de développement). Ubuntu vous propose ensuite une liste de logiciel à installer allant du serveur OpenSSH au serveur Samba. N'installer aucun de ces logiciels, nous ferons tout ça plus tard ;) . Appuyer sur continuer pour installer les derniers paquets. Il ne nous reste plus qu'à installer GRUB sur le secteur d'amorçage. L'installation est finie, nous allons maintenant configurer le réseau, pour cela quittez la machine virtuelle.

 

Configuration du réseau


Nous allons maintenant passer à la configuration du réseau, nous allons créer un réseau local avec deux machines :

 

  • 10.0.0.1 : Représente la machine hôte (votre machine physique).
  • 10.0.0.2 : Représente la machine serveur (la machine virtuelle).


Pour cela, nous utilisons le réseau 10.0.0.0 qui est un réseaux privé (non routable sur internet comme 192.168.0.0 qui est souvent l'adresse de votre réseau local). En utilisant 10.0.0.0, nous sommes sûrs de ne pas utiliser une adresse déjà existante ;) .

Pour configurer le réseaux tout en gardant un accès facile à internet, nous allons devoir configurer deux cartes réseaux virtuelle pour notre machine. La première déjà configurée lui permettant de naviguer sur internet, la deuxième lui permettra de communiquer avec la machine hôte.

Pour commencer, rendez-vous dans les préférences de Virtualbox (et non celle de votre machine virtuelle) puis dans l'onglet "Réseau". Puis sur le bouton en forme de plus : "Ajouter réseau privé hôte". Une fois celui-ci créé cliquez sur le bouton en forme de tournevis : "Modifier réseau privé hôte". Modifiez l'onglet Interface pour qu'il corresponde à ceci :


Puis l'onglet Serveur DHCP afin qu'il corresponde à celui-ci :


Validez ensuite les modifications puis allez dans l'onglet configuration de votre machine virtuelle (et non celle de Virtualbox), dans l'onglet réseau et dans l'onglet "Carte 2" cochez "Activer la carte réseau", dans le mode d'accès réseau, sélectionnez "Réseau privé hôte" et dans nom sélectionnez le réseau que vous venez de créer (vboxnet0 par défaut). Puis cliquer sur "Ok" pour valider les modifications.

Pour finir nous devons ajouter notre interface réseau à la liste des interfaces d'Ubuntu pour cela redémarrer votre machine virtuelle puis loguer vous. Ouvrer le fichier /etc/network/interfaces en tant qu'administrateur avec nano :

 

sudo nano /etc/network/interfaces

 

Puis ajouter ceci à la fin du fichier :

 

auto eth1
iface eth1 inet static
    address 10.0.0.2
    netmask 255.255.255.0

 

Nous avons ici configuré notre interface avec le nom eth1, pour que les modifications soient prise en compte, nous devons redémarrer les interfaces réseaux avec la commande suivante :

 

sudo /etc/init.d/networking restart

 

Installation des différents logiciel


Maintenant que le réseau est configuré, nous allons pouvoir installer tous les logiciels dont nous aurons besoin sur notre machine de développement. Pour ceci, nous allons commencer par installer un serveur SSH afin de pouvoir contrôler notre serveur de développement depuis notre système d'exploitation principale.

L'installation d'OpenSSH se fait tout simplement en tapant la commande suivante :

 

sudo apt-get install openssh-server

 

Maintenant que OpenSSH est installé, nous allons pouvoir travailler directement depuis le système hôte en nous connectant à notre machine via SSH. Pour vous connecter à votre serveur par SSH, vous pouvez utiliser la console sous Linux/Mac OS, mais sous Windows, vous aurez besoin de Putty. Pour la suite de ce cours, je suppose que vous savez utiliser Putty (si ce n'est pas le cas, il existe de nombreux cours très simple par exemple ici).

Nous allons nous connecter à notre serveur soit avec putty ou sous le terminal avec la commande :

 

ssh serveur@10.0.0.2

 

Maintenant que nous sommes connecté sur notre serveur depuis la machine hôte, nous allons pouvoir installer un serveur LAMP qui servira pour le développement web, mais avant afin de pouvoir facilement modifier le dossier /var/www depuis l'extérieur, nous devons changer son propriétaire avec la commande chown (en remplacent serveur par votre nom d'utilisateur):

 

sudo chown -R serveur /var/www

 

Nous pouvons maintenant installer le paquet lamp-server^ qui contient les différents paquets pour obtenir un serveur de développement fonctionnel (Apache2, mod_php, PHP5 et MySQL) :

 

sudo apt-get install lamp-server^

 

Durant l'installation, il vous sera demandé un mot de passe pour MySQL (il ne peut pas rester vide). Maintenant que notre serveur web est installé, nous pouvons nous rendre à l'adresse http://10.0.0.2/ et tester le rendu.

Il nous faut maintenant configurer PHP pour qu'il affiche les erreurs, car par défaut la configuration de PHP cache les erreurs, c'est important sur un serveur de production mais inutile et déconseillé sur un serveur de développement. Pour cela, nous devons modifier le fichier /etc/php5/apache2/php.ini :

sudo nano /etc/php5/apache2/php.ini


Vous devez trouver les deux lignes display_errors et display_startup_errors et passer leur valeur à On. Sauvegarder le fichier puis redémarrer apache :

 

sudo service apache2 restart

 

Il ne nous reste plus qu'à créer un fichier afin de vérifier que PHP fonctionne, pour cela nous allons supprimer le fichier index.html dans /var/www et le remplacer par un fichier index.php.

 

rm /var/www/index.html
echo"" > /var/www/index.php

 

Si tout se passe bien, vous devez tomber sur une page vous détaillant la configuration de PHP.

 

Accéder au fichier depuis la machine hôte


Nous avons maintenant un serveur fonctionnel, il ne nous manque plus qu'un outil pour pouvoir modifier notre dossier /var/www comme si celui-ci était sur la machine hôte. Il y a beaucoup de solutions différentes pour faire ça (scp, ftp) mais j'ai décidé d'utiliser SSHFS, car il ne demande aucune configuration supplémentaire du côté du serveur puisqu'il est compris dans openssh.

Mais pour cela, nous avons besoin de la commande sshfs sur notre machine hôte. Sous Linux, aucun problème elle s'installe en une ligne via les dépôts, mais sous Windows et Mac OS X c'est un poil plus complexe.

Commençons par Mac OS X, il faut télécharger et installer OSXFuse et SSHFS depuis le site du projet OSX FUSE. Une fois les deux paquets installés, vous avez accès à la commande SSHFS depuis le terminal. Pour monter le répertoire /var/www/ dans le dossier ubuntu qui se trouve sur le bureau, nous ferons :

 

sshfs serveur@10.0.0.2:/var/www ~/Desktop/ubuntu

 

Sous Windows, le logiciel Dokan vous permet de monter un lecteur SSHFS, vous pouvez le télécharger ici. Le logiciel propose une interface graphique assez simple, je vous laisse donc vous débrouillez seul ;) .


Voilà, je pense que vous avez maintenant la base d'un petit serveur de développement. Bien sûr, il n'est pas complet pour cela il faudrait ajouter PHPMyAdmin, des extensions pour PHP, un serveur SMTP pour utiliser la fonction mail... Mais le plus dur est fait, la plupart des choses manquantes existent dans les dépôts d'Ubuntu et dispose d'explication dans la documentation. Je n'exclue bien évidemment pas de faire un article sur l'installation de tel ou tel outils dans un futur plus ou moins proche ;) .

L'auteur

Toshy

Passionné par l'informatique depuis mon plus jeune age, j'anime un blog sur le développement web et les différents domaines qui s'y attachent : administration système, bonne pratique de développement, framework web.
Je suis développeur web de profession, diplômé d'un DUT d'informatique, je travaille actuellement au sein du service informatique d'une université.