Configurer une machine virtuelle sur linux
Je développe habituellement sur un mac avec une stack pré-compilée de PHP/Mysql : AMPPS. Pour les petits site du quotidien cela est très convivial et n’oblige pas a rentrer dans le dur du sujet : la configuration d’un vHost Apache suffit généralement pour commencer un nouveau projet.
Cependant les applications sont limitées dès lors que vous voulez vous servir de librairies avancées tel que ffmpeg, imagick, pear…etc. Installer de telles librairies relève du casse tête sur un mac ou un pc alors qu’une ligne de commande suffit à les installer sur un environnement linux.
La solution pour se rapprocher de l’environnement de production consiste à monter une VM (Machine virtuelle) Debian sur notre machine hôte, de lui installer les librairies nécessaires et de partager un dossier avec notre machine hôte. Ainsi un serveur web tournera sur notre machine virtuelle et nous ferons appel à notre site via la machine hôtes. En réalité tout est transparent pour le développeur puisqu’il continue à travailler avec ses outils/arborescence habituels… Il faut juste configurer et démarrer la machine virtuelle et le tour est joué. D’autres solutions existent pour palier à ce genre de problème, notamment Vagrant qui permet d’industrialiser grandement ce processus, mais sa mise en place reste encore relativement obscure et fastidieuse pour les néophytes.
La procédure ci-dessous vous aidera à configurer votre système pour un tel développement, il se base sur une installation de Debian 7 wheezy, il faudra adapter les commandes pour travailler avec un autre système d’exploitation.
Installation de la machine virtuelle
Il nous faut dans un premier temps télécharger VirtualBox qui va nous servir à créer/cloner des machines virtuelle à partir de notre machine hôte.
L’installation de linux se fait en mode graphique en montant une image iso à partir de la fenêtre principale de la VM.
Après l’installation de la machine, ouvrez un terminal administrateur et mettez l’ensemble de votre système à jour :
apt-get update && apt-get upgrade && apt-get dist-upgrade
Vous pouvez ensuite installer la suite de logiciel qui vous sera utile, ex :
apt-get install mysql-server php5 apache2 phpmyadmin
Installation des logiciels additionnels VirtualBox pour Debian
Il vous faudra installer et mettre à jour module-assistant qui est un utilitaire de compilation et de gestion de paquet pour le noyaux linux.
apt-get install build-essential module-assistant
Configurez l’outil précédemment installé en tapant
m-a prepare
Depuis le menu « Device » de VirtualBox montez l’iso des logiciels additionnels : « insérez l’image CD des Additions invités » ou « Install Guest Additions » sur un menu Anglais.
En root, monter le CD et rendez-vous dans le repertoire des devices puis lancez l’installation :
cd /media/cdrom0 sh VBoxLinuxAdditions.run
Il se peut alors qu’une erreur apparaissent :
Verifying archive integrity...Error in MD5 checksums: 11f13a48bedc739d254d397cf3291974 is different from da0d4cda657dac6dba692dbc4da829b4
Ceci peut être résolu en créant un nouvel utilisateur dans la VM, en ejectant le CD puis en redémarrant.
adduser vboxusers umount /media/cdrom0 reboot
Après le redémarrage il vous faudra à nouveau monter l’image CD et relancer le processus d’installation.
Configuration du réseau de la machine hôte
Eteignez la machine et configurer le réseau en bridge (configuration>réseau>bridged network) à partir de l’interface la plus rapide de votre machine hôte : surement l’ethernet en0 dans mon cas. Ceci permettra à votre VM d’adhérer à votre réseau courant comme une machine physique.
Il suffit alors de configurer votre réseau VM avec une ip static
Copier et adaptez les lignes suivantes dans le fichier de configuration réseau de la VM
nano /etc/networks/interfaces
# Loopback interface auto lo iface lo inet loopback # Network bridged Vboxhttps://www.biper-studio.com/configurer-une-machine-virtuelle-pour-le-developpement-sur-debian/ allow-hotplug eth0 auto eth0 iface eth0 inet static address 192.168.0.xxx # ip static de la machine netmask 255.255.255.0 # masque de réseau gateway 192.168.0.254 # routeur, adresse de la box
Configuration d’un dossier partagé
Vous pouvez maintenant éteindre la machine pour configurer les dossiers partagés
shutdown -h now
Rendez-vous dans la configuration des dossiers partagés de la machine virtuelle.
Configurer un nouveau partage en cliquant sur l’icone dossier +.
Chemin du dossier : correspond à votre dossier de travail sur la machine hôte,
Nom du dossier : correspond au nom du partage, comme il sera accéder via la ligne de commande et pour nous éviter les guillemets, choisissez un nom sans espace ni caractères spéciaux.
Cocher la case configuration permanente pour avoir accès aux dossier même après redemarrage de la machine.
Vous pouvez démarrer la machine virtuelle et accéder au partage.
A cette étape, le partage devrait être visible et monté dans /media/ . Tous les dossiers de partage sont préfixé par sf_ automatiquement.
Vérifier que le dossier est bien monté en tapant
ls -la /media/
Gestion des droits pour l’utilisateur accédant au partage (sfvbox)
Afin de lisser l’utlisation du dossier partagé avec la machine hôte il faudra configurer l’utilisateur vboxsf (vbox shared files ), utilisateur qui gère le partage via Virtual Box.
Il faudra notamment permettre au groupe d’Apache d’accéder à ce dossier :
Dans /etc/group remplacer l’utilisateur vboxsf par la ligne suivante
vboxsf:x:1001:www-data
Montage du dossier partagés avec les bons droits
Le montage des dossiers partagés se fait via le programme mount.vboxsf celui-ci n’est pas disponible par défaut en ligne de commande, on peut palier à ce problème en faisant un lien symbolique vers l’executable.
sudo ln -sf /usr/lib/x86_64-linux-gnu/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf
N’oubliez pas de vérifier que les user id et group id sont corrects et correspondent à votre utilisateur www-data:
# user Id id -u www-data # group Id getent group www-data
Vous pouvez monter le dossier partagé directement dans votre dossier web de la VM avec les bons droits en écriture via la ligne suivante.
Si c’est la première fois que vous montez votre partage, créez votre point de montage manuellement : mkdir /var/www/serverNameApachePourCePartage
sudo mount.vboxsf -o rw,uid=33,gid=33 nomDuPartageDansLaConfigurationVirtualBox /var/www/serverNameApachePourCePartage
Démontage des dossiers partagés
Si vous constatez une erreur vous pouvez démonter tous les partages et ensuite les recréer
umount /media/*
Configuration d’un vHost Apache sur la machine hôte
Félicitation votre dossier de partage et bien monté et fonctionnel !
Maintenant il ne nous reste plus qu’à configurer un vHost pour accéder à notre site.
cd /etc/apache2/sites-available/ cp default serverNameApachePourCePartage.labas nano serverNameApachePourCePartage.labas
Remplacer et adapté le contenu de ce fichier par le vHost suivant
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName serverNameApachePourCePartage.labas DocumentRoot /var/www/serverNameApachePourCePartage.labas <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/serverNameApachePourCePartage.labas> Options -Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/serverNameApachePourCePartage.labas.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn </VirtualHost>
# Activer le site a2ensite serverNameApachePourCePartage.labas # Redémmarer Apache service apache2 reload
Il ne nous reste plus qu’à configurer le DNS de votre machine Hôte en éditant le fichier hosts, sur un mac on fera :
sudo nano /etc/hosts
On pourra ainsi ajouter la ligne suivante
192.168.0.xxx serverNameApachePourCePartage.labas
A lire aussi
Prestashop – Module colissimo – Comment résoudre l’erreur : La propriété ColissimoLabelProduct ->id_colissimo_label est vide. ? - 14/10/2024
La version 2 du module colissimo sur prestashop 1.8 introduit une nouvelle colonne cn23_format dans la table ps_colissimo_label, hors celui ci n’est pas présente dans le hook hookActionAdminOrdersTrackingNumberUpdate, ce qui declenche une erreur: La propriété ColissimoLabelProduct->id_colissimo_label est vide. Il suffit
Pourquoi choisir une agence web plutôt qu’un outil gratuit en ligne ? - 07/10/2024
Avec la prolifération d'outils gratuits et de l'IA pour créer des sites internet, il peut être tentant d’opter pour une solution DIY (Do It Yourself). Pourtant, passer par une agence web professionnelle comme la nôtre présente de nombreux avantages.
Combien coûte un site internet en 2024 ? Estimez le prix de votre projet ! - 07/05/2024
La création d’un site internet varie selon vos besoins. Que vous envisagiez un site vitrine ou un site e-commerce, les coûts peuvent aller de quelques centaines à plusieurs milliers d’euros. Découvrons les facteurs qui influencent ces tarifs et comment estimer votre projet.