Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Cómo configurar VirtualHost en Linux con CentOS

14 de diciembre de 2015

Hola qué tal? Les hago una consulta, resulta tengo un sitio desarrollado en Symfony2 que se encuentra alojado en un micro servidor T2 de amazon. El mismo ya tiene un dominio vinculado y todo.

En el servidor hay dos sitios, uno hecho en Joomla y otro en Symfony. El dominio que apunta al servidor, inicia correctamente la web en Joomla, pero para acceder al proyecto en Symfony, no logro configurar correctamente un virtualhost para que se pueda ingresar al mismo.

Estructura de proyectos en el servidor:

/var/www/html/main/Joomla Files.
/var/www/html/administracion/ Symfony Files

Actualmente para poder ingresar al proyecto de Symfony desde un navegador hago:

www.MiDominio.com/administracion/web/app.php/sesion/login

Cuando lo que yo quisiera sería:

www.MiDominio.com/admin/sesion/login

Lo que dice: sesion/login es una ruta configurada en el routing.yml. Para configurar los VirtualHost, cree un archivo llamado /etc/httpd/conf.module.d/httpd-vhost.conf que contiene lo siguiente:

<VirtualHost *:80>
    # Nombre del dominio virtual
    ServerName admin
 
    # Correo electrónico de Administrador.
    ServerAdmin [email protected]
 
    # Directorio raíz del sitio.
    DocumentRoot "/var/www/html/administracion/web"
 
    <Directory "/var/www/html/administracion/web">
 
# éstas opciones no se si están bien para linux, las saque de una conf en windows.
# Pero interpreto que dicen algo como:
# Para todas las opciones, Permitir la sobre escritura para todos y Permiti el acceso a todos.
        Options All
        AllowOverride All             
        allow from all
    </Directory>
 
    # Archivo de log o registro de errores para éste sitio.
    ErrorLog "/var/log/admin_error_log"
 
    # Archivo de log o registro de acceso para éste sitio.
    CustomLog "/var/log/admin_access_log" common
</VirtualHost>

¡Hay algo mal con la configuración del archivo? Ya revisé y tengo los puertos abiertos y todo.

El error que obtengo cuando en mi navegador pongo:

www.MiDominio.com/administracion

es:

The requested URL /administracion was not found on this server.

¿Alguna idea? Desde ya gracias, por cualquier ayuda brindada! :)


Respuestas

#1

No me queda claro si son dos sitios y dominios diferentes o si los dos sitios (Joomla y Symfony) se sirven bajo el mismo dominio. En cualquier caso, lo primero que deberías hacer es configurar la directiva ServerName para que apunte al dominio en vez de a admin:

ServerName ejemplo.com

Lo segundo que tendrías que hacer es configurar la directiva DirectoryIndex que le dice a Apache cuál es el archivo que hay que ejecutar como entrada al sitio. En el caso de Symfony tienes que usar lo siguiente:

DirectoryIndex  app.php

Por último, tienes que configurar la redirección de URLs para que no tengas que escribir app.php en todas las URLs de tu aplicación Symfony. Si usas Apache 2.2, esta es la configuración:

<Directory "/var/www/html/administracion/web">
        AllowOverride None
        Allow from All
 
        <IfModule mod_rewrite.c>
            Options -MultiViews
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ app.php [QSA,L]
        </IfModule>
    </Directory>

Si usas Apache 2.4, cambia un poco la parte de Allow:

<Directory "/var/www/html/administracion/web">
        AllowOverride None
        Require all granted
 
        <IfModule mod_rewrite.c>
            Options -MultiViews
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ app.php [QSA,L]
        </IfModule>
    </Directory>

Si lo necesitas, puedes echar un vistazo también a este artículo: Cómo configurar bien Apache para las aplicaciones Symfony2.

@javiereguiluz

14 diciembre 2015, 20:21
#2

Muchas gracias por responder Javier, te comento he realizado la configuración que indicas, pero aún así no logro hacerlo andar, pero si el error cambió, ahora directamente cuando ingreso en

www.MiDominio.com.ar/administracion

El navegador me muestra:

Index of /administracion
 
    Name    Last modified   Size    Description
[PARENTDIR] Parent Directory        -

Donde dice: [PARENTDIR], hay una flecha para volver al directorio padre. el listado de archivos no muestra nada, y cuando clic en la flecha para volver al directorio padre, el navegador vuelve a mostrar la página en Joomla.

tengo instalado Apache 2.4.16

Ambos sitios el de Joomla y el de Symfony, se encuentran alojados en el mismo servidor y solo poseo un dominio que apunta a dicho servidor es decir:

www.MiDominio.com.ar
 
// Único Servidor linux en amazon:
/var/www/html/main/* (Joomla Files)
/var/www/html/administracion/app
/var/www/html/administracion/src
/var/www/html/administracion/web
...
/var/www/html/administracion/*

la configuración que estoy usando es:

# Con respecto a este virtual host, hay algo raro, el mismo lo cree para que se pueda acceder a la página hecha en Joomla, lo raro es que el ServerName es main, pero con que en el navegador ingrese: www.MiDominio.com.ar, automáticamente ingresa a la pág. hecha en Joomla.
<VirtualHost *:80>
    # Nombre del dominio virutal
    ServerName main
 
    # Correo electrónico de Administrador.
    ServerAdmin [email protected]
 
    # Directorio raiz del sitio.
    DocumentRoot "/var/www/html/main"
 
    # Permisos para el directorio raiz.
    <Directory "/var/www/html/main">
        Options All
        AllowOverride All
        allow from all
    </Directory>
 
    # Archivo de log o registro de errores para éste sitio.
    ErrorLog "/var/log/error_log"
 
    # Archivo de log o registro de acceso para éste sitio.
    CustomLog "/var/log/custom_log" common
</VirtualHost>
 
# Éste es el Virtual host que me da problemas, el mismo lo necesito para poder acceder al proyecto en symfony sin tener que usar: app.php en la url del dominio.
<VirtualHost *:80>
    # Nombre del dominio virutal
    ServerName dominio.com.ar/administracion
    ServerAlias  www.dominio.com.ar/administracion
 
    # Correo electrónico de Administrador.
    ServerAdmin [email protected]
 
    # Directorio raiz del sitio.
    DocumentRoot "/var/www/html/administracion/web"
 
    <Directory "/var/www/html/administracion/web">
        AllowOverride None
        Require all granted
 
        <IfModule mod_rewrite.c>
            Options -MultiViews
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ app.php [QSA,L]
        </IfModule>
    </Directory>
 
    # Archivo de log o registro de errores para éste sitio.
    ErrorLog "/var/log/admin_error_log"
 
    # Archivo de log o registro de acceso para éste sitio.
    CustomLog "/var/log/admin_custom_log" common
</VirtualHost>

La verdad no entiendo cual es el error! :S

Si ahora ingreso en el nevagador: www.MiDominio.com.ar/administracion/app.php o www.MiDominio.com.ar/administracion/web/app.php

El navegador muestra:

Not Found
 
The requested URL /administracion/app.php/ was not found on this server.

@MrXXX0323

14 diciembre 2015, 22:23
#3

El problema que veo en la configuración es que estás definiendo dos virtual host diferentes pero no tienes dos dominios (o subdominios) diferentes. En la segunda aplicación has puesto esto:

ServerName dominio.com.ar/administracion

Pero no te va a funcionar porque /administracion es un directorio. Te funcionaría si fuera algo así, ya que tendrías un dominion diferente (subdominio en este caso):

ServerName administracion.dominio.com.ar

Lo que te aconsejo es que fusiones las dos configuraciones en un único VirtualHost y uses la directiva <Directory> para distinguir las dos aplicaciones.

@javiereguiluz

15 diciembre 2015, 10:25
#4

Claro eso es lo que no entiendo. ¿un virtualHost es un subdomnio?

Yo interpreto lo siguiente:

cuando uno tiene un dominio como: example.com, y lo redirecciona a los DNS de un servidor, éste automáticamente lo linkea con el directorio configurado por defecto en el servidor, en mi caso instalé LAMP, y mi configuración de apache en el DocumentRoot dice: "/var/www/html"

Entonces cuando desde un navegador se ingrese a: example.com, el servidor lo redirecciona a la carpeta /var/www/html/,

Lo que no entiendo (que si funciona en Windows, pero que no logro hacer andar en Linux) es porque cuando yo configuro un virtual host como:

<Virtualhost *:80>
   ServerName main
   DocumentRoot "/var/www/html/main"
   <Directory "/var/www/html/main">
       Options All
       AllowOverride none
       allow from all
   </Directory>
</Virtualhost>
#####################################################
<Virtualhost *:80>
   ServerName administracion
   DocumentRoot "/var/www/html/administracion"
   <Directory "/var/www/html/administracion">
       Options All
       AllowOverride none
       allow from all
   </Directory>
</Virtualhost>

Éstas configuraciones deberían funcionar si ingreso: example.com/main o example.com/adminisrtacion ??? En este momento ninguno de los dos virtualhost está funcionando. Lo que sí la página si esta funcionando pero se que es porque como comentaste Javier el servidor automaticamente busca un archivo index.html o index.php para cargar

@MrXXX0323

16 diciembre 2015, 0:06