Hosts Virtuales con apache2 en Ubuntu 13.10
Hace poco he tenido que instalar un servidor LAMP en un Ubuntu 13.10. Todo correctamente. La misma forma que os mostramos en su momento con Ubuntu 13.04 también sirve para instalar un LAMP en Ubuntu 13.10.
La sorpresa ha sido cuando al montar la aplicación PHP, no funcionaba como debía. Tenía claro de donde venía el problema, no funcionaban los hosts virtuales ni el mod_rewrite correctamente. Había algo raro, pero todo estaba parecía estar correctamente. Después de varias pruebas e investigar un rato conseguí dar con la solución.
El problema era que la versión de Apache en Ubuntu 13.10 pasa de ser la 2.2 a la 2.4, con unos cuantos cambios al respecto en el manejo de los virtual hosts, que os comento a continuación:
Cambios en el archivo apache2.conf
En el archivo de configuración de Apache 2.4 la ruta de acceso a los virtual hosts ha cambiado, ahora en vez de ser sites-enabled/
es sites-enabled/*.conf
, por lo tanto no me estaba cogiendo los hosts virtuales que tenía porque les faltaba el .conf. esto tiene sencilla solución, podemos renombrar los archivos de los hosts virtuales y ponerles el .conf o cambiar la ruta del archivo configuración de Apache (que está en: /etc/apache2/apache2.conf
) cambiando esta parte:
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
Y dejandola del siguiente modo:
# Include the virtual host configurations:
IncludeOptional sites-enabled/
Cambios en el archivo default de los virtual hosts
Por otra parte hay que cambiar el archivo 000-default.conf
que viene por defecto y está en /etc/apache2/sites-available/
cambiar el AllowOverride
de None
a All
y meter Require all granted
, del siguiente modo:
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Cambios en los nuevos virtual hosts
Ahora no podemos poner <VirtualHost *:80>
en la definición de los virtual hosts, ahora les tenemos que dar un nombre, que puede ser un dominio interno, que tengamos redirigido, o como queramos apañarnos. Por lo tanto con este cambio el que os comentábamos anteriormente pasaríamos a definir un virtual host de la siguiente manera:
<VirtualHost ejemplo.localhost>
ServerAdmin webmaster@ejemplo.com
ServerName ejemplo.localhost
ServerAlias ejemplo.localhost
DocumentRoot /var/www/ejemplo
<Directory /var/www/ejemplo/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
(Esto es un ejemplo básico de un virtual host, a partir de aquí ya cada uno cambiaría o añadiría lo que le hiciese falta o fuese necesario)
Ya sólo tendríamos que reiniciar el servicio de apache2 y con estos cambios ya deberíamos tener el tema de los hosts virtuales funcionando correctamente.
Por lo menos esto es lo que yo he hecho y me ha funcionado, la verdad es que no he tenido demasiado tiempo para trastear y hacer más pruebas, a lo mejor alguno de los pasos es innecesario o se puede hacer de otro modo. De todos modos espero que os sea de utilidad y si tenéis algún comentario sobre el tema o algo que aportar estaremos muy agradecidos de que nos lo hagáis llegar, como siempre.
Creo que es un tema a tener en cuenta por parte de los desarrolladores sobre entornos LAMP en Ubuntu, por lo menos para el futuro, con la próxima Ubuntu 14.04 que seguramente lleve en sus repositorios Apache 2.4 al igual que Ubuntu 13.10 y tendremos que tener en cuenta todos estos cambios si queremos que nuestras webs, aplicaciones o servicios en entornos LAMP, funcionen correctamente en Ubuntu a partir de ahora.
Gran trabajo!
Hola he seguido tu tutorial, y bien pero cuando entro al navegador y pongo la web de mi sitio virtual me sale solo el contenido del sito por default.
Aunque puedo hacer ping a mis sitios virtuales:
#ping http://www.misitio.local
Que estoy omitiendo?
ServerAdmin webmaster@localhost
ServerName http://www.erstedomain.local
ServerAlias erstedomain.local
DocumentRoot /var/www/web1
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Tabien teno este mensaje cuando reinicio Apache: como puedo solucionarlo?
name erstedomain.local — ignoring!
AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message
Gracias de antemano.
No lo entendí..
En el punto “Cambios en el archivo default de los virtual hosts” dice:
Por otra parte hay que cambiar el archivo 000-default.conf que viene por defecto
dice que hay que cambiar el: AllowOverride de None a All y meter Require all granted
Pero eso no aparece en el archivo que abro en mi ubuntu 14.04
Lo mismo amigo… seguiré investigando..necesito ese apache…jeje
Que tal amigo, al final del archivo /etc/apache2/apache2.conf agrega la línea ServerName localhost y se soluciona el error.
Saludos
Esas líneas están dentro del mismo archivo apache2.conf en /etc/apache2/apache2.conf. Espero te sirva todavía la información
Hola lo mismo me sucede a mi, Estoy intentando acceder a schooltool (instalado en ubuntu14.04 server) desde otra maquina y no puedo ya cambie en la configuración 127.0.01 por 0.0.0.0 y tampoco, Después estuve configurando el servidor virtual de apache2 porque en ubuntu 14.04 hay unos cambios y nada. alguien saber que puedo hacer en mi servidor ubuntu 14.04 para poder acceder desde otro pc de la LAN
A pesar de que mi profesora decía que añadiéramos esa linea que tu comentas en el archivo httpd.conf, seguía teniendo el mismo problema. Gracias a tu solución me he ahorrado un buen rato de bagar por foros buscando algo que funcionase. Suerte que di con tu respuesta pronto.
Muchas gracias amigo.