# [apache] Virtual Host

## Pixys

Bonsoir,

j'ai un problème de configuration d'Apache dont je n'arrive pas à me sortir:

je dois faire du développement web (au moins 2 sites distincts)

j'ai donc fait un 

```
emerge apache dv-db/mysql php  phpmyadmin
```

Par défaut la racine est situé sur /var/www mais ça me plait pas : j'ai créé une partiton séparée /devWeb contenant 2 dossiers /www (dans lequel je mets mes sites par exemple /siteX et /siteY) et /mysql qui contient les bdd.

Pour gérer tous ça au niveau d'Apache, il est configuré comme suit:

dans /etc/conf.d/apache2  :

```
APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D LANGUAGE -D SSL -D SSL_DEFAULT_VHOST"
```

dans /etc/apache2/httpd.conf : 

```
Include /etc/apache2/vhosts.d/00_default_vhost.conf
```

dans /etc/apache2/vhosts.d/00_default_vhost.conf :

```
Listen 80

NameVirtualHost *:80

<VirtualHost *:80>

        ServerName localhost

        DocumentRoot /devWeb/www/siteX

        Include /etc/apache2/vhosts.d/default_vhost.include

        <IfModule mpm_peruser_module>

                ServerEnvironment apache apache

        </IfModule>

</VirtualHost>

<VirtualHost *:80>

        ServerName localhost

        DocumentRoot /devWeb/www/siteY

</VirtualHost>
```

après avoir démarré Apache, si je me rends sur http://localhost/ j'ai juste la phrase "It works", alors je suis très content, mais j'aimerai bien voir mes dossiers /siteX et /siteY...

je me demande si c'est pas une histoire de droits : actuellement sur la partition /devWeb j'ai : 

```
pegase ~ # ls -l /devWeb/

total 1

drwxr-x--- 2 pixys mysql 2 janv. 18 18:50 mysql

drwxr-xr-x 4 pixys root  5 janv. 18 17:07 www
```

en fait je sais pas trop quoi mettre en puis j'y comprends rien entre le propriétaire et le groupe...

Si vous pouviez m'éclairer un peu ça serait sympa.

merci beaucoup.

----------

## Le Barde

 *Pixys wrote:*   

> 
> 
> ```
> 
> <VirtualHost *:80>
> ...

 

Je subodore qu'il y a un conflit entre les deux sites : avec la même adresse tu veux accéder à deux sites différents.

Je dirais qu'il faut soit une seule cible dans laquelle tu mets tes deux répertoires, soit deux cibles qui pointent sur deux ports différents... (je ne suis pas un pro cependant, donc je dis épithète une grosse bêtise).

Qu'en dis-tu ?

----------

## Pixys

 *Le Barde wrote:*   

> 
> 
> Je subodore qu'il y a un conflit entre les deux sites : avec la même adresse tu veux accéder à deux sites différents.
> 
> Je dirais qu'il faut soit une seule cible dans laquelle tu mets tes deux répertoires, soit deux cibles qui pointent sur deux ports différents... (je ne suis pas un pro cependant, donc je dis épithète une grosse bêtise).
> ...

 

j'y ai pensé mais en vérifiant dans la doc apache  on trouve ça :

 *Quote:*   

> Il est possible d'ajouter des entrées dans le fichier hosts pour tests locaux, mais qui ne fonctionneront que sur la machine possédant ces entrées.

  donc c'est possible.

De plus, le fichier de conf qu'ils proposent est identique au mien.

Je vais poster ce mon problème sur le forum de Apache France... même si il n'a pas l'air très actif, on ne sait jamais.

EDIT: typo

----------

## guilc

 *Pixys wrote:*   

>  *Le Barde wrote:*   
> 
> Je subodore qu'il y a un conflit entre les deux sites : avec la même adresse tu veux accéder à deux sites différents.
> 
> Je dirais qu'il faut soit une seule cible dans laquelle tu mets tes deux répertoires, soit deux cibles qui pointent sur deux ports différents... (je ne suis pas un pro cependant, donc je dis épithète une grosse bêtise).
> ...

 

Non ce n'est pas ça. Le barde à raison : tu ne peux pas définir 2 vhosts avec le même ServerName.

Le ServerName DOIT être unique par port (tu peux avoir le servername localhost sur le port 80 et distinctement localhost sur le port 443, mais pas 2 fois localhost sur le port 80).

Ce que dit la doc, c'est qu'il n'est pas nécessaire que le ServerName soit dans le DNS : il peut être définit dans le fichier /etc/hosts d'une machine de "test" qui pourra accéder à ce virtualhost. Seules les machines disposant de ce hosts pourront y accéder.

----------

## Pixys

j'ai enlevé un de mes 2 virtualHosts pour essayer mais ça ne change rien   :Crying or Very sad: 

----------

## Pongten

Tu dois faire comme expliqué par guilc

En fait, ton premier virtualHost doit être du genre 

```
<VirtualHost *:80>

        ServerName www.siteX.tld

        DocumentRoot /devWeb/www/siteX

        Include /etc/apache2/vhosts.d/default_vhost.include

        <IfModule mpm_peruser_module>

                ServerEnvironment apache apache

        </IfModule>

</VirtualHost> 
```

et le deuxième : 

```
<VirtualHost *:80>

        ServerName www.siteY.tld

        DocumentRoot /devWeb/www/siteY

</VirtualHost>
```

et pour pouvoir y accéder facilement de ta machine sans te préoccuper du dns, tu ajoutes les entrées dans ton fichier /etc/hosts,

du genre : 

www.siteX.tld 127.0.0.1

www.siteY.tld 127.0.0.1

et ça devrait fonctionner

----------

## Pixys

bon ça fonctionne pas mieux: si je me connecte à http://www.siteX.ltd par exemple, j'ai une erreur 404 pareil pour l'autre site.

Je regarde ça en rentrant ce soir.

merci, bonne journée.

----------

