He alojado mis propios sitios web durante muchos años. Desde que cambié de OS/2 a Linux hace más de 20 años, he usado Apache como mi 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.
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
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 hacerse como usuario no root. (Uso el usuario student
en mi servidor virtual).
Instalación
Nota:Este artículo ha sido actualizado usando Fedora 33 con Apache 2.4.46. Si usa 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 debe modificar son las mismas independientemente de la distribución.
El servidor web Apache es fácil de instalar. Con un comando, puede 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 cambiar eso 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 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 este artículo con muchas cosas innecesarias, mostraré solo las directivas que necesita cambiar.
Primero, tómese un poco de tiempo y explore el httpd.conf
archivo para familiarizarse 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 httpd.conf
file no es una excepción, ya que está bastante bien comentado. Use estos comentarios para comprender qué está configurando el archivo.
El primer elemento a cambiar es el Listen
instrucción, 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 el localhost
dirección. La línea debería verse así cuando termines:
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 desea que el servidor web escuche las conexiones de hosts remotos, debe usar la dirección IP externa del host.
El DocumentRoot
directiva 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 /var/www
árbol de directorios. 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 www
subdirectorio para hacer más explícita la identificación del sitio web. Eso podría verse así:
DocumentRoot "/var/mywebsite/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 httpd.conf
archivo—el Listen
directiva. Todo lo demás ya está configurado para producir un servidor web en funcionamiento.
Sin embargo, se necesita otro cambio:abrir el puerto 80 en nuestro firewall. Uso iptables como cortafuegos, 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 alterada de iptables.
[root@testvm1 ~]# cd /etc/sysconfig/ ; iptables-restore iptables
Cree el archivo index.html
El index.html
El archivo es el archivo predeterminado que un servidor web ofrecerá cuando acceda al sitio web usando solo el nombre de dominio y no un nombre de archivo HTML específico. En el /var/www/html
directorio, cree un archivo con el nombre index.html
. Agregue el contenido Hello World
. No necesita agregar ningún marcado HTML para que esto 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, 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 verifique 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 los sistemas Linux que usan secuencias de comandos de inicio de 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 usar 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 index.html
archivo 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 fue un ejercicio bastante trivial.
Pero hay más porque Apache es muy flexible y poderoso. El próximo mes hablaré sobre el alojamiento de varios sitios web con una única instancia de Apache.
Este artículo se publicó originalmente en 2018 y el editor lo actualizó.