web-dev-qa-db-fra.com

Hôte virtuel sur Ubuntu 13.10 et Apache 2.4.6

J'ai le problème suivant
Mon fichier hosts se présente comme suit:

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 comme suit :

<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 faire Sudo a2ensite mysite.localhost.conf et redémarrez Apache sur mysite.localhost/et uniquement sur localhost, je reçois les informations suivantes (comme la création d’un répertoire sans fichier d’index):

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 du /var/www/ répertoire comme test quand j'entre localhost/test au lieu de charger le index.php fichier qu'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 fais Sudo a2dissite mysite.conf et redémarrez Apache, tout se charge correctement. Je suppose que le problème se situe quelque part dans le mysite.localhost.conf mais je ne trouve pas où. Des idées? 10x

39
Lachezar Raychev

Ubuntu 13.10 et ses variantes sont passés à Apache 2.4. Apache 2.4 veut que les fichiers de configuration d'hôte virtuel activés se terminent par .conf par défaut.

Solution

Maintenant, pour corriger ce problème, vous pouvez utiliser deux méthodes pour obtenir le même résultat.

  1. La première solution, simple, consiste à ajouter une extension .conf à tous vos hôtes virtuels. La nouvelle 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 du fichier de configuration d'Apache 2.4 situé dans /etc/Apache2/Apache2.conf.

Dans l’ancien fichier Apache 2.2, le fichier .conf contenait une option Inclure sites activés/alors que le nouveau fichier .conf

# 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 2ème méthode; vos fichiers d'hôte virtuel n'ont pas besoin de porter 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"
56
Anjith K P

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

<VirtualHost mysite.localhost>
        ServerAdmin [email protected]
        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’était plus utile 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 spécifiant spécifiquement DirectoryIndex. Cela corrigeait le problème que je rencontrais et que tout fonctionne maintenant (si tout va bien, quelque chose peut éventuellement arriver). Le fichier de configuration d'Apache est apparemment différent.

13
Lachezar Raychev

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

Je pourrais comprendre que dans Apache2.conf (dans Ubuntu 13.10) il y a un drapeau appelé

HostnameLookups off

Par défaut, cette option est désactivée, j'ai changé cela pour

HostnameLookups on

Ce faisant, Apache a bien commencé à récupérer les entrées de mon hôte et de vhost config.

Vous trouverez également ci-dessous mon fichier Vhost actuel. que j'avais l'habitude de faire fonctionner

Bien sûr, je recommande aussi d'ajouter Require all granted avec 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 les autres qui ne veulent pas perdre leur temps à déclasser Ubuntu à 13.04 au lieu de 13.10.

Je ne vois pas cela dans les blogs, je ne pouvais pas non plus comprendre ce que signifie réellement hostnameLookups.

J'espère que cela t'aides .

5
aravind.udayashankara

Pour Apache 2.4.6 dans Ubuntu 13.10,

Tu vas avoir

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

Et

/etc/Apache2/sites-enabled/000-default.confpointe vers/etc/Apache2/sites-available/000-default.conf

Maintenant, éditez Apache2.conf et ajouter

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

et éditez sites-available/000-default.conf et changer <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 [email protected]

    DocumentRoot /home/my_new_site_public_html

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

Maintenant, éditez votre /etc/hosts/ fichier et changer le IP de mysite.localhost de 127.0.1.1 à 127.0.0.1

Maintenant, visitez http://mysite.localhost & http://localhost

:)

2
Harsh Vakharia
<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, je viens de remplacer <VirtualHost *:80> à <VirtualHost mysite.localhost:80> après de nombreux essais et erreurs

J'espère que ça aide.

Cordialement,

1
Junaid Qadir

Juste une note à l'attention des personnes qui discutent de ce sujet, vous devrez utiliser Sudo pour que tous ces paramètres soient définis si vous utilisez une instance AWS.

Sudo a2ensite example.com

N'oubliez pas que vous devez le faire même pour redémarrer Apache. Si vous ne voyez pas vos changements s'opérer, c'est probablement le coupable.

Sudo service Apache2 restart
0
steve

Exécuter:
vim peut être changé avec votre éditeur de texte préféré comme nano, pico, etc.

vim /etc/Apache2/Apache2.conf

Fichier original:

# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual Host.
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share/>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Changer Aucun en Tous

Editer le fichier:

# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual Host.
<Directory />
        Options FollowSymLinks
        AllowOverride All
        Require all denied
</Directory>

<Directory /usr/share/>
        AllowOverride All
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>
0
user3419164

Pour Kubuntu 14.04 & Apache 2.4.7

Après avoir essayé les suggestions ci-dessus et malgré les problèmes d'autorisations, un "chmod 755 $ HOME" a fonctionné pour moi. Ne pas utiliser sur un système multi-utilisateur.

0
Mak