crear configurar apache ubuntu virtualhost

configurar - VirtualHost siempre devuelve el host predeterminado con Apache en Ubuntu 14.04



virtual host apache centos (11)

Intento configurar un host virtual además del localhost predeterminado. Cada vez que intento llamar a mi servidor virtual http://test , obtengo el archivo de índice Apache2 predeterminado que se encuentra en el directorio http://localhost . Además, apache devuelve esta página aún después de deshabilitar ( a2dissite ) ambos archivos VirtualHost y volver a cargar apache ( service apache2 reload ).

¿Qué podría salir mal si el host virtual no funciona?

Configuración:

Mi estructura de directorio es la siguiente:

/var/www/html # Default localhost dir /var/www/html7index.html # Apache2 default index /var/www/test # HTML dir for the virtual host /var/www/test/index.html # My "website"

Contenido de /etc/hosts :

127.0.0.1 localhost 127.0.1.1 Laptop 127.0.0.1 test

Contenido del directorio de /etc/apache2/sites-available :

000-default.conf default-ssl.conf test.conf

Archivo 000-default.conf :

<VirtualHost localhost:80> ServerName localhost ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>

File test.conf :

<VirtualHost test:80> ServerAdmin test@localhost ServerName test NameVirtualHost test ServerAlias test DocumentRoot /var/www/test ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>


Estaba enfrentando este problema, y ​​resultó que tuve que deshabilitar el host virtual predeterminado.

sudo a2dissite 000-default.conf


Esto me ha mordido más de una vez; a veces habilitaba con sudo , a veces no lo hacía.

Ubuntu 14.04 parece mostrar el mismo mensaje de cualquier manera. Cuando se mueve a 100 millas por hora, a veces se pierde un sudo o dos.

El síntoma de que el nuevo sitio web haya regresado por error al directorio incorrecto ha sido mi única pista de que la habilitación nunca ocurrió. Yo diría que es un error.

¡Al menos debería advertir cuando un comando no se ejecuta!


He visto esto suceder cuando uso un nombre de dominio completo (FQDN) en el archivo / etc / hosts que es el mismo que el de un sitio al que estaba tratando de conectarme. Para resolver este problema tuve que cambiar el nombre del FQDN a algo que no sea uno de mis valores de VirtualHost ServerName.

Entonces, en otras palabras, si mi / etc / hostname era:

apple

Y en mi / etc / hosts, tuve:

192.168.54.34 apple.example.com apple

Y en mi /etc/apache2/sites-enabled/apple.example.com.conf tuve:

<VirtualHost *:80> ServerAdmin [email protected] ServerName apple.example.com DocumentRoot /var/www/apple.example.com DirectoryIndex index.html index.php </VirtualHost>

apple.example.com sería aceptado por 000-default.conf porque también está listado en el archivo / etc / hosts. Para resolver esto, cambié el FQDN de mi servidor de la siguiente manera en el archivo / etc / hostname:

server1

y / etc / hosts file:

192.168.54.34 server1.example.com server1


Mi caso en Apache 2.4 el problema se resolvió agregando la configuración siguiente a la configuración del host virtual:

Listen 80

para que la configuración sea algo así como:

Listen 80 <VirtualHost *:80> ServerAdmin [email protected] ServerName testsite.com ServerAlias www.testsite.com DocumentRoot /var/www/testsite ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>


Para mí, comenzó a funcionar después de reiniciar apache con: sudo service apache2 reload. Y presionando ctrl + F5 en http: / test.


Revisé todas estas soluciones y ninguna de ellas funcionó. Luego, decidí regresar y consultar el archivo apache2.conf. Descubrí que la línea para incluir los archivos conf "habilitados para sitios" estaba comentada por defecto. Al descomentar la línea y reiniciar apache, solucionó mi problema (estaba cerca del final del archivo):

# Include the virtual host configurations: IncludeOptional sites-enabled/*.conf


Si ya ha intentado lo siguiente:
1. Permisos comprobados de la raíz del documento y la carpeta principal.
2. a2dissite 000-default etc.
3. Reiniciado apache con sudo service apache2 reload
Y todavía no funciona, haz lo siguiente:

1. Habilite el registro de depuración:
vi /etc/apache2/apache2.conf
LogLevel debug

2. Reinicia apache2 y supervisa los registros
sudo service apache2 restart
tail -f /var/log/apache2/*.log

3. Observe si la IP del servidor se muestra en los registros como se esperaba:

==> /var/log/apache2/other_vhosts_access.log <== ip-xxx-xx-xx-xx.eu-west-2.compute.internal: 80 xx.78.xx.2xx - - [13 / sep / 2017: 18: 40: 44 +0100] "GET / HTTP / 1.1" 200 3509 "-" "Mozilla / 5.0 (X11; Ubuntu; Linux x86_64; rv: 55.0) Gecko / 20100101 Firefox / 55.0"

Notarás que en lugar de xxx.xx.xx.xx: 80 como una dirección IP típica
Tengo un FQDN como "ip-xxx-xx-xx-west-west-2.compute.internal: 80"
Estoy usando AWS Elastic IP para hacer una IP fija para mi servidor web Amazon EC2.

4. Verifique el encabezado de su archivo .conf de hosts virtuales

<VirtualHost 127.0.0.1:80 11.22.33.44:80> # Added from nessus to make more secure RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] ServerName mydomain.com ...

OK, entonces, lo que vemos aquí es que le estamos diciendo a Apache que sirva a este vhost para las solicitudes de 127.0.0.1 u 11.22.33.44 en el puerto 80. Pero el servidor nunca ve estas IP ya que tiene ese FQDN extraño y por eso nunca coincide. Eureka!

SOLUCIÓN:
Agregue *: 80 a la etiqueta VirtualHost para que se vea así:

<VirtualHost 127.0.0.1:80 11.22.33.44:80 *:80>


Y reinicia Apache. Espero que esto ayude. Puede haber otras razones, pero si esta es la causa de su problema, entonces es hora de sentarse, tomar un té de cuppa y relajarse. Si no, espero que encuentres la solución.

PD. ¡Recuerde volver a colocar los registros para advertir en lugar de eliminar errores!


Solo señalar esto puede ser obvio para los usuarios experimentados, pero no tanto si se trata de un primer temporizador.

asegúrese de que la configuración que está usando en /sites-enabled termine con un .conf como se espera en su apache2.conf

Ese fue mi problema y lo solucionó.


si conserva el valor predeterminado con *: 80; * .443 asegúrese de que esté en la parte inferior, así que cambie el nombre 000-predeterminado a zzz-default


también me ha estado volviendo loco, he marcado mis archivos .conf una y otra vez, todo estaba absolutamente bien definido. Terminé en esta publicación probando los comandos a2ensite y a2dissite como un sudoer, reiniciando apache, aún aterrizando en la página de bienvenida de apache por defecto como si apache nunca hubiera desactivado el sitio predeterminado o tomado mi nuevo host virtual a bordo.

Resulta que estaba tratando de reiniciar apache sin usar sudo ...

service apache2 restart

utilizar

sudo service apache2 restart


tl; dr: Llámalo con sudo : sudo service apache2 reload

Parece que el comportamiento del service apache2 reload me engañó. Ver el siguiente registro:

user@Laptop:/etc/apache2/sites-available$ sudo a2ensite test.conf Enabling site test. To activate the new configuration, you need to run: service apache2 reload user@Laptop:/etc/apache2/sites-available$ service apache2 reload * Reloading web server apache2 * user@Laptop:/etc/apache2/sites-available$

Intenta llegar a http://test : NO funciona

user@Laptop:/etc/apache2/sites-available$ sudo service apache2 reload * Reloading web server apache2 * user@Laptop:/etc/apache2/sites-available$

Intenta llegar a http://test : WORKING

Entonces, encuentra la diferencia! El punto es que pensé que se habría recargado correctamente en primer lugar. No hay entradas en los archivos de registro tampoco. Llamarlo con sudo ayudó. ¿Es esto un error?