Diije

Installer votre serveur de développement en local avec VirtualBox et Ubuntu Server

Lorsque l’on développe des sites web, il est bien utile d’avoir un serveur où faire ses tests, ne serait-ce que pour éviter de casser un site déjà en ligne. Pour cette raison, il n’est pas rare d’installer sur sa machine locale des programmes tels que EasyPHP ou WAMP Server (sous windows). Mais ces logiciels sont souvent assez limités, et parfois assez loin de la réalité d’un serveur web. Pour cette raison, j’ai pour habitude de configurer une machine virtuelle me servant de serveur local, sur laquelle j’installerai le strict minimum pour faire tourner mes projets en cours de développement. Le but du jeu est de configurer la machine virtuelle pour qu’elle fonctionne exactement de la même façon que si je me connectais à un serveur distant chez mon hébergeur.

VirtualBox & Ubuntu Server, c'est de la dynamite !

Puisque la configuration d’une telle machine est parfois un poil compliquée, voici un tutoriel pour créer pas à pas votre propre serveur local avec VirtualBox et Ubuntu Serveur.

Installer VirtualBox

Tout d’abord, pourquoi VirtualBox ? Bah, parce que c’est gratuit, déjà. Et mine de rien, les machines virtuelles, c’est quand même bien pratique, notamment parce qu’on peut faire des instantanés, sorte de sauvegarde de l’état de la machine à un instant T. Idéal pour revenir en arrière après une mise à jour foireuse par exemple 🙂

Commençons par télécharger l’installeur. Vous devriez trouver votre bonheur sur le site officiel ou dans les paquets de votre distribution linux. L’installation de VirtualBox en elle-même ne devrait là encore ne pas vous poser de problème.

Télécharger Ubuntu Server

Là encore, pourquoi Ubuntu, et pourquoi en version serveur ? Bon, ok, c’est gratuit aussi. Ubuntu est l’une des distributions les plus populaires, et dispose d’une communauté assez large pour que dans la quasi totalité des cas, quelqu’un aura déjà rencontré (et avec un peu de chance, aura déjà résolu) le problème que vous vous apprêtez à rencontrer à votre tour.
Quant au choix de la version serveur, c’est une question d’utilité et de performances : d’une part dans la plupart des cas, il est assez peu utile d’avoir une interface graphique sur votre serveur ; d’autre part, les machines virtuelles étant souvent assez gourmandes en mémoire vive, se passer d’une interface graphique permet aussi de limiter la mémoire allouée à notre serveur, et donc de garantir de meilleures performances pour l’ordinateur hôte (théoriquement).

Vous devriez pouvoir télécharger un iso de la dernière version francophone de Ubuntu Server sur ubuntu-fr.org 🙂

Cela étant, rien ne vous empêche de choisir une autre distribution et/ou une version dotée d’une interface gratuite, le reste de ce tutoriel reste applicable.

Installer la machine virtuelle

Une fois l’iso sauvegardé sur votre ordinateur, lancez VirtualBox et créez une nouvelle machine virtuelle :

Création d'une machine virtuelle avec VirtualBox

La création d’une nouvelle machine virtuelle se faisant de manière assez intuitive, laissez-vous guider dans les différentes étapes.
Nul besoin d’allouer une quantité importante de mémoire vive, 512Mo ou moins devraient suffire si vous n’envisagez pas de traiter des masses de données.

Allouez la mémoire vive pour votre machine virtuelle

De même, la taille du disque dur virtuel n’est pas très importante, puisqu’en général on n’a pas de gros besoins pour des sites web. J’ai pour habitude de créer des disques dynamiques (VirtualBox Disc Image) de 10Go, ce qui est normalement amplement suffisant.

Creéez un disque virtuel pour votre machine virtuelle

Une fois les différentes étapes remplies, votre machine est créée. Mais elle est vide, et il faut maintenant y installer notre OS. Pour cela, il va falloir « insérer » le disque d’installation, c’est à dire l’iso de Ubuntu Server que vous venez de télécharger. Dans le menu Configuration de votre machine virtuelle, rendez-vous dans l’onglet Stockage puis indiquez le chemin vers l’iso :

Reliez l'iso d'Ubuntu Server à votre nouvelle machine virtuelle

Il suffira ensuite de lancer la machine virtuelle, de la laisser démarrer sur le cdrom et de procéder à l’installation somme toute standard de votre OS. J’ai pour habitude de n’installer aucun paquet à ce moment de la création de notre serveur, et de le faire à la main par la suite (ce qu’on va voir tout de suite), mais libre à vous d’essayer :p

Configurer la machine virtuelle

Maintenant que nous avons une machine virtuelle en parfait état de fonctionnement, il va falloir la transformer en un véritable serveur web, en y installant les éléments indispensables au bon fonctionnement de la plupart des sites.

Commencez par installer Apache, en tapant la commande suivante en ligne de commande :

sudo apt-get install apache2

Même chose pour PHP (je vous assure, le HTML c’est bien, mais c’est vite limité) :

sudo apt-get install php5 libapache2-mod-php5

MySQL, histoire de pouvoir stocker des données :

sudo apt-get install mysql-server

Et PhpMyAdmin pour avoir une belle interface web pour gérer nos bases de données :

sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin

Redémarrez Apache pour qu’il prenne en compte ses nouveaux amis :

sudo /etc/init.d/apache2 restart

Enfin, je vous conseille deux petites manips. Tout d’abord, placez un lien symbolique vers phpmyadmin dans /var/www, pour pouvoir y accéder plus facilement depuis la racine du serveur web :

sudo ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin

Puis ajoutez-vous au groupe www-data (le groupe du processus Apache) et rendez-le propriétaire de /var/www (prenez soin de remplacer username par votre login) :

sudo usermod -a -G www-data username
sudo chown -R username:www-data /var/www/

C’est presque prêt, ne reste qu’à redémarrer pour s’assurer que tout se passe bien au démarrage de la machine virtuelle :

sudo reboot

Configurer le réseau

Maintenant que nous avons un serveur web fonctionnel, il va falloir y accéder depuis l’extérieur, ou au moins depuis la machine hôte. Plusieurs possibilités existent, mais je vous conseille d’utiliser celle que je vais vous décrire, qui fonctionnera quel que soit l’OS hôte.

Commencez par arrêter votre machine virtuelle :

sudo shutdown -h now

Rendez-vous ensuite dans le menu Préférences de VirtualBox (général et non d’une machine virtuelle) puis dans l’onglet Réseau. Nous allons modifier le réseau privé hôte par défaut de VirtualBox (à priori vboxnet0) en cliquant sur le tournevis, et en renseignant l’onglet Interface comme ceci :

Configuration de l'adresse IP de la carte réseau hôte

Et l’onglet Serveur DHCP comme ceci :

Configuration de l'interface réseau hôte-invité

C’est bon, vous pouvez cliquer sur OK 🙂
Ensuite, dans la configuration de votre machine virtuelle, ajoutez une interface réseau en vous rendant dans l’onglet Configuration > Réseau et en activant tout simplement la carte n°2 en mode Réseau privé hôte :

Ajout d'une seconde carte réseau à la machine virtuelle

Veillez à conserver la carte n°1 active en mode NAT.

Démarrez ensuite la machine virtuelle pour éditer sa configuration réseau. Une fois logué, tapez :

sudo nano /etc/network/interfaces

Modifiez le fichier pour qu’il ressemble à ça (il s’agit en fait de configurer votre nouvelle carte réseau, aka eth1) :

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
        address 10.0.0.2
        netmask 255.255.255.0

Vous venez de spécifier une IP fixe pour la seconde carte réseau, qui permettra de faire en sorte que la machine invitée soit toujours accessible depuis la même adresse.

Pour finir, redémarrez les interfaces réseau pour que les modifications soient prises en compte :

sudo /etc/init.d/networking restart

Vous devriez pouvoir accéder au serveur web de votre machine virtuelle en tapant http://10.0.0.2 dans la barre d’adresse de votre navigateur :

La page d'accueil par défaut d'Apache, synonyme que tout fonctionne correctement

Une fois ces différentes étapes réalisées, je vous conseille d’enregistrer un premier instantané de votre machine virtuelle (touche « host » + T, la touche « host » étant par défaut la touche Pomme/CMD sur Mac et la touche CTRL droite sur les autres OS) :

Création d'un instantané avec VirtualBox

N’hésitez pas à détailler l’intitulé et la description de chaque Instantané afin de savoir où vous en étiez dans votre travail.
Ainsi, si quelque chose foire pendant la suite, vous pourrez facilement revenir en arrière en sélectionnant la sauvegarde que vous souhaitez via l’onglet Instantanés du menu principal de VirtualBox :

Restauration d'un instantané avec VirtualBox

Les instantanés sont un des principaux atouts des machines virtuelles, je vous recommande donc très fortement de les utiliser !

Installer les additions invité

Un autre des nombreux atouts de VirtualBox, c’est le partage de dossiers entre la machine hôte et la machine invitée, possible au travers des additions invité. Ces fameuses additions sont en fait des greffons ajoutés à votre machine virtuelle et qui permettent l’interfaçage avec la machine hôte. Pour les installer, vous devez d’abord installer quelques paquets essentiels dès qu’on touche au noyau linux :

sudo apt-get install build-essential linux-headers-`uname -r` dkms

Il faut ensuite monter l’image disque contenant les additions invité. Pour cela, rendez-vous dans le menu Périphériques de votre machine virtuelle et cliquez sur Installer les additions invité. L’image iso sera ajoutée à votre machine virtuelle. Il suffit ensuite de la monter avec la commande :

sudo mount /dev/cdrom /media/cdrom/

Une fois l’image iso montée, lancez l’installation des additions invité :

cd /media/cdrom/
sudo sh ./VBoxLinuxAdditions.run

Et voilà, les additions invité sont installées. Peu de différence pour vous puisque la plupart ne sont utiles que lorsque l’on utilise une interface graphique, mais ça sera bien utile pour la suite quand même.
Pour que les additions soient bien prises en compte, éteignez encore une fois la machine virtuelle :

sudo shutdown -h now

Créer un dossier partagé

Un dossier partagé sera, comme son nom l’indique, un espace de stockage partagé entre la machine hôte et la machine virtuelle. Vous aurez donc l’équivalent d’un FTP sauf qu’il sera connecté automatiquement et totalement intégré à votre explorateur de fichiers favori.
Voyons comment le paramétrer.

Sur la machine hôte

Rendez-vous dans le menu de configuration de votre machine virtuelle, dans l’onglet Dossiers partagés. Vous pourrez alors ajouter un répertoire de partage de façon temporaire ou permanente, choisir l’étendue des droits pour la machine virtuelle, ou encore paramétrer le montage automatique ou manuel du dossier. Surtout, vous lui donnerez un nom qu’il va falloir retenir parce que vous en aurez besoin pour la suite.

Configuration d'un dossier partagé VirtualBox

Sur la machine invitée

Redémarrez la machine virtuelle, et montez le dossier partagé avec la commande suivante (en prenant soin de remplacer « NOM_DU_DOSSIER_DE_PARTAGE » par … le nom du dossier de partage :p) :

sudo mount -t vboxsf NOM_DU_DOSSIER_DE_PARTAGE /var/www

Si tout se passe bien, le dossier de partage sera monté à la place de /var/www, le répertoire de base par défaut d’Apache. Autrement dit, votre dossier partagé contiendra tous les sites hébergés sur votre serveur. Libre à vous évidemment de modifier ce comportement, en changeant le point de montage (/var/www) et/ou la configuration d’Apache.

Vous pouvez maintenant configurer votre dossier de partage pour qu’il soit monté automatiquement au démarrage de votre machine virtuelle. Pour cela, il vous faut éditer /etc/fstab :

sudo nano /etc/fstab

Ajoutez la ligne suivante à la fin du fichier :

NOM_DU_DOSSIER_DE_PARTAGE	/var/www	vboxsf	umask=0022,gid=33,uid=33	0	0

Comme précédemment, veillez à remplacer NOM_DU_DOSSIER_DE_PARTAGE par le nom de votre dossier 😉
Le 2e paramètre est le point de montage, le 3e le système de fichiers (à ne pas modifier, c’est le système de fichiers propre aux dossiers partagés de VirtualBox). Pour le reste, si vous ne comprenez pas, mieux vaut ne pas y toucher 🙂

Pour tester le bon fonctionnement de ce paramétrage, redémarrez votre serveur virtuel. En cas de problème, n’hésitez pas à retourner dans le menu de configuration de votre machine virtuelle et à désactiver le montage automatique du dossier partagé.

Enfin, pour résoudre les problèmes de droits d’écriture et de lecture éventuels, exécutez les deux commandes suivantes (en remplaçant USERNAME par votre login unix) :

sudo usermod -a -G vboxsf USERNAME
sudo usermod -a -G vboxsf www-data

Ceci ajoutera USERNAME (vous) et www-data (l’utilisateur par défaut d’Apache) au groupe vboxsf, qui a normalement tous les droits sur les dossiers partagés VirtualBox.

Installer openssh pour le copier-coller

Dernière petite astuce : le copier-coller. Sur une installation classique d’une machine virtuelle munie d’une interface graphique, lorsqu’on installe les additions invité VirtualBox, il est possible de faire des copier-coller entre la machine hôte et la machine virtuelle, dans les deux sens. Malheureusement, cette fonctionnalité est dépendante de l’interface graphique, dont votre nouveau serveur de développement est dépourvu.

La solution pour palier à ce problème est d’installer openssh :

sudo apt-get install openssh-server

Connectez-vous ensuite à votre machine virtuelle depuis le terminal de votre machine hôte (pour ceux qui utilisent Windows, PuTTy est votre ami) :

ssh USERNAME@10.0.0.2

Pour rappel, 10.0.0.2 est l’adresse locale de votre serveur virtuel.

Vous avez donc maintenant un serveur de développement en local totalement fonctionnel, et vous pouvez éditer les fichiers de vos sites directement depuis votre machine hôte en utilisant les dossiers partagés. En plus, grâce aux instantanés, vous pouvez vous amuser à bidouiller la configuration de votre serveur sans risque de pertes de données puisque vous pourrez revenir en arrière à tout moment !

Astuce de dernière minute pour ceux qui auraient tout lu : pour pouvoir également effectuer des rollbacks sur les fichiers de vos sites, voire synchroniser ces derniers entre plusieurs postes, pensez à utiliser un logiciel de gestion de versions comme Subversion, ou même DropBox.

Il ne vous reste plus qu’à faire preuve d’imagination pour vos futurs sites 😉