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

10

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/wwwet copié le fichier index.html par défaut et édité certains éléments.

J'ai ajouté le fichier vivek.comdans la /etc/apache2/sites-availablemanière suivante:

# 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>

C'est-à-dire que 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>

Au fichier par défaut qui était déjà présent dans le dossier "sites-disponibles" (a pris la 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 erreur:

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 je suis entré www.vivek.com, il m'a donné le fichier index.html par défaut /var/wwwmais pas celui présent dans le dossier / var / www / vivek qui est édité.

Plus tard, j'ai édité le fichier index.html /var/wwwmais j'obtenais toujours le même index.html (par défaut avant la modification). Tous les index.html ont été modifiés, mais Apache semble en avoir un caché qui continue de s'afficher lorsque je demandewww.vivek.com

Et l'ironie, c'est qu'après le redémarrage - Apache s'est bien passé mais mon site - www.vivek.comn'a pas pu apparaître (même avec l'index.html qui est caché Dieu sait où !!) .. Maintenant, mon navigateur affiche "Impossible de se connecter "

S'il vous plaît, aidez.J'ai essayé de configurer cela depuis une semaine sans résultat.

mvivekc
la source

Réponses:

6

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

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

Alternativement, utilisez le programme de 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 remarque: j'ai fait ce qui suit sur une installation apache propre:

  • Ajoutez votre premier fichier de configuration à /etc/apache2/sites-available/vivek.com
  • (laisser /etc/apache2/sites-available/default intact )
  • Courir sudo a2ensite vivek.com
  • Courir sudo /etc/init.d/apache reload

Je reçois les mêmes messages que toi. Cependant, le serveur n'a pas pu démarrer. Lors de l'arrêt du serveur sudo /etc/init.d/apache2 stopet de son redémarrage à l'aide sudo /etc/init.d/apache2 start, il a refusé de démarrer. La recherche dans le journal /var/log/apache2/error.logdes erreurs a révélé quelques 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

Le port 80 semble donc être utilisé. Mais si Apache n'est pas encore démarré, je peux confirmer que rien n'écoute sur le port 80 en cours d'exécution sudo netstat -tpln. J'ai examiné la configuration et conclu que la ligne Listen 80devrait être supprimée de votre fichier de configuration /etc/apache2/sites-available/vivek.com. Après cela, j'ai pu redémarrer le serveur et en utilisant curl, j'ai confirmé que le serveur répond 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>
Lekensteyn
la source
1

Il existe un script qui vous simplifie la tâche - https://github.com/RoverWire/virtualhost

Cela finit par faire les mêmes améliorations que celles expliquées 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 "my_dir" suppose qu'il démarre après / var / www

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

Vous devez l'exécuter (passer le chemin du répertoire 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 vers le répertoire du site

Nitish Dhar
la source