Los hosts virtuales no funcionan en los Mavericks de OSX

4

En Mac OS X 10.9.3, he incluido http-vhosts en httpd.conf

# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf

He comentado el DocumentRoot y el Directorio en httpd.conf

# DocumentRoot "/Library/WebServer/Documents"
# <Directory "/Library/WebServer/Documents">...</Directory>

He agregado lo siguiente a mi archivo httpd-vhosts.conf

<VirtualHost *.80>
    DocumentRoot /Users/gdboling/Sites/rocket-gen
    ServerName local.rocket-gen.com
    <Directory "/Users/gdboling/Sites/rocket-gen">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Y he agregado lo siguiente a mi archivo / etc / hosts

127.0.0.1    local.rocket-gen.com

He reiniciado Apache

sudo apachectl restart

Hay un index.html en ese directorio, pero cuando accedo a enlace desde el navegador, obtengo un 404. Estoy recibiendo esto en los registros de errores

[Tue Jun 17 19:09:10 2014] [error] [client 127.0.0.1] File does not exist: /usr/htdocs

No puedo entender por qué no funciona. Si creo ese directorio como DocumentRoot en httpd.conf, funciona. Pero necesito tener varios hosts virtuales, por lo que me gustaría que el archivo vhosts funcione.

    
pregunta Gregg 18.06.2014 - 02:01

3 respuestas

7

Parece que tienes casi todo correcto. Estoy ejecutando Mavericks con un par de docenas de hosts virtuales, así que esto debería funcionar para usted.

Primero, y esto podría ser todo lo que necesita hacer para arreglar las cosas, debe incluir su DocumentRoot entre comillas. Entonces,

DocumentRoot /Users/gdboling/Sites/rocket-gen

se convierte en

DocumentRoot "/Users/gdboling/Sites/rocket-gen"

A continuación, agregue lo siguiente a su archivo /etc/hosts , en la línea que sigue inmediatamente a lo que ya tiene. Su archivo hosts debería ser:

Tienes esta parte:

127.0.0.1    local.rocket-gen.com

Ahora agregue esto a la derecha abajo:

::1     local.rocket-gen.com

Tengo cada uno de mis vhosts configurados en hosts de esta manera.

    
respondido por el soxman 17.07.2014 - 07:12
0

Obviamente, su apache no puede encontrar su raíz de documento definida. En mi opinión, usted mezcla algunas cosas.

Primero, corrija el error tipográfico dentro del contenedor de VirtualHost. Usted define el direccionamiento de un puerto con dos puntos, no un "."

<VirtualHost *:80>...</VirtualHost>

En segundo lugar, si desea alojar varios servidores por nombre y no por dirección IP, necesita usar hosts virtuales basados en nombre. Luego, por supuesto, en la configuración de Apache, se perdió la directiva NameVirtualHost, si desea configurarlo de esta manera.

NameVirtualHost server1.example.org:80

( enlace )

SIEMPRE establezca el Nombre del servidor, de lo contrario, apache no podrá dirigirse a su nuevo registro de documentos.

Tercero, en la parte de configuración principal de httpd.conf comentó el DocumentRoot. ¿También hizo esto con las reglas de acceso en la sección "Directorio /" de su anterior DocumentRoot?

Cuarto, si desea configurar VirtualHost en lugar de NameVirtualHost, no olvide la directiva de escucha. Así que para eso necesitas un

Listen *:80

en su httpd.conf principal. Si desea configurar diferentes servidores en diferentes direcciones IP, necesita configurarlos de esta manera:

  • agregue la dirección IP y el nombre resoluble en / etc / hosts
  • agregue "Listen server1.example.com:80" en httpd.conf principal
  • refiérase a su instancia de servidor como <VirtualHost server1.example.com:80>...
  • SIEMPRE establezca el ServerName
respondido por el Garex 29.01.2015 - 15:57
-1

Esto me sucedió cuando actualicé Mavericks (10.9.5). Parece que Apple eliminó "Compartir en la Web" de la aplicación "Preferencias del Sistema", lo cual fue importante por la forma en que se escribió el archivo http.conf .

Dos formas de solucionarlo:

  1. Inicia apache con WEBSHARING_ON definido:
  

apachectl -k start -D WEBSHARING_ON

  1. Edite el archivo http.conf para eliminar <IfDefine WEBSHARING_ON> y el correspondiente </IfDefine> , PERO NO el contenido entre las etiquetas.
respondido por el user3159132 17.07.2014 - 02:23

Lea otras preguntas en las etiquetas