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.

 

 

8 comentarios

  1. Os

    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.

    • Gustavo Simón

      Que tal amigo, al final del archivo /etc/apache2/apache2.conf agrega la línea ServerName localhost y se soluciona el error.

      Saludos

    • Davd

      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.

  2. arian

    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

    • David

      Lo mismo amigo… seguiré investigando..necesito ese apache…jeje

    • Gustavo Simón

      Esas líneas están dentro del mismo archivo apache2.conf en /etc/apache2/apache2.conf. Espero te sirva todavía la información

  3. freddy

    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

Responder a Samuel Cancelar respuesta

Puedes usar las siquientes etiquetas HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>