39 votes

Hôte virtuel sur ubuntu 13.10 et apache 2.4.6

J'ai le problème suivant
Mon fichier hosts est le suivant :

127.0.0.1       localhost
127.0.1.1       barbala4o-HP-ProBook-4530s
127.0.1.1       mysite.localhost

Mon dossier dans le /etc/apache2/sites-available/mysite.localhost.conf est le suivant :

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName mysite.localhost

        DocumentRoot /var/www/mysite

        <Directory /var/www/mysite/>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>
        ErrorLog /var/log/apache2/mysite-error.log
        CustomLog /var/log/apache2/mysite-access.log common
</VirtualHost>

Après avoir fait sudo a2ensite mysite.localhost.conf et redémarrer apache sur mysite.localhost/ et seulement sur localhost j'obtiens ce qui suit (comme lister un répertoire sans fichier index dedans) :

Index of /

[ICO]   Name    Last modified   Size    Description
[DIR]   apache_logs/    2013-09-24 10:15     -   
[DIR]   mysql/  2013-10-22 10:05     -   
[DIR]   tools/  2013-10-22 10:05

Et sur tout autre dossier dans le /var/www/ répertoire comme le test quand j'entre localhost/test au lieu de charger le index.php il montre :

Not Found

The requested URL /adlantic was not found on this server.

Apache/2.4.6 (Ubuntu) Server at localhost Port 80   

Si je le fais sudo a2dissite mysite.conf et redémarrer apache tout est chargé ok. Je suppose que le problème se situe quelque part dans le mysite.localhost.conf mais je n'arrive pas à trouver où. Une idée ? 10x

56voto

Anjith K P Points 1461

Ubuntu 13.10 et ses variantes sont passées à Apache 2.4. Apache 2.4 souhaite que les fichiers de configuration des hôtes virtuels se terminent par .conf par défaut.

Solution

Pour corriger ce problème, il existe deux méthodes permettant d'obtenir le même résultat.

  1. La première solution, et la plus simple, est d'ajouter une extension .conf à tous vos hôtes virtuels. Le nouveau Apache 2.4 lit chaque hôte virtuel dans le répertoire sites-available avec l'extension .conf décrite dans le nouveau fichier de configuration d'Apache 2.4.

  2. La deuxième solution consiste à supprimer l'extension .conf dans le fichier de configuration d'Apache 2.4 situé dans /etc/apache2/apache2.conf

Dans l'ancien fichier Apache 2.2, le fichier .conf contenait un Include sites-enabled/ alors que le nouveau fichier .conf a

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

Changez cette ligne pour lire :

# Include the virtual host configurations:
IncludeOptional sites-enabled/

Les résultats : la commande a2ensite yourdomain s'exécute maintenant comme prévu. Si vous utilisez la deuxième méthode, vos fichiers d'hôte virtuel ne doivent pas avoir l'extension .conf.

Note: Configuration file is "/etc/apache2/apache2.conf" in new Apache, so please copy document root path and other configurations from "/etc/apache2/sites-available/000-default.conf" to  "/etc/apache2/apache2.conf"

13voto

Lachezar Raychev Points 417

J'ai trouvé le problème après 3h d'expérimentation. Apparemment, dans la nouvelle Ubuntu 13.10, pour une raison stupide, le fichier de configuration de l'hôte virtuel doit ressembler à ceci :

<VirtualHost mysite.localhost>
        ServerAdmin webmaster@example.com
        ServerName  mysite.localhost
        ServerAlias mysite.localhost

        # Indexes + Directory Root.
        DocumentRoot /var/www/mysite/public_html

         <Directory /var/www/mysite/public_html/>
                DirectoryIndex index.php
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>

        # Logfiles
        ErrorLog /var/log/apache2/mysite-error.log
        CustomLog /var/log/apache2/mysite-access.log common
</VirtualHost>

Apparemment, les gars qui ont développé Ubuntu 13.10 ont décidé qu'il n'est plus valable d'utiliser

<VirtualHost *:80> 

lors de la création d'un hôte virtuel et, à la place, il doit être

<VirtualHost mysite.localhost>

mélangé avec la spécification spécifique de DirectoryIndex. Cela a corrigé le problème que j'avais et maintenant les choses fonctionnent (en espérant qu'elles fonctionnent comme elles le devraient, quelque chose peut arriver éventuellement) Apparemment le fichier de configuration d'apache est différent.

5voto

J'ai eu le même problème, mais aucun des messages ci-dessus n'a fonctionné pour moi. Plus tard, j'ai lu et revu tous les fichiers de configuration d'Apache et de PHP.

J'ai pu constater que dans apache2.conf( sous ubuntu 13.10 ) il y a un drapeau appelé

HostnameLookups off

Par défaut, ce paramètre est désactivé, je l'ai changé en

HostnameLookups on

En faisant cela, Apache a commencé à piocher dans les entrées de mon hôte et dans la configuration de mon serveur virtuel.

Voici également le fichier Vhost que j'ai utilisé pour le faire fonctionner.

Bien sûr, je recommande aussi d'ajouter Require all granted dans la directive Vhost .

<VirtualHost *:80>
    ServerName test.yoursite.domain.in
    DocumentRoot path_to_code_base/public
    <Directory path_to_code_base/public>
        Options -Indexes
        Require all granted
        DirectoryIndex index.php
        AllowOverride All
    </Directory>
    ErrorLog  /path_to_code_base/logs/error.log
    LogLevel warn
    CustomLog /path_to_code_base/logs/access.log  combined
</VirtualHost> 

Je poste ceci pour aider d'autres personnes qui ne veulent pas perdre leur temps à rétrograder Ubuntu en 13.04 à partir de 13.10 .

Je ne vois pas ce blog, je ne comprends pas non plus la signification de hostnameLookups.

J'espère que cela vous aidera.

2voto

harshjv Points 121

Pour Apache 2.4.6 sur Ubuntu 13.10 ,

Vous aurez

/etc/apache2/apache2.conf
/etc/apache2/sites-available/000-default.conf

Et

/etc/apache2/sites-enabled/000-default.conf Les points suivants /etc/apache2/sites-available/000-default.conf

Maintenant, éditez apache2.conf et ajouter

<Directory /home/my_site/public_html/>
    #YOUR SETTINGS
</Directory>

et modifier sites-available/000-default.conf et le changement <VirtualHost *:80> à <VirtualHost localhost:80> pour que apache écoute localhost (sur le port 80) pour vos paramètres par défaut.

Maintenant, pour faire mysite.localhost travail, ajoutez ceci à sites-available/000-default.conf

<VirtualHost mysite.localhost:80>
    ServerName mysite.localhost

    ServerAdmin webmaster@mysite.localhost

    DocumentRoot /home/my_new_site_public_html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Modifiez maintenant votre /etc/hosts/ et modifiez le fichier IP de mysite.localhost de 127.0.1.1 à 127.0.0.1

Visitez maintenant http://mysite.localhost & http://localhost

)

1voto

JeyKeu Points 444
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName mysite.localhost

        DocumentRoot /var/www/mysite

        <Directory /var/www/mysite/>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>
        ErrorLog /var/log/apache2/mysite-error.log
        CustomLog /var/log/apache2/mysite-access.log common
</VirtualHost>

Dans mon cas, j'ai juste remplacé <VirtualHost *:80> à <VirtualHost mysite.localhost:80> après de nombreux essais et erreurs

J'espère que cela vous aidera.

Regards,

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X