web-dev-qa-db-fra.com

Comment configurer un hôte virtuel pour le développement local

Ubuntu 11.04 installé avec Apache2 et tous les packages pertinents installés. J'ai essayé la plupart des blogs et fait de Google et d'autres forums mes meilleurs amis, mais je ne parviens pas à résoudre ce problème.

J'ai besoin de configurer un hôte virtuel nommé sur mon système local pour le développement.

J'ai créé le répertoire "vivek" dans /var/www, copié le fichier index.html par défaut et modifié certains éléments.

J'ai ajouté le fichier vivek.com dans /etc/Apache2/sites-available comme suit:

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual Host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.vivek.com
DocumentRoot /var/www/vivek

# Other directives here
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/vivek/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

</VirtualHost>



<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</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

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

I.e j'ai ajouté ces lignes suivantes

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual Host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.vivek.com
DocumentRoot /var/www/vivek

# Other directives here
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/vivek/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

</VirtualHost>

Vers le fichier par défaut déjà présent dans le dossier "sites-available" (sauvegarde du fichier par défaut avant de le modifier)

Ajouté ceci dans le fichier hosts présent dans/etc/hosts

127.0.0.1 localhost
127.0.1.1 vivek-PC
127.0.0.1 www.vivek.com

Effectué les opérations suivantes sans erreurs:

root@vivek-PC:~# a2ensite vivek.com
Enabling site vivek.com.
Run '/etc/init.d/Apache2 reload' to activate new configuration!
root@vivek-PC:~# /etc/init.d/Apache2 reload
* Reloading web server config Apache2

Quand j’ai entré www.vivek.com, il m’a donné le fichier index.html par défaut dans /var/www, mais aucun dans le dossier/var/www/vivek qui est édité.

Plus tard, j’ai édité le fichier index.html de /var/www mais j’obtenais toujours le même index.html (par défaut, avant l’édition). Tous les index.html ont été édités, mais Apache semble en avoir un qui est caché et qui continue à apparaître lorsque je demande www.vivek.com

Et l’ironie de la chose, c’est après mon redémarrage - Apache a bien fonctionné, mais mon site - www.vivek.com n’a pas été visible (même avec le fichier index.html qui est caché, dieu sait où !!) .. Maintenant, mon navigateur est montrant "Impossible de se connecter"

S'il vous plaît, aidez. J'essaie de mettre cela en place depuis une semaine sans succès.

10
mvivekc

Plus tard, j'ai édité le fichier index.html à partir de/var/www mais je continuais à obtenir le même fichier index.html (par défaut, avant l'édition). Tous les index.html ont été modifiés, mais Apache semble en avoir un qui est caché et qui continue à apparaître lorsque je demande à www.vivek.com

En lisant ceci, je suppose que vous visualisez un fichier en cache. Au lieu d'appuyer F5 ou en appuyant sur le bouton Actualiser, ignorez le cache lors de l'actualisation en appuyant sur Ctrl + F5.

Vous pouvez également utiliser le programme en ligne de commande curl (qui n’est pas installé par défaut). Exemple d'utilisation:

$ curl -i http://localhost/
HTTP/1.1 200 OK
Date: Sat, 02 Jul 2011 00:42:01 GMT
Server: Apache/2.2.17 (Ubuntu)
Last-Modified: Fri, 01 Jul 2011 04:12:49 GMT
ETag: "4507-b1-4a6fa3b114149"
Accept-Ranges: bytes
Content-Length: 177
Vary: Accept-Encoding
Content-Type: text/html

<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>

Une note: j'ai fait ce qui suit sur une installation Apache propre:

  • Ajoutez votre premier fichier de configuration à /etc/Apache2/sites-available/vivek.com
  • (laissez /etc/Apache2/sites-available/default non touché )
  • Exécuter Sudo a2ensite vivek.com
  • Exécuter Sudo /etc/init.d/Apache reload

Je reçois les mêmes messages que vous. Cependant, le serveur n'a pas pu démarrer. Lors de l'arrêt du serveur à l'aide de Sudo /etc/init.d/Apache2 stop et de son redémarrage à l'aide de Sudo /etc/init.d/Apache2 start, le démarrage a été refusé. La recherche dans le journal des erreurs /var/log/Apache2/error.log a révélé des erreurs:

[Sat Jul 02 00:48:09 2011] [notice] Graceful restart requested, doing restart
Apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Sat Jul 02 00:48:09 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

Donc, le port 80 semble être utilisé. Mais si Apache n’est pas encore lancé, je peux confirmer que rien n’écoute sur le port 80 en exécutant Sudo netstat -tpln. J'ai examiné la configuration et conclu que la ligne Listen 80 devait être supprimée de votre fichier de configuration /etc/Apache2/sites-available/vivek.com. Après cela, je pouvais redémarrer le serveur et en utilisant curl, je confirmais que le serveur répondait correctement aux demandes.

KISS , votre deuxième bloc vhost est redondant car il est couvert par /etc/Apache2/sites-available/default. Le fichier de configuration suivant est /etc/Apache2/sites-available/vivek.com:

<VirtualHost *:80>
    ServerName www.vivek.com
    DocumentRoot /var/www/vivek

    # Other directives here
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/vivek/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>
6
Lekensteyn

Il existe un script qui rend cela simple pour vous - https://github.com/RoverWire/virtualhost

Ceci finit par faire la même chose que expliqué par les réponses données mais le fait en une seule commande, par exemple. -

Sudo virtualhost create mysite.local my_site

Il vous permet également de supprimer un hôte que vous avez créé.

Sudo virtualhost delete mysite.local my_site

Notez simplement que "mon_dir" suppose qu'il commence après/var/www

Donc, si votre dossier de site est dans/var/www/my_site

Vous devriez lancer ceci (chemin du répertoire de passe sans/var/www) -

Sudo virtualhost create mysite.local my_site

Vous pouvez également modifier le fichier de script et supprimer le chemin par défaut "/ var/www" afin de pouvoir passer un chemin absolu au répertoire du site.

1
Nitish Dhar