it-swarm-es.tech

¿Es posible configurar múltiples dominios locales en localhost en Ubuntu 14.04?

Necesito dominios únicos y múltiples, todos vinculados a la dirección IP local de mi computadora. Esto es para fines de prueba. Quiero poder tener diferentes dominios locales vinculados a diferentes archivos html en mi computadora. Por ejemplo, xxx.local y yyy.local serán distintos pero solo accesibles desde mi computadora.

Lo que he intentado: configurar los sitios habilitados y apagados de Apache2 para que los archivos .conf de xxx.local e yyy.local estén vinculados a diferentes DocumentRoots. Sin embargo, no está resuelto, y cuando los vinculo a la dirección IP local de mi computadora, ambos simplemente se vinculan a archivos html ya vinculados al host local de mi computadora. No a los archivos html especificados por DocumentRoot en los archivos .conf.

3
Pearu

La mayor parte del trabajo se realiza en el archivo de configuración en el directorio /etc/Apache2/sites-enabled/, en un archivo llamado algo así como 000-default.conf. Estos archivos le permitirán tener múltiples dominios virtuales, como www.example.dev, o example.local, etc. Los configura junto con sus directorios en este archivo e ingresa múltiples sitios en /etc/hosts para que coincidan . Todos los sitios tienen la misma dirección IP localhost, pero el nombre lo dirige al host virtual correcto.

En este archivo, debe clonar la configuración predeterminada tantas veces como sea necesario, con algo como esto:

Contenido original

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

Entradas de host virtuales adicionales

<VirtualHost *:80>
    <Directory  /var/www/html/site1>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride All
       Order allow,deny
       allow from all
    </Directory>
    DocumentRoot  /var/www/html/site1/ 
    ServerName site1.local
    ServerAlias www.site1.local
</VirtualHost>

<VirtualHost *:80>
    <Directory  /var/www/html/site2>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride All
       Order allow,deny
       allow from all
    </Directory>
    DocumentRoot  /var/www/html/site2/ 
    ServerName site2.local
    ServerAlias www.site2.local
</VirtualHost>

. . .

Para que la magia de reescritura funcione, también debes asegurarte de que el motor de reescritura esté habilitado. Esto se hace creando un enlace simbólico en mods-enabled para un módulo en mods-available. Si ha cd a /etc/Apache2/mods-enabled, luego ingrese ln -s ../mods-available/rewrite.load, habilitará el motor de reescritura.

Luego, en /etc/hosts/, tiene entradas coincidentes como esta:

127.0.0.1  site1.local
127.0.0.1  site2.local

Esto debería ayudarlo hasta que yo complete esto o tenga preguntas para que yo responda.

Respuestas a preguntas en los comentarios 1

Un problema es la directiva "DocumentRoot": se supone que el directorio especificado es simplemente la raíz del documento del sitio virtual, que probablemente no sea "/var/www/arcadr.local/html" como se especifica. Normalmente el directorio del sitio estaría al final. "arcadr.local" es un nombre arbitrario, pero probablemente lo mejor sea hacer coincidir el sitio. Por lo tanto, probablemente debería ser "'/var/www/html/arcadr.local/'".

En cuanto al error de ln, si hubiera tenido más tiempo, le habría explicado que la conclusión es que necesita un enlace simbólico llamado "rewrite.load" en el directorio mods-enabled que se vincula al archivo real en el mods-available directorio. Evidentemente, ya lo tenía, y realmente no necesitaba volver a hacerlo, pero mientras esté allí, debería funcionar.

Pruebe el cambio único y también trate de comprender lo que está haciendo. En realidad, es bastante comprensible, y una vez que comience a comprender, aprenderá más.

Por cierto, la directiva "alias" no es necesaria, solo agregué eso para ilustrar cómo podría hacerlo si lo desea.

Respuestas a preguntas en los comentarios 2

El archivo html predeterminado es simplemente uno de los varios hosts virtuales especificados en el archivo 000-default.conf. Tenga en cuenta que originalmente dejé la extensión ".conf" del archivo. ¿Encontraste el archivo correcto? Debe estar en "sites-enabled", no en "sites-available". Igual que para las modificaciones, puede tener múltiples sitios disponibles , pero necesita tener uno habilitado , y el valor predeterminado es " 000-default.conf "(a menos que haya cambiado desde que lo configuré).

Dices "arcadr.local simplemente me redirige a otro sitio web .local conectado a mi localhost". Asegúrese de tener este archivo de configuración configurado correctamente. Debería tener una serie de bloques, como html:

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

Cada host virtual debe comenzar y finalizar con estas directivas, y no puede tener una incrustada en otra.

Puede encontrar buena documentación y ejemplos en el sitio web de Apache.org. Aquí es donde aprendí a configurar los archivos. Mi consejo es que sea simple, y si agrega algo que no comprende, hágalo paso a paso y elimine todo lo que no funciona. Aquí hay algunos ejemplos: Ejemplos de VirtualHost

Algunos punteros adicionales

Cada vez que realice cambios en el archivo de configuración en /etc/Apache2/sites-enabled/000-default.conf, debe reiniciar el servidor Apache. Yo uso el comando Sudo /etc/init.d/Apache2 restart para hacer esto. Editar : Gabriel publicó un comando mejor para esto:

Sudo service Apache2 restart

Pero ambos comandos funcionarán, al menos por ahora.

Esta misma técnica funciona para servidores DNS dinámicos como noip.com, dyndns, etc. Por ejemplo, acabo de crear 3 sitios de muestra en mi sistema doméstico. Si mi computadora está encendida, puedes intentar verla. Si marca, verá que los 3 sitios tienen exactamente la misma dirección IP, pero vaya a diferentes sitios virtuales (variaciones en el valor predeterminado, que puede ver en leftcoast.noip.us

http://site1.leftcoast.noip.us/
http://site2.leftcoast.noip.us/
http://site3.leftcoast.noip.us/
4
Marty Fried

Hay dos pasos que debes seguir para hacer eso.

Primero, señale a su computadora que desea que busque xxx.local e yyy.local en 127.0.0.1, que generalmente significa localhost o su computadora.

Esto se realiza editando su archivo /etc/hosts.

Luego, debe configurar su servidor web para que responda de manera diferente de acuerdo con el nombre del servidor que se solicita, lo que se hace jugando con los hosts virtuales de Apache.

La respuesta de Marty es bastante completa con respecto a ese tema. Y no olvides Sudo service Apache2 restart para que recargue sus configuraciones.

Además, ¿puede pegar sus configuraciones de hosts virtuales?

1