Comment créer un virtual host en localhost ?

Bonjour,

Pour le moment je développe et teste plusieurs sites PHP en localhost sur ma Debian7.
Les dossiers de chaque site sont sur /var/www. Ils sont la cible de liens placés dans mon /home.

Mais il paraît que ça serait mieux de faire l’inverse (cibles dans /home, liens dans /var/wwww). Mais dans ce cas localhost n’est plus accessible --> une solution est paraît-il de créer un virtual host.

Comment on fait pour créer un virtual host en localhost sur Debian7 ?

Merci

Salut,

J’utilise aussi php avec Debian 7.
les dossiers des sites sont dans une partition de sauvegarde.
(Dans le home, c’est pareil)

Mon fichier /etc/hosts (rainbow est le nom de ma machine) :

[code]127.0.0.1 localhost
127.0.1.1 rainbow

The following lines are desirable for IPv6 capable hosts

::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
[/code]

J’ai fait des liens symboliques dans /var/www et j’ai accès aux sites en localhost.

Pour le virtual host, désolé, je ne sais pas…

Cordialement

Es-tu bien sûr que c’est dans /var/www que tu as placé le lien, et non dans /home ?

Pour vérifier voir dans Nautilus : une petite flèche vers le bas est ajoutée sur l’icône du dossier qui pointe vers sa cible. Si la flèche n’est pas sur l’icône du dossier de /var mais sur celui de /home c’est que ta cible est dans /var et le lien dans /home.

PS : le présent sujet provient d’un autre :
http://www.debian-fr.org/developper-tester-sous-utilisateur-non-root-un-site-en-php-t49014.html

Avec Nautilus, dans /var/www j’ai les icônes de dossiers avec les petites flèches.

Dans /var/www j’avais fait (php_irp et php sont 2 dossiers de sites) :

#ln -s /keep/sources/php_irp #ln -s /keep/sources/php
et il y a :

lrwxrwxrwx 1 root root 21 août 11 19:55 php_irp -> /keep/sources/php_irp lrwxrwxrwx 1 root root 18 juil. 21 20:31 php -> /keep/sources/php/

Je fais comme toi :

/var/www# ls -l lrwxrwxrwx 1 root root 31 aoû 18 13:48 contsoc -> /home/francois/sites_ouaib/contsoc

Mais quand, dans mon navigateur, je me rends à l’adresse localhost/contsoc
je reçois le message d’erreur suivant :

Forbidden You don't have permission to access /contsoc on this server. Apache/2.2.22 (Debian) Server at localhost Port 80

Alors je me dis que, vu que j’utilise mon navigateur en tant que francois et non en tant que root, il faut changer le propriétaire de var/www/contsoc :

/var/www# ls -l
lrwxrwxrwx 1 francois francois    31 aoû 18 13:48 contsoc -> /home/francois/sites_ouaib/contsoc

Mais cela n’au aucun effet : je ne suis toujours pas autorisé à accéder à localhost/contsoc

J’aimerais comprendre pourquoi tu n’as pas ce problème alors que nous sommes tous deux sous Debian7. Est-ce du au fait que ta cible se trouve dans une partition de sauvegarde ? J’ai pas trop envie de repartitionner mon système juste pour voir si cela résout le problème. Pourrais-tu faire un test sur ta machine en plaçant la cible dans ton home pour voir si tu as alors le même problème que moi ?

Bonjour,

normalement, virtualhost n’est pas fait pour localhost car localhost est un host réel dont le documentRoot est /var/www/.

Pour héberger plusieurs sites sur ta machine et travailler en local, tu peux te contenter d’utiliser le mod userdir.
Et si tu veux “en plus” les mettre en ligne sur le web, il faut pointer les fichiers virtualhost vers les dossiers des sites web (ces dossiers deviennent donc des host virtuels) de tes utilisateurs système.

T’auras plus de précision ici :
wiki.debian.org/fr/Lamp

Double erreur.
Le serveur ne sait pas (et s’en fiche pas mal) sous quel utilisateur tourne le navigateur.
Les permissions sur un lien symbolique sont sans importance, tu vois bien que toutes les permissions sont activées. Ce qui compte, ce sont les permission de la cible et de son contenu.
C’est le processus serveur web qui accède aux fichiers, donc c’est l’utilisateur sous lequel il tourne (www-data ?) qui doit avoir les permissions.

Merci fluo. Ça marche. J’ai maintenant accès à localhost en y plaçant les liens plutôt que les cibles.

La solution
# a2enmod userdir
ne changeait d’abord rien à la situation, jusqu’à ce que je détruise le dossier public_html - que j’avais créé via nautilus - puis que je le recrée avec
$mkdir /home/$USER/public_html

Merci encore à tous : fluo, champagne et PascalHambourg !

Les postes du réseaux vont se renseigner sur des DNS précis.
Si tu veux faire mumuse avec des vhosts comme s’il s’agissait d’un serveur sur le web, te suffit de monter un mini serveur DNS et de le déclarer comme serveur primaire sur tes postes du réseau
Du reste, c’est un fonctionnement standard (c’est ce que je fais lorsque je veux faire du test avant la mise en prod)

Autrement, tu peux utiliser des alias plutôt que des vhost pour du local

ps: le documentroot d’un vhost n’est pas forcément var/www
il ne l’est que par simplicité de gestion et par bon vouloir de l’admin
le documentroot de mes vhost sur no serv pro n’est absolument pas var/www :wink:

Je viens d’ajouter un dossier dans /var/root, et en tentant d’accéder à localhost/dossier mon navigateur me disait à nouveau que je n’avais pas droit d’accès (et cela malgré que $ ls -l m’indique que j’ai les mêmes droits que pour les autres dossiers, avec lesquels je n’ai pas de problème d’accès).

En cliquant droit dans nautilus sur le nouveau dossier-lien --> Propriétés > Groupe, Autre > Permission, j’ai vu que “Accès au dossier” était sur “Aucun” --> je l’ai mis sur “Accès aux fichiers” et le problème était résolu.

Quelqu’un peut-il expliquer la différence entre les infos données par $ ls -l et celles données par les propriétés du dossier ?