Configuración de Apache con varios proyectos en localhost
Hoy describiré el proceso de configuración necesario para poder trabajar en varios proyectos en localhost sin necesidad de usar directorios en las URLs (personalmente no me gusta trabajar con directorios) y sin necesidad de abrir varios puertos.
En resumen, lo que quiero evitar es tener direcciones como:
sino algo como:
Para esto asumiré que ya tienen instalado el servidor Apache, si aún no lo tienen, en el siguiente enlace pueden ver cómo configurar un servidor LAMP (Linux, Apache, MySQL y PHP)
Una vez hemos configurado el servidor tendremos que decirle al sistema operativo que queremos que las direcciones de internet localhost.sitio1 y localhost.sitio2 deben ser interpretadas por el servidor local (localhost). Esto se hace editando el archivo /etc/hosts
sudo nano /etc/hostsy agregando al final las líneas:
# Papaya Media
127.0.0.1 localhost.sitio1
127.0.0.1 localhost.sitio2La línea comentada (la que inicia con #) la uso para separar lo que ya tenía el archivo y saber qué es lo que yo he ido agregando.
Las otras líneas tienen el formato ip dominio y cada vez que algún programa intente conectarse a ese dominio será apuntado a esa ip. (Ese mismo truco lo pueden usar para bloquear el acceso a ciertas páginas o hacerle alguna broma a un amigo... pero bueno, no digan que lo leyeron por acá).
En nuestro caso, cuando en el navegador vayamos a localhost.sitio1 la ip que recibirá la solicitud será 127.0.0.1 (la dirección del servidor local).
Guardamos esos cambios y ahora vamos a nuestro segundo y último paso de la configuración... vamos a decirle al servidor Apache qué es lo que debe hacer cuando reciba un llamado a alguna de esas direcciones. Esto se hace creando un archivo en la carpeta /etc/apache2/conf.d. El archivo de configuración de Apache sugiere que los archivos creados de manera local sean llamados local-nombredelarchivo.conf o nombredelarchivo.local.conf para evitar conflictos con archivos que otros programas puedan agregar de manera automática a esa carpeta.
cd /etc/apache2/conf.d
sudo nano nombredelarchivo.local.confA este archivo le vamos a agregar las siguientes líneas para crear la configuración del servidor local:
<VirtualHost *:80>
ServerAdmin root@example.com
DocumentRoot "/var/www"
ServerName localhost
ErrorLog "${APACHE_LOG_DIR}/localhost-error_log"
CustomLog "${APACHE_LOG_DIR}/localhost-access_log" common
<Directory "/var/www">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>Después de esas líneas agregamos las siguientes para cada sitio que configuremos. Para el ejemplo sólo pondré la configuración de localhost.sitio1, pero ya podrán intuir qué es lo que debe cambiarse para agregar localhost.sitio2.
<VirtualHost *:80>
ServerAdmin root@example.com
DocumentRoot "/var/www/sitio1"
ServerName localhost.sitio1
ErrorLog "${APACHE_LOG_DIR}/localhost_sitio1-error_log"
CustomLog "${APACHE_LOG_DIR}/localhost_sitio1-access_log" common
<Directory "/var/www/sitio1">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>Y así sucesivamente... cada nuevo sitio tendrá un nuevo bloque de configuración dentro del archivo que acabamos de crear. Si prefieren, pueden crear un archivo por cada sitio, algo así como sitio1.local.conf y sitio2.local.conf.
Como pueden ver en la configuración, le dijimos al servidor Apache que debe buscar los archivos para localhost.sitio1 en la carpeta /var/www/sitio1, entonces es allá donde tendremos que poner los archivos de nuestra aplicación.
Una vez se han guardado esos cambios, y cada vez que hagamos cambios en el futuro, habrá que reiniciar el servidor Apache para que tome las nuevas configuraciones:
sudo /etc/init.d/apache2 restartY ya está, ahora tenemos una forma de agregar tantos sitios como queramos sin necesidad de usar directorios ni puertos en la URL.
Enviar un comentario nuevo