Pourquoi les hôtes virtuels Apache sur Ubuntu 14.04 ne fonctionnent pas?

23

J'ai installé Apache 2.4 sur Ubuntu 14.04 et cela fonctionnait bien par http://localhost/adresse. Mais quand j'ai essayé d'ajouter un nouvel hôte virtuel, par exemple http://bow.locet de redémarrer apache, la nouvelle adresse n'était pas disponible sur http://bow.locet disponible sur http://localhost.

Ma configuration est:

<VirtualHost *:80>
    ServerName www.bow.loc
    ServerAlias bow.loc
    DocumentRoot /var/www/html/bow/web

    <Directory /var/www/html/bow>
        AllowOverride All
        Options FollowSymLinks MultiViews
        Order allow,deny
        Allow from all
        <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ /app.php [QSA,L]
        </IfModule>
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Comment puis-je obtenir mon site http://bow.loc?

Victor Bocharsky
la source
Découvrez ma réponse ici . Vous avez un problème similaire et cela s'avère être le problème avec la configuration DNS du système.
jmarceli

Réponses:

29

Depuis Apache 2.4, chaque fichier d'hôte virtuel doit avoir l'extension .conf.

Vous pouvez renommer chaque fichier d'hôte virtuel pour inclure l'extension .conf:

mv /etc/apache2/sites-available/example.com /etc/apache2/sites-available/example.com.conf

Utilisez la commande a2ensite pour ajouter l'hôte virtuel:

a2ensite example.com.conf

Et rechargez Apache:

service apache2 reload
Ari Pratomo
la source
Merci! Et après ces actions, je n'ai pas besoin de modifier manuellement le /etc/hostsfichier et d'y ajouter des hôtes? Apache écrit-il automatiquement de nouveaux hôtes?
Victor Bocharsky
Apache n'écrit pas automatiquement les nouveaux hôtes, vous devez l'écrire manuellement. CMIIW
Ari Pratomo
Donc, ma configuration est correcte, et problème afin que j'oublie d'ajouter l'hôte/etc/hosts
Victor Bocharsky
une autre manière consiste à modifier apache2.conf et à supprimer l'extension ".conf" de la directive "IncludeOptional sites-enabled / *". J'utilise des domaines de sites Web comme noms de fichiers, donc je n'aime pas l'exigence supplémentaire ".conf".
lepe
17

J'ai oublié d'ajouter l'hôte dans /etc/hosts:

127.0.0.1   localhost
127.0.0.1   bow.loc

Je pensais qu'apache le faisait automatiquement.

Victor Bocharsky
la source
Je n'ai jamais eu à le faire auparavant sur un serveur. Je le fais depuis le client à des fins de test tout le temps. Pouvez-vous clarifier ce que vous dites ici?
flickerfly
@flickerfly Que voulez-vous dire? J'ai fait mes points virtualhosts à ma machine locale pour les gérer avec le Apacheserveur installé
Victor Bocharsky
J'ai oublié d'ajouter ça aussi! : P
Rishi Kulshreshtha
Merde, j'en ai perdu un sur une machine virtuelle Debian 8! Merci!!!
lucaferrario
@lucaferrario haha, moi non plus. Bugs simples difficiles à révéler;) Vous êtes les bienvenus!
Victor Bocharsky
3

Eh bien, j'ai essayé toutes ces solutions proposées ... mais malheureusement, rien n'a fonctionné! Hélas j'ai édité

    /etc/hosts

faire l'entrée

    127.0.1.1 example.com test.com

et ça a fonctionné !!

(Désolé si je ne parle pas beaucoup techniquement!)

Vineeth Vijayan
la source
1

J'ai écrit un script python qui automatisera les étapes de création d'un hôte virtuel apache ... cette vidéo explique comment télécharger / coder sur GitHub

rakibtg
la source
-3
Options FollowSymLinks MultiViews

Besoin de caractère '+': + FollowSymLinks + Multiviews

Order allow,deny
Allow from all

Maintenant = Exige tout octroyé

Valentin
la source
Veuillez expliquer où mettre cela et ce qu'il fait. Ne vous contentez pas de publier des commandes ou des artefacts de configuration. Voir Comment écrire une bonne réponse?
David Foerster
1
Vous n'avez besoin de mettre un + ou - avant les différentes options que si vous utilisez un - pour en exclure une. Sinon, ils sont prêts à partir. Obligatoire tout octroyé est pour Apache 2.4. Les lignes Order, Allow sont une syntaxe 2.2.
flickerfly