Tutoriel : Monter un serveur virtuel avec des fichiers locaux sous VMWare

Logiciels nécessaires : VMWare Fusion (env 45 €)

Connaissances nécessaires : Quelques notions avancées de Linux

Difficulté : Difficile

 

Afin de développer ou tester votre site sur un environnement miroir de celui de production, la solution la plus pratique et la plus souple consiste à monter une machine virtuelle sur votre ordinateur et la configurer de manière identique à celle de production (même OS, même version de PHP, MySQL, mêmes réglages…).

Si cette méthode a beaucoup d’avantages (efficacité, souplesse…), elle a l’inconvénient de vous obliger, soit à modifier directement le code directement dans la machine virtuelle (VM) (pas très pratique si on n’a pas d’interface graphique), soit de posséder un logiciel vous permettant de monter sur votre ordinateur un dossier partagé de la VM mais ce dossier (et donc votre code « à jour ») ne sera accessible que si la machine virtuelle est lancée. Cela rajoute donc des étapes inutiles pour tester le code, le mettre en production, etc.

Ce tutoriel vous montrera donc :

  • Comment monter un serveur de test Linux dans une machine virtuelle
  • Installer et paramétrer l’architecture « Apache, PHP, MySQL »
  • Faire en sorte qu’un site paramétré sur le serveur virtuel trouve ses sources dans un dossier local de la machine physique

 

Etape 1 : Télécharger la distribution Linux de votre choix.

Pour notre exemple, et donc pour la suite de ce tutoriel, nous prendrons un Ubuntu Server 12.04.2

Copie d'écran de la page de téléchargement d'Ubuntu

 

Vous téléchargerez donc une image « ISO » qui vous permettra de monter votre machine virtuelle.

 

Etape 2 : Monter la machine virtuelle

2.1 – Création de la machine virtuelle et installation

Lancez VMWare Fusion puis cliquez sur « Ajouter » puis « Nouveau… ». Puisque votre distribution est contenue dans une image disque « ISO », cliquez sur « Continuer sans disque ».

Copie d'écran de création de VM

 

Sur l’écran suivant, choisir « Utiliser le disque ou le disque image d’installation du système d’exploitation » puis, grâce à la liste déroulante, allez chercher le fichier .iso que vous avez téléchargé à l’étape 1 puis cliquez sur « Continuer ».

Choix de l'image disque pour installation Machine Virtuelle

 

VMWare Fusion vous demandera quel système d’exploitation vous désirez installer, indiquez Linux. Puis quelle version : indiquez Ubuntu (ou autre distribution que vous aurez choisie).

 

Enfin, indiquez les informations de connexion (qui vous permettront de vous logger sur votre VM).

Saisie des identifiants

 

Sur l’écran suivant, laissez les paramètres par défaut, sauf si vous avez un besoin impératif de les modifier et que vous savez ce que vous faites. Cliquez sur « Terminer » pour lancer la création et l’installation de votre machine virtuelle. Il vous demandera où enregistrer le fichier VM, choisissez l’emplacement que vous voulez, cela n’a pas d’importance pour la suite du tutoriel.

L’installation de votre nouvelle machine virtuelle commence enfin 😉

Installation Ubuntu dans la machine virtuelle

 

 

 

2.2 – Paramétrage et installation d’un environnement Apache, PHP, MySQL

A la fin de l’installation, la machine virtuelle redémarre et vous propose de vous connecter. Saisissez donc les identifiants que vous avez défini à l’étape précédente.

Connecté à la VM

Ca y est, vous êtes loggé sur votre serveur virtuel.

 

Avant de nous lancer dans le paramétrage de notre environnement serveur web, nous allons mettre à jour notre VM et paramétrer deux petites choses sur notre serveur.

2.2.1 – Passer le clavier en AZERTY

Par défaut, Ubuntu s’installe avec un clavier QWERTY. Pour le mettre en AZERTY, lancer la commande suivante dans votre machine virtuelle :

sudo dpkg-reconfigure keyboard-configuration

(Attention : sur un clavier Qwerty, le « A » est à la page du « Q » et inversement ;o))

Cette commande lancera une fenêtre de configuration de clavier. Le seul paramètre à changer pour passer le clavier en AZERTY se trouve sur le deuxième écran, choisir « French » :

Configurer le clavier en Français

Vous pouvez laisser les autres paramètres par défaut en appuyant sur « Entrée » à chaque question.

 

2.2.2 – Mettre à jour le serveur

Afin d’être le plus à jour possible, mettons à jour notre serveur, via les commandes suivantes :

sudo apt-get update

puis

sudo apt-get dist-upgrade

puis on redémarre :

sudo reboot

2.2.3 – Ré-Installation des VMWare Tools

Afin de pouvoir par la suite partager notre disque local vers la machine virtuelle, il faut installer VMWare Tools. Ou plutôt les réinstaller. En effet, si vous avez jeté un oeil lors de l’installation de votre distribution, un message « Installaton de VMWare Tools » s’est affiché. Mais au final ça ne semble pas avoir bien marché (quelques erreurs se produisent par la suite).

Pour réinstaller VMWare Tools :

1 – On installe des packages de compilation complèmentaires

apt-get install linux-headers-server build-essential

2 – On monte le lecteur de CD-ROM virtuel des VMWare Tools

Sous VMWare, allez dans le menu « Machine virtuelle » puis « Réinstaller VMWare Tools ». Cela aura pour effet de monter un lecteur de CD-ROM virtuel dans votre VM dans lequel se trouvera le fichier d’installation de VMWare Tools.

Lancer les commandes suivantes :

mkdir /mnt/cdrom 
mount /dev/cdrom /mnt/cdrom

Le message « mount : block device /dev/sr0 is write-protected, mounting read-only » qui apparaît est normal.

 

3 – On (ré)installe les VMWare Tools

cd /mnt/cdrom
ls -l

Cela vous affichera la version du fichier VMWare Tools (ici 9.2.2-893683 mais chez vous elle sera peut-être différente) :

Version de VMWareTools

Il faut copier ce fichier dans votre dossier /tmp pour pouvoir l’extraire et l’installer :

cp VMwareTools-9.2.2-893683.tar.gz /tmp

Puis on décompresse et on installe :

cd /tmp

tar -zxf VMwareTools-9.2.2-893683.tar.gz

cd vmware-tools-distrib

sudo ./vmware-install.pl -d

On effectue un petit reboot :

sudo reboot

Voilà, nos VMWare Tools sont cette fois-ci correctement installés !

 

Etape 3 : Configurer le partage et le serveur Apache

Cette dernière étape nous permettra de paramétrer notre serveur Apache, PHP, MySQL et le partage de fichier depuis notre ordinateur vers la VM.

Pour simplifier notre tutoriel, le site sera constitué d’un simple fichier index.php affichant un « hello world! » :


<?php
echo "Hello World!";
?>

Mais bien sûr, cette architecture fonctionne parfaitement pour n’importe quel site PHP.

 

3.1 – Partager notre dossier local vers la VM

Le but de cette manoeuvre est donc d’avoir les fichiers sources de votre site web sur votre machine physique locale et les rendre accessibles depuis votre VM pour que le serveur que l’on va installer dessus puisse s’en servir.

Dans VMWare, allez dans le menu « Machine Virtuelle » puis « Partages > Réglages de Partage ».

Activez les dossiers partagés puis ajoutez un partage :

Activation du partage

 

Si ce message d’erreur apparaît quand vous activez le partage :

Erreur lors du partage

Je n’ai malheureusement pas de solution miracle. Cela m’est déjà arrivé, je l’ai résolu en recommençant tout à zéro… Si quelqu’un a une astuce infaillible qui ne nécessite pas de tout recommencer, qu’il me la mette dans les commentaires. Si je la trouve j’éditerai ce post. En attendant, vous ne pourrez pas aller plus loin puisque ce point est indispensable au bon fonctionnement de notre architecture…

 

Ensuite donc, choisissez le dossier local qui contient votre site, pour notre exemple, et pour faire simple on va partir du principe que vos fichiers locaux sont dans :

Mac OS X :

/development/monsite/

Windows :

c:\development\monsite\

 

Vous devriez donc avoir un nouveau partage comme ceci :

Dossier partagé

 

Nous allons vérifier que le partage est bien paramétré dans notre VM. Pour ce faire, dans la console de notre VM, nous allons taper les commandes :

cd /mnt/
ls -l

Nous devrions voir un dossier nommé « hgsf » puis à l’intérieur un dossier « monsite » :

Les dossiers partagés

Le dossier « monsite » de votre ordinateur physique est donc désormais accessible depuis la machine virtuelle.

 

3.2 – Installation du serveur Apache, PHP, MySQL

Bien que nos fichiers soient désormais accessibles, il n’y a, sur notre VM, aucun serveur qui nous permet de faire tourner le site.

Pour installer tout ça : une seule ligne de commande

sudo aptitude install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 phpmyadmin

L’écran d’installation en mode texte vous posera quelques questions, acceptez tout en appuyant sur « Entrée » à chaque question.

 

L’installation de MySQL Server vous demandera de créer un mot de passe pour l’utilisateur « root » :

Demande de mot de passe ROOT

Indiquez le mot de passe que vous voulez et retenez le.

Il vous demandera ensuite pour quel serveur configurer MySQL, laissez le paramètre « Apache2 » sélectionné par défaut.

Viendra ensuite l’installation de phpmyadmin. Il vous sera ensuite demandé le mot de passe root que vous avez défini précédemment.

 

3.3 – Test de notre configuration serveur

Nous allons vérifier que notre serveur fonctionne.

Pour nous connecter à notre serveur virtuel depuis notre machine physique, il faut connaître son IP. Vous la trouverez grâce à la commande :

ifconfig

Ce qui donne l’écran suivant, l’adresse IP apparaît encadrée en jaune :

Adresse IP de la VM

La VM est donc accessible via l’adresse IP 172.16.57.131 dans mon cas.

Ainsi, si vous accéder à cette adresse depuis votre navigateur, vous devriez voir ceci :

It Works

Cela signifie que votre serveur est bien accessible et qu’il est donc prêt à recevoir votre site.

 

3.4 – Modification du fichiers « hosts » local pour accéder à la VM via une URL classique

Avant de paramétrer notre Apache, nous allons modifier notre fichier « hosts » afin qu’on puisse attribuer un nom de domaine à notre machine virtuelle. Le but étant de pouvoir accéder à notre site avec une adresse web (locale) plutôt qu’avec l’IP (ça simplifie la configuration du serveur et surtout ça permet d’héberger plusieurs sites sur votre VM).

Par exemple, je voudrais utiliser l’adresse suivante pour me connecter à mon site :

local.mavmubuntu.net

Je vais donc modifier mon fichier hosts pour refléter ce besoin. Pour ce faire :

Sous Mac OS X :

  1. Lancer le terminal (Applications > Utilitaires > Terminal)
  2. Taper la commande "sudo pico /etc/hosts"
  3. Se placer après la dernière ligne du fichier
  4. Saisir : "172.16.57.131 local.mavmubuntu.net" en remplaçant l'IP par l'IP de votre VM trouvée à l'étape précédente
  5. Faire "CTRL+O" pour Enregistrer
  6. Appuyez sur "Entrée" pour valider
  7. Faire "CTRL+X" pour Quitter

 

Sous Windows :

1. Aller dans Démarrer> Programmes -> Accessoires
2. Exécuter le Bloc-notes ou WordPad en tant qu'administrateur (clic droit)
3. Cliquer sur "Ouvrir .." dans le menu Fichier.
4. Parcourir pour Windows/System32/drivers/etc
5. Dans" fichiers de type: sélectionner tous les documents
6. Ouvrir "hosts"
7. Après la dernière ligne du fichier, ajoutez : "172.16.57.131 local.mavmubuntu.net" en remplacant l'IP par celle de votre VM trouvée à l'étape précédente
8. Enregistrer

9. Redémarrez

 

Sous Mac OS, votre fichier hosts doit donc ressembler à ceci :

Fichiers hosts

 

Ouvrez à nouveau votre navigateur puis saisissez « local.mavmubuntu.net » : vous accédez désormais au serveur web de votre VM via sa nouvelle adresse web 🙂

 

 3.5 – Paramétrage d’Apache sur la VM pour afficher notre site

Il faut à présent configurer Apache pour qu’il affiche notre site pour l’adresse « local.mavmubuntu.net ».

3.5.1 – Création du dossier

Par convention (ou par habitude), les fichiers des sites hébergés sur un serveur Apache sont placés dans le dossier « /var/www/ ». Mais, si vous avez bien suivi, nos fichiers à nous sont accessibles dans le dossier partagé « /mnt/hgfs/monsite ».

Ainsi, pour que notre installation soit la plus propre possible, nous allons créer un dossier « local.mavmubuntu.net » dans le dossier « /var/www/ » qui sera en réalité un lien symbolique vers notre dossier partagé.

Pour ce faire, dans la console de votre machine virtuelle, passez en mode superutilisateur :

sudo su

Tapez votre mot de passe utilisateur, puis tapez la commande suivante pour créer le lien symbolique :

cd /var/www/
ln -s /mnt/hgfs/monsite monsite

Cette commande va donc créer un dossier « /var/www/monsite » qui renverra vers notre partage « /mnt/hgfs/monsite ».

La commande :

ls -l /var/www/monsite/

Affichera bien mon fichier « index.php ».

 

3.5.2 – Paramétrons enfin Apache

Je ne vais pas vous détailler toute la configuration d’Apache mais uniquement ce qui va nous permettre de faire fonctionner notre serveur comme attendu.

Ce qu’il faut savoir à propos d’Apache2, c’est que chaque site est défini dans un fichier séparé disponibles dans le dossier :

/etc/apache2/sites-available

Mais attention : les sites définis dans ce dossier ne sont pas forcément « activés ». Pour qu’ils soient activés, il doivent également être présents dans le dossier :

/etc/apache2/sites-enabled

Ce mode de fonctionnement vous permet notamment d’éditer votre configuration (dans le dossier …/sites-available) sans craindre de tout casser et également par exemple de désactiver un site très rapidement sans perdre toute la configuration.

Par défaut à l’installation d’apache il n’y a qu’un fichier dans ces dossiers, qui s’appelle « default » (il peut y avoir également un fichier « default-ssl » si le serveur le supporte). Ce fichier décrit donc la présence d’un site, dans le dossier « /var/www/ » du serveur. Il s’agit en réalité de la fameuse page « It Work! » que l’on a vu précédemment.

Nous allons en rajouter un. Le plus simple étant de copier le fichier « default » pour n’avoir plus qu’à le modifier. Par habitude, je nomme toujours les fichiers de configuration des sites par leur nom de domaine. Ainsi je vais créer une copie du fichier défault de cette manière :

cd /etc/apache/sites-available
sudo cp default local.mavmubuntu.net

J’édite ensuite ce fichier nouvellement créé :

sudo pico local.mavmubuntu.net

Et le modifie pour le faire correspondre à notre configuration :


<VirtualHost local.mavmubuntu.net:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www/monsite/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

Je sauvegarde (CTRL+O, Entrée) et je quitte (CTRL+X).

J’ai donc paramétré mon site mais il n’est pas encore accessible puisque le fichier n’est pas dans le dossier /etc/apache2/sites-enabled.

Pour l’activer :

sudo a2ensite local.mavmubuntu.net

(la commande « a2ensite » signifie « Apache2 enable site » et permet d’activer le site, la commande « a2dissite » permet au contraire de le désactiver)

On recharge la nouvelle config Apache2

sudo service apache2 reload

Et là, roulement de tambours…

Hello World!

Notre Hello Wolrd! s’affiche bien !!

Maintenant, vous pouvez modifier vos fichiers sources directement sur votre ordinateur local : vos modifications seront immédiatement disponibles dans la VM et donc un simple refresh du navigateur les reflètera !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.