Cómo configurar un host virtual para el desarrollo local

10

Ubuntu 11.04 instalado con apache2 y todos los paquetes relevantes instalados. He probado la mayoría de los blogs e hice de google y otros foros mis mejores amigos, pero no puedo resolver este problema.

Necesito configurar un host virtual con nombre en mi sistema local para el desarrollo.

Creé el directorio "vivek" /var/wwwy copié el index.html predeterminado y edité algunos elementos.

Agregué el archivo vivek.comde la /etc/apache2/sites-availablesiguiente manera:

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

Es decir, he agregado estas líneas siguientes

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

Al archivo predeterminado que ya estaba presente en la carpeta "sitios disponibles" (tomó la copia de seguridad del archivo predeterminado antes de editarlo)

Se agregó esto en el archivo de hosts presente en / etc / hosts

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

Realicé las siguientes operaciones sin errores:

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

Cuando entré www.vivek.com, me dio el index.html predeterminado en /var/wwwpero no uno presente en la carpeta / var / www / vivek que está editado.

Más tarde, edité el index.html /var/wwwpero aún obtenía el mismo index.html (predeterminado antes de editar). Todos los index.htmls han sido editados, pero Apache parece tener uno oculto que sigue apareciendo cuando solicitowww.vivek.com

Y lo irónico es que después de reiniciar, Apache funcionó bien, pero mi sitio www.vivek.comno pudo aparecer (incluso con el index.html que está oculto, ¡Dios sabe dónde!). Ahora mi navegador muestra "No se puede conectar "

Por favor ayuda. He estado tratando de configurar esto desde una semana sin resultados exitosos.

mvivekc
fuente

Respuestas:

6

Más tarde, edité el index.html de / var / www pero seguía obteniendo el mismo index.html (predeterminado antes de editar). Todos los index.htmls han sido editados, pero Apache parece tener uno oculto que sigue apareciendo cuando solicito www.vivek.com

Al leer esto, supongo que estás viendo un archivo en caché. En lugar de presionar F5o presionar el botón Actualizar, omita la memoria caché al actualizar presionando Ctrl+ F5.

Alternativamente, use el programa de línea de comandos curl(que no está instalado por defecto). Ejemplo de uso:

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

Una nota: hice lo siguiente en una instalación limpia de apache:

  • Agregue su primer archivo de configuración a /etc/apache2/sites-available/vivek.com
  • (dejar /etc/apache2/sites-available/default sin tocar )
  • correr sudo a2ensite vivek.com
  • correr sudo /etc/init.d/apache reload

Recibo los mismos mensajes que tú. Sin embargo, el servidor no pudo iniciarse. Al detener el uso del servidor sudo /etc/init.d/apache2 stope iniciarlo nuevamente sudo /etc/init.d/apache2 start, se negó a iniciarse en absoluto. Mirar en el registro de errores /var/log/apache2/error.logreveló algunos errores:

[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

Entonces el puerto 80 parece estar en uso. Pero si Apache aún no se ha iniciado, puedo confirmar que nada escucha en el puerto 80 al ejecutar sudo netstat -tpln. Revisé la configuración y concluí que la línea Listen 80debería eliminarse de su archivo de configuración /etc/apache2/sites-available/vivek.com. Después de eso, podría volver a iniciar el servidor y curl, utilizando , confirme que el servidor responde correctamente a las solicitudes.

KISS , tu segundo bloque vhost es redundante ya que está cubierto por /etc/apache2/sites-available/default. El siguiente archivo de configuración es /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
fuente
1

Hay una secuencia de comandos que lo hace simple para usted: https://github.com/RoverWire/virtualhost

Esto finalmente hace lo mismo que se explica en las respuestas dadas, pero lo hace en un solo comando, por ejemplo. -

sudo virtualhost create mysite.local my_site

También te permite eliminar un host que creaste

sudo virtualhost delete mysite.local my_site

Solo tenga en cuenta que "my_dir" supone que comienza después de / var / www

Entonces, si la carpeta de su sitio está en / var / www / my_site

Debe ejecutar esto (pasar la ruta del directorio sin / var / www) -

sudo virtualhost create mysite.local my_site

También puede modificar el archivo de secuencia de comandos y eliminar la ruta predeterminada "/ var / www" para que pueda pasar una ruta absoluta al directorio del sitio

Nitish Dhar
fuente