Cómo configurar un servidor web Apache
Aprenda a alojar su propio sitio web con Apache, un servidor web sólido, conocido y fácil de configurar.
He alojado mis propios sitios web desde hace muchos años. Desde que cambié de OS/2 a Linux hace más de 20 años, he utilizado Apache como software de servidor. Apache es sólido, conocido y bastante fácil de configurar para una instalación básica. En realidad, no es mucho más difícil de configurar para una configuración más compleja, como varios 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. El uso de un navegador para ver los resultados de este trabajo debe realizarse como usuario no root. (Yo uso el usuario student
en mi host virtual).
Instalación
Nota: Este artículo se actualizó utilizando Fedora 33 con Apache 2.4.46. Si utiliza una distribución diferente o una versión diferente de Fedora, sus 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 necesita modificar son las mismas independientemente de la distribución.
El servidor web Apache es fácil de instalar. Con un comando, puedes instalarlo y todas las dependencias necesarias:
$ dnf install httpd
Todos los archivos de configuración de Apache se encuentran en /etc/httpd/conf
y /etc/httpd/conf.d
. Los datos de los sitios web que ejecutará con Apache se encuentran en /var/www
de forma predeterminada, pero puede cambiarlos si lo desea.
Configuración
El archivo de configuración principal de Apache es /etc/httpd/conf/httpd.conf
. Contiene muchas declaraciones de configuración que no es necesario cambiar para una instalación básica. De hecho, sólo se deben realizar unos pocos cambios en este archivo para que un sitio web básico esté en funcionamiento. El archivo es muy grande, por lo que, en lugar de saturar este artículo con un montón de cosas innecesarias, mostraré sólo aquellas directivas que necesite cambiar.
Primero, tómate un poco de tiempo y explora el archivo httpd.conf
para familiarizarte con él. Una de las cosas que me gusta de las versiones de Red Hat de la mayoría de los archivos de configuración es la cantidad de comentarios que describen las distintas secciones y directivas de configuración de los archivos. El archivo httpd.conf
no es una excepción, ya que está bastante bien comentado. Utilice estos comentarios para comprender qué está configurando el 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. En este momento, solo necesita hacer que este sitio web esté disponible para la máquina local, así que use la dirección localhost
. La línea debería verse así cuando termines:
Listen 127.0.0.1:80
Con esta directiva configurada en la dirección IP del localhost
, Apache escuchará solo las conexiones del host local. Si desea que el servidor web escuche las conexiones de hosts remotos, deberá utilizar la dirección IP externa del host.
La directiva DocumentRoot
especifica 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 estándar. 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 desea 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 desee 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/mywebsite/html"
Estos son los únicos cambios de configuración de Apache necesarios para crear un sitio web sencillo. Para este pequeño ejercicio, sólo se realizó un cambio en el archivo httpd.conf
: la directiva Listen
. Todo lo demás ya está configurado para producir un servidor web que funcione.
Sin embargo, se necesita otro cambio: abrir el puerto 80 en nuestro firewall. Utilizo iptables como mi firewall, así que cambio /etc/sysconfig/iptables
para agregar una declaración que permita el protocolo HTTP. El archivo completo se ve 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 que agregué es la tercera desde abajo, que permite el tráfico entrante en el puerto 80. Ahora vuelvo a cargar la configuración de iptables modificada.
[root@testvm1 ~]# cd /etc/sysconfig/ ; iptables-restore iptables
Crea el archivo index.html
El archivo index.html
es el archivo predeterminado que un servidor web proporcionará cuando acceda al sitio web utilizando solo el nombre de dominio y no un nombre de archivo HTML específico. En el directorio /var/www/html
, cree un archivo con el nombre index.html
. Añade el contenido Hello World
. No es necesario agregar ningún marcado HTML para que esto funcione. El único trabajo del servidor web es ofrecer un flujo de datos de texto, y el servidor no tiene idea de cuál es la fecha ni cómo representarla. Simplemente transmite el flujo de datos al host solicitante.
Después de guardar el archivo, establezca la propiedad en apache.apache
.
[root@testvm1 html]# chown apache.apache index.html
iniciar apache
Apache es muy fácil de iniciar. Las versiones actuales de Fedora usan systemd
. Ejecute los siguientes comandos para iniciarlo y luego verificar el estado del servidor:
[root@testvm1 ~]# systemctl start httpd
[root@testvm1 ~]# 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 su servidor. En sistemas Linux que utilizan scripts de inicio SystemV, los comandos serían:
[root@testvm1 ~]# service httpd start
Starting httpd: [Fri Feb 09 08:18:07 2018] [ OK ]
[root@testvm1 ~]# service httpd status
httpd (pid 14649) is running...
Si tiene un navegador web como Firefox o Chrome en su host, puede usar la URL localhost
en la línea URL del navegador para mostrar su página web, por simple que sea. También puede utilizar un navegador web en modo texto como Lynx para ver la página web. Primero, instale Lynx (si aún no está instalado).
[root@testvm1 ~]# dnf -y install lynx
Luego use el siguiente comando para mostrar la página web.
[root@testvm1 ~]# lynx localhost
El resultado se ve así en mi sesión de terminal. He eliminado gran parte del espacio vacío de la página.
Hello World
<snip>
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
A continuación, edite su archivo index.html
y agregue un poco de marcado HTML para que se vea así:
<h1>Hello World</h1>
Ahora actualice el navegador. Para Lynx, utilice la combinación de teclas Ctrl+R. Los resultados se ven un poco diferentes. El texto está en color, que es como Lynx muestra los encabezados si su terminal admite color, y ahora está centrado. En un navegador GUI, el texto estaría en una fuente grande.
Hello World
<snip>
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
Pensamientos de despedida
Como puede ver en este pequeño ejercicio, es fácil configurar un servidor web Apache. Los detalles variarán según su distribución y la versión de Apache proporcionada por esa distribución. En mi entorno, este era un ejercicio bastante trivial.
Pero hay más porque Apache es muy flexible y potente. El mes que viene hablaré sobre el alojamiento de varios sitios web utilizando una única instancia de Apache.
Este artículo se publicó originalmente en 2018 y ha sido actualizado por el editor.