Específicamente Apache server es un programa y como tal tiene un directorio principal o varios donde almacena sus librerías, archivos, configuración, etc…
Dependiendo de nuestro sistema operativo y método de instalación, podría estar todo dentro del mismo directorio, o tener directorios en distintas ubicaciones, pese a esto, sin importar donde estén los archivos de configuración, el funcionamiento sigue siendo el mismo.
Los directorios que más usaremos y por ende, los más importantes son:
- Windows (XAMPP – Server Root): C:\xampp\htdocs | Linux (Document Root): /var/www
- Directorio en donde colocaremos subdirectorios por cada sitio web
- Windows (XAMPP): C:\xampp\apache\modules | Linux: /etc/apache2/modules
- Directorio donde están los módulos que extienden la funcionalidad de Apache, como mod_rewrite, mod_jk, mod_php, entre otros.
- Windows (XAMPP): C:\xampp\apache\logs | Linux: /var/log/apache2/nombre-del-sitio (configuración específica para este curso, ver en la pestaña Práctica Linux)
- Aquí encontrarán los «logs» que son archivos donde se registran los eventos o errores de los sitios.
- Windows (XAMPP): C:\xampp\apache\conf\extra\httpd-vhosts | Linux: /etc/apache2/sites-available
- En este directorio configuraremos nuestros virtual host.
- Linux: /etc/apache2/sites-enabled
- Aqui veremos Links simbólicos de los Virtual Host habilitados. (no aplica para Windows).
Para Linux las ubicaciones son muy genéricas, es decir que casi siempre al instalar a través de repositorios las cosas estarán en el mismo lugar 🙂
Ahora que tenemos en mente donde están las cosas, comprendamos algunos de los conceptos en la siguiente pestaña (Apache – Config)
En este laboratorio vamos a configurar un dominio de forma local, para ello vamos a introducirnos en los conceptos básicos primero y posteriormente los vamos a aplicar.
VirtualHost
VirtualHost es el nombre que se le da a la práctica de tener más de un sitio web en un solo equipo, también es el parámetro que configuraremos en Apache. Veámos algunos ejemplos:
- www.midominiofalso.com
- www.midominioreal.com.ar
- www.undominioquesemecanta.tr
- dominiosinextension
- dominiosinwww.com
- subdominio.dominio.com
- https://dominio.com.ar
- http://dominio.com.ar
- dominio-con-guiones.com
- d0m1nio-con-num3r0s.com
- etc…
Es importante saber que, los sitios web pueden ser resueltos cada uno por su propia IP o por diversos nombres, entendiendo eso podríamos:
- Nombre: dominio.com.ar
- Alias: dominio
- Alias:dominio.com
- Alias: dominio.ar
Un ejemplo de esto:
Si visitan el sitio http://www.gooogle.com (con una «O» adicional) serán llevados a http://www.google.com, posiblemente http://www.gooogle.com es un Alias de google.com
(Teniendo un virtualhost para https://www.google.com)
Redirect permanent / https://www.google.com/
Si escribieramos en el navegador http://dominio, http://dominio.com, http://dominio.ar son todos nombres que pertenecen a dominio.com.ar, por lo tanto siempre iremos a dominio.com.ar.
Si fuese por IP, podríamos:
- 172.25.100.10 -> dominio.com.ar
- 192.168.0.1 -> dominio
- 10.20.65.30 -> elsitiodeflavio.com
- etc…
Una explicación resumida de esto y documentación adicional la encontramos en el sitio web del producto.
Rewrite Rules
Las «rewrite rules» o «reglas de reescritura» son lo que traducen «reglas que reescriben cosas». Se nos permite usar la reescritura de reglas en Apache gracias a uno de sus módulos llamado «mod_rewrite».
Un ejemplo para entender el concepto sería algo como esto:
Visitando http://www.google.com/Analytics/ serán llevados a http://www.google.com/analytics/ (con la A minúscula)
La regla sería algo como:
Todo lo que sea /Analytics —> Reescribelo a —> /analytics
RewriteRule ^/Analytics$ /analytics/ [R,NC,L]
Los símbolos de » ^ » y » $ » son metacaracteres bien conocidos en el mundo de Unix, el primero llamado «potencia o acento circunflejo» se usa para determinar el comienzo de algo, mientras que el símbolo pesos hace lo contrario, indicar el final de algo. Aprenderás mucho más sobre éste tipo de cosas trabajando con Linux, aún estás a tiempo de instalar tu máquina virtual con Linux y ¡aprender mucho más!
Ya entraremos en más detalles con las reglas de reescritura en la práctica. Pero si lo desean, pueden aprender directamente de la fuente.
Laboratorio 01
Linux | Virtual Host: dominio.com.ar
Primero vamos a configurar nuestra computadora para que resuelva el dominio que vamos a crear localmente y no a través del DNS nuestro proveedor. De ese modo visitaremos el sitio alojado en nuestro equipo y no algún otro que exista en Internet.
Modifica el archivo /etc/hosts con Vim de este modo con el usuario root:
# conviertete en root su - # modificar el archivo vim /etc/hosts # agregar esto: 127.0.0.1 dominio dominio.com.ar # verificar los cambios con cat: cat /etc/hosts
Ahora vamos a crear el directorio de nuestro sitio
#conviertete en root su - #crea el directorio mkdir /var/www/dominio.com.ar #crea un archivo HTML o copia alguno hecho (sin PHP por ahora) vim /var/www/dominio.com.ar/index.html #Agrega contenido al archivo, por ejemplo: <p> Hola Mundo </p> #verifica que el archivo existe con el contenido creado: cat /var/www/dominio.com.ar/index.html #otorga todos los permisos al usuario que ejecuta apache: chown -R www-data: /var/www/*
Crea el donde almacenarmos los logs:
#crea el directorio mkdir /var/log/apache2/dominio.com.ar/ #dale permisos al usuario que ejecuta apache para escribir y leer en ese directorio: chown -R www-data: /var/log/apache2/dominio.com.ar/
Ya está todo listo para crear nuestro primer VirtualHost, ve al directorio /etc/apache2/sites-enabled/ y crea el archivo 000-dominio.com.ar.conf, luego modifícalo con Vim y agrega este contenido:
<VirtualHost *:80> ServerName dominio.com.ar ServerAlias www.domminio.com.ar ServerAlias domminio ServerAdmin webmaster@localhost DocumentRoot /var/www/dominio.com.ar/ <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /var/www/dominio.com.ar/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/dominio.com.ar/error.log CustomLog /var/log/apache2/dominio.com.ar/custom.log combined </VirtualHost>
Ahora debemos habilitar el sitio para que esté disponible. Como verán, hemos creado un archivo en «sites-available» que traduciríamos «sitios-disponibles» pero no significa que esté activo. Para que esté activo debe existir un link simbólico (algo así como un acceso directo) en el directorio «sites-enabled» (sitios-habilitados) apuntando al archivo que creamos.
Hay dos formas de lograr esto, la más simple es usar el comando a2ensite, que te ofrecerá la lista de sitios disponibles para habilitar, la otra es crear un link simbólico a mano.
#cambiate al usuario root su - #ejecuta el comando "a2ensite" $> a2ensite 000-dominio.com.ar # O crea un link simbólico $> cd /etc/apache2/sites-enabled $> ln -s ../sites-available/000-dominio.com.ar 000-dominio.com.ar
Una vez esté listo tendremos que recargar la configuración de apache o reiniciarlo para que tome los cambios. Eso se logra con estos comandos que son bastante claros:
$> service apache2 reload $> service apache2 restart $> service apache2 start $> service apache2 stop
O a través del script de inicio de apache:
$> /etc/init.d/apache2 reload $> /etc/init.d/apache2 restart $> /etc/init.d/apache2 start $> /etc/init.d/apache2 stop
Ahora visita en tu navegador http://dominio.com.ar y deberías ver el archivo HTML que definiste en los pasos anteriores.
(En Linux he personalizado algunas cosas distinto a este tutorial, por ejemplo mi document root no es /var/www sino mi ‘home’ de proyectos.) pero si todo ha salido bien, el resultado final sería similar a este:
Laboratorio 01
Windows | Virtual Host: dominio.com.ar
Lo que primero debemos hacer, es crear el directorio donde colocaremos el sitio web, para ello vamos a:
«C:\xampp\htdocs\» y creamos el directorio «dominio.com.ar» quedando como resultado: «C:\xampp\htdocs\dominio.com.ar\»
En este directorio copiaremos un archivo HTML que tengamos hecho o tal vez solo con: <p>Hola Mundo</p> como contenido (trata de no usar archivos PHP aún, aunque el módulo en XAMPP ya está activo, lo veremos más adelante).
Ahora, para que el DNS de nuestro proveedor no resuelva primero, alteramos el orden de resolución de nombres de dominio, para ello modificamos el archivo «C:\Windows\System32\drivers\etc» y agregamos esta línea
127.0.0.1 dominio dominio.com.ar
Con Windows, como mencioné en capítulos anteriores, iremos a: «C:\xammp\apache\conf\extra» y modificaremos el archivo httpd-vhosts.conf.
Una vez en el archivo, con tu editor de texto (preferiblemente Notepad++, Sublime) agrega esto:
<VirtualHost *:80> ServerName dominio.com.ar ServerAlias www.domminio.com.ar ServerAlias domminio ServerAdmin webmaster@localhost DocumentRoot "C:\xampp\htdocs\dominio.com.ar" <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory "C:\xampp\htdocs\dominio.com.ar"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost>
El último paso es reiniciar apache, lo cual hacemos desde la interfaz de XAMPP, primero lo detenemos y luego lo inciamos:
Finalmente visita: http://dominio.com.ar y deberías ver el contenido del HTML que copiamos previamente.
Si hemos hecho todo bien, este será nuestro resultado final:
Si observan ambas prácticas, podrán notar que la de Linux es ligeramaente más amplia.
En Linux generalmente se hace indispensable ser más específico en las tareas pues se trabaja desde la línea de comandos y se debe conocer exactamente qué se hace, mientras que en Windows por ejemplo un botón detiene o hace andar «algo».
De todos modos, sin importar su sistema operativo en ambos casos llegamos al mismo resultado, publicar un sitio web de forma local sobre el cual estaremos trabajando en los próximos laboratorios.
Para habilitar el uso de PHP en nuestros archivos web, deberemos instalar el siguiente módulo:
libapache2-mod-php5 – server-side, HTML-embedded scripting language (Apache 2 module)
Puedes instalarlo de esta forma:
# conviértete en root $> su - # instala $> apt-get install libapache2-mod-php5
Una vez este instalado, reinicia apache como hemos visto en capítulos anteriores, así se podrán utilizar archivos PHP.
Me has sacado de un gran apuro muchas gracias!!
😀 Me alegra mucho que te haya sido útil.
Buenos tardes, pregunta, como hacer eso mismo, pero con las paginas alojadas en un iis, es decir configurar el apache para que publique las paginas que existen en el iis.
Yo tengo dos paginas en un iis todos con la misma ip, lo hice, pero cuando llamo a la segunda pagina configurada, me trae siempre la primera y la primera me funciona bien
Creo que lo puedes lograr con ProxyReverse podría ser posible, nunca lo intenté con un IIS pero sí con Tomcat.
https://httpd.apache.org/docs/trunk/es/howto/reverse_proxy.html
Slds.
M.