Aprenda a alojar su propio sitio web con Apache, un servidor web sólido, conocido y fácil de configurar.
La configuración de Apache es bastante sencilla en el caso de una instalación básica y realmente, tampoco es mucho más difícil, en caso de querer configurar algo un poco más compleja, como por ejemplo: Múltiples sitios web.
La instalación y configuración del servidor web Apache debe realizarse como root. La configuración del firewall también debe realizarse como root.
Instalación de Apache
Nota: Este artículo ha sido actualizado usando Fedora 33 con Apache 2.4.46. Si usas una distribución diferente o una versión diferente de Fedora, los comandos y las ubicaciones y el contenido de los archivos de configuración pueden ser diferentes.
Sin embargo, las líneas de configuración que necesitas modificar son las mismas independientemente de la distribución.
El servidor web Apache es fácil de instalar. Con un comando, se puede instalar el software y todas las dependencias necesarias:
$ dnf install httpd
Todos los archivos de configuración de Apache se encuentran en las rutas
/etc/httpd/conf
y
/etc/httpd/conf.d
.
Los datos de los sitios web que se ejecutarán con Apache se encuentran en
/var/www
de forma predeterminada, pero se puede cambiar si lo deseas.
Configuración de Apache
El archivo de configuración principal de Apache es
/etc/httpd/conf/httpd.conf
. Este archivo contiene muchas declaraciones de configuración que no necesitan cambiarse para una instalación básica.
De hecho, solo se deben realizar algunos cambios en este archivo para tener un sitio web básico en funcionamiento.
El archivo es muy grande, así que, en lugar de saturar el artículo con muchas cosas innecesarias, te indicaré las directivas que necesitas modificar.
Primero, toma un poco de tiempo y explora el archivo
httpd.conf
para familiarizarte con él.
Una de las cosas que me gustan de las versiones de Red Hat de la mayoría de los archivos de configuración es la cantidad de comentarios que describen las diversas secciones y directivas de configuración en los archivos.
El archivo
httpd.conf
no es una excepción, ya que está bastante bien comentado. Utiliza esos comentarios para comprender qué estás configurando en cada parte del archivo.
El primer elemento a cambiar es la declaración
Listen
que define la dirección IP y el puerto en el que Apache escuchará las solicitudes de página.
Solo necesitas hacer que ese sitio web esté disponible para la máquina local, así que usa la dirección de
localhost
.
La línea debería verse así:
Listen 127.0.0.1:80
Con esta directiva establecida en la dirección IP del
localhost
, Apache solo escuchará las conexiones del host local. Si deseas que el servidor web escuche las conexiones de hosts remotos, debe usar la dirección IP externa del host.
La directiva
DocumentRoot
específica la ubicación de los archivos HTML que componen las páginas del sitio web. No es necesario cambiar esa línea porque ya apunta a la ubicación por defecto.
La línea debería verse así:
DocumentRoot "/var/www/html"
El RPM de instalación de Apache crea el árbol de directorios
/var/www
. Si deseas cambiar la ubicación donde se almacenan los archivos del sitio web, este elemento de configuración se utiliza para hacerlo.
Por ejemplo, es posible que desees utilizar un nombre diferente para el subdirectorio
www
para que la identificación del sitio web sea más explícita.
Podría verse así:
DocumentRoot "/var/ciberninjas/html"
Estos son los únicos cambios de configuración de Apache necesarios para crear un sitio web simple. Para este pequeño ejercicio, solo se realizó un cambio en el archivo
httpd.conf
: La directiva
Listen
.
Todo lo demás, ya estaba configurado para producir un servidor web activo.
Sin embargo, se necesitan otros cambios, debemos abrir el puerto 80 en nuestro firewall. Para ello, puedes usar iptables como firewall, así que debes cambiar
/etc/sysconfig/iptables
para agregar una declaración que permita el protocolo HTTP.
Todo el archivo se verá así:
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
La línea agregada es la tercera por abajo, que permite el tráfico entrante en el puerto 80. Ahora, solo vuelvo a cargar la configuración alterada de iptables.
# cd /etc/sysconfig/ ; iptables-restore iptables
Crea el archivo index.html
El archivo
index.html
es el archivo predeterminado que un servidor web mostrará cuando accedas al sitio web utilizando solo el nombre de dominio y no un nombre de archivo HTML específico.
En el directorio
/var/www/html
, crea un archivo con el nombre
index.html
.
Agrega el contenido
Hello World
al archivo
index.html
. No necesitas agregar ningún marcado HTML para que funcione.
El único trabajo del servidor web es servir un flujo de datos de texto y el servidor no tiene idea de cuál es la fecha o cómo representarla. Simplemente transmite el flujo de datos al host solicitante.
Después de guardar el archivo, establece la propiedad en
apache.apache
.
# chown apache.apache index.html
Iniciar el servidor Apache
Apache es muy fácil de iniciar. Las versiones actuales de Fedora usan
systemd
. Ejecuta los siguientes comandos para iniciarlo y luego para verificar el estado del servidor:
[~]# systemctl start httpd
[~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2018-02-08 13:18:54 EST; 5s ago
Docs: man:httpd.service(8)
Main PID: 27107 (httpd)
Status: "Processing requests..."
Tasks: 213 (limit: 4915)
CGroup: /system.slice/httpd.service
├─27107 /usr/sbin/httpd -DFOREGROUND
├─27108 /usr/sbin/httpd -DFOREGROUND
├─27109 /usr/sbin/httpd -DFOREGROUND
├─27110 /usr/sbin/httpd -DFOREGROUND
└─27111 /usr/sbin/httpd -DFOREGROUND
Feb 08 13:18:54 testvm1 systemd[1]: Starting The Apache HTTP Server...
Feb 08 13:18:54 testvm1 systemd[1]: Started The Apache HTTP Server.
Los comandos pueden ser diferentes en tu servidor. En los sistemas Linux que usan secuencias de comandos de inicio de SystemV, los comandos serían:
[~]# service httpd start
Starting httpd: [Fri Feb 09 08:18:07 2018] [ OK ]
[~]# service httpd status
httpd (pid 14649) is running...
Si tienes un navegador web como Firefox o Chrome en tu host, puedes usar la eURL de
localhost
en la barra del navegador para mostrar tu página web.
También puedes usar un navegador web en modo texto como Lynx para ver la página web. Para ello, primero debes instalar Lynx (si aún no lo tienes instalado).
[~]# dnf -y install lynx
Luego usa el siguiente comando para mostrar la página web.
[~]# lynx localhost
El resultado se mostrará en la terminal del navegador.
Hello World
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
Luego, edita el archivo
index.html
y agrega un poco de marcado HTML para que el contenido se vea mejor, por ejemplo así:
<h1>Hello World</h1>
Ahora actualiza el navegador. Para Lynx, utiliza la combinación de teclas Ctrl+R. Los resultados se verán un poco diferentes. El texto estará en color, que es como Lynx muestra los encabezados si tu terminal admite.
En un navegador GUI, el texto de título h1 se mostrará en una fuente de tamaño grande, reflejando que es un título principal.
Conclusión final
Como has podido ver en este pequeño ejercicio, es fácil configurar un servidor web Apache, incluso en Linux.
Los detalles pueden variar según cada distribución y versión de Apache utilizada por cada distribución.