Cómo configurar un servidor web en Linux paso a paso
Has decidido dar el salto y tener tu propio servidor web. Es una decisión excelente. Te permite tener control total sobre tu sitio, aprender muchísimo sobre cómo funciona Internet por dentro y, a largo plazo, ahorrar costes de alojamiento.
No te preocupes si no eres un experto. Esta guía está escrita para que cualquier persona, incluso sin experiencia previa en sysadmin linux, pueda seguirla. Vamos a convertir una máquina Linux limpia en un servidor web funcional, paso a paso.
Requisitos Previos: ¿Qué Necesitas Antes de Empezar?
Antes de lanzarnos a instalar software, asegurémonos de que tienes todo lo necesario.
Una Máquina con Linux
Necesitas un ordenador o una máquina virtual con Linux instalado. Las distribuciones más comunes y recomendadas para servidores son Ubuntu Server y Debian. Esta guía se centrará en Ubuntu (versiones 20.04 o 22.04), pero los comandos son muy similares en Debian.
[TIP] Si estás en un PC con Windows, puedes usar VirtualBox para crear una máquina virtual. Si estás en la nube (DigitalOcean, Linode, AWS), al crear el servidor te pedirán que elijas el sistema operativo.
Acceso por SSH
El servidor normalmente no tiene monitor ni teclado. Te conectarás a él de forma remota a través de SSH (Secure Shell). Necesitarás un cliente SSH.
- En Windows: Usa PuTTY o la terminal de Windows (PowerShell) si tienes OpenSSH instalado.
- En macOS o Linux: Abre la terminal y escribe
ssh usuario@ip-del-servidor.
Un Usuario con Privilegios de Superusuario (sudo)
Nunca trabajes como usuario root directamente. Es peligroso. Durante la instalación de Ubuntu, creaste un usuario. Asegúrate de que ese usuario pueda ejecutar comandos con sudo.
Paso 1: Conexión Inicial y Actualización del Sistema
Una vez que tienes la IP de tu servidor y el usuario, conéctate por SSH.
ssh tu_usuario@la_ip_de_tu_servidor
Te pedirá la contraseña. Escríbela (no verás nada en pantalla, es normal) y pulsa Enter. ¡Ya estás dentro!
Lo primero es actualizar el sistema. Esto asegura que tienes los últimos parches de seguridad y las versiones más estables de los programas.
sudo apt update
sudo apt upgrade -y
sudo te da permisos de administrador. apt update actualiza la lista de paquetes disponibles. apt upgrade instala las nuevas versiones. El -y responde "sí" automáticamente a todas las preguntas.
[WARNING] Este proceso puede tardar unos minutos. No cierres la terminal ni apagues el ordenador mientras se ejecuta.
Paso 2: Instalar el Stack LAMP (Linux, Apache, MySQL, PHP)
Un servidor web necesita un conjunto de programas para funcionar. El más popular es el stack LAMP:
- Linux (el sistema operativo que ya tienes).
- Apache (el servidor web que sirve las páginas).
- MySQL (o MariaDB, la base de datos).
- PHP (el lenguaje de programación para crear sitios dinámicos como WordPress).
Instalar Apache
Apache es el que "escucha" las peticiones de los navegadores y les envía las páginas web.
sudo apt install apache2 -y
Una vez instalado, Apache se inicia automáticamente. Para comprobarlo, abre tu navegador web y escribe la IP de tu servidor. Deberías ver la página de bienvenida por defecto de Apache. ¡Enhorabuena, ya tienes un servidor web funcionando!
Instalar MySQL (o MariaDB)
MySQL es el gestor de bases de datos. Aquí se guardarán los contenidos de tu web (artículos, usuarios, productos, etc.).
sudo apt install mysql-server -y
Después de instalarlo, es muy importante ejecutar un script de seguridad que te guiará para configurar una contraseña de root y eliminar usuarios y bases de datos por defecto.
sudo mysql_secure_installation
Sigue las instrucciones en pantalla. Te recomiendo establecer una contraseña de root segura y responder "Y" (sí) a todas las preguntas.
Instalar PHP
PHP es el lenguaje que procesa el código de aplicaciones como WordPress, Joomla o Drupal.
sudo apt install php libapache2-mod-php php-mysql -y
Este comando instala PHP, el módulo para que funcione con Apache y la extensión para conectar con MySQL.
Para que los cambios surtan efecto, reinicia Apache:
sudo systemctl restart apache2
¡Ya tienes el stack LAMP completo! Tu servidor ya puede servir páginas web dinámicas.
Paso 3: Configurar Apache para tu Primer Sitio Web
Apache viene con una configuración básica. Vamos a crear un sitio web sencillo.
Crear la Carpeta del Sitio
Primero, creamos la carpeta donde vivirán los archivos de tu web. Lo haremos en /var/www/.
sudo mkdir -p /var/www/tu-dominio.com/html
Reemplaza tu-dominio.com por el nombre de tu dominio real (ej: miweb.com) o por un nombre de prueba (ej: misitio).
Asignar Permisos
Apache necesita poder leer y escribir en esa carpeta. Le damos la propiedad al usuario de Apache (www-data) y a tu usuario para que puedas subir archivos cómodamente.
sudo chown -R $USER:$USER /var/www/tu-dominio.com/html
sudo chmod -R 755 /var/www/tu-dominio.com
Crear un Archivo de Prueba
Vamos a crear un archivo HTML de ejemplo para ver que todo funciona.
nano /var/www/tu-dominio.com/html/index.html
Pega este contenido dentro:
<html>
<head>
<title>¡Mi primer sitio en un servidor Linux!</title>
</head>
<body>
<h1>¡Funciona!</h1>
<p>Si ves esto, tu servidor web está configurado correctamente.</p>
</body>
</html>
Guarda el archivo (Ctrl+O, Enter) y sal de nano (Ctrl+X).
Crear el Archivo de Configuración del Sitio (VirtualHost)
Apache usa "VirtualHosts" para gestionar varios sitios web en el mismo servidor. Vamos a crear uno para nuestro dominio.
sudo nano /etc/apache2/sites-available/tu-dominio.com.conf
Pega esta configuración:
<VirtualHost *:80>
ServerAdmin admin@tu-dominio.com
ServerName tu-dominio.com
ServerAlias www.tu-dominio.com
DocumentRoot /var/www/tu-dominio.com/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Guarda y cierra el archivo.
Activar el Sitio y Desactivar el Predeterminado
Ahora, activamos nuestro sitio y desactivamos el que viene por defecto.
sudo a2ensite tu-dominio.com.conf
sudo a2dissite 000-default.conf
sudo systemctl reload apache2
¡Listo! Ahora, si escribes la IP de tu servidor en el navegador, deberías ver tu página "¡Funciona!" en lugar de la página por defecto de Apache.
Paso 4: Añadir un Panel de Control (Opcional pero Muy Recomendado)
Gestionar un servidor solo por línea de comandos puede ser tedioso. Los paneles de control te ofrecen una interfaz web para administrar sitios, bases de datos, cuentas de correo y mucho más. Es como tener un cpanel linux o un plesk configuración, pero gratis y de código abierto.
Una excelente opción es Syspanel (conocido originalmente como HestiaCP). Es rápido, moderno y muy fácil de usar.
Instalar Syspanel
Lo bueno de Syspanel es que se instala con un solo comando. Asegúrate de que tu servidor está limpio (sin otros paneles o configuraciones extrañas de Apache).
Conéctate como root o con un usuario con sudo. El instalador te pedirá el correo del administrador y algunos datos.
wget https://raw.githubusercontent.com/hestiacp/hestiacp/release/install/hst-install.sh
sudo bash hst-install.sh
[INFO] Sigue las instrucciones del instalador. El proceso puede durar entre 5 y 15 minutos. Al finalizar, te dará una URL y una contraseña para acceder al panel. El puerto de acceso por defecto a Syspanel es el 2106.
Acceder a Syspanel
Abre tu navegador y escribe: https://la_ip_de_tu_servidor:2106
Acepta la advertencia de seguridad (es un certificado autofirmado) y verás la pantalla de login. Introduce el usuario y la contraseña que te proporcionó el instalador.
Desde aquí, puedes crear nuevos sitios web, bases de datos, cuentas de correo, gestionar DNS y mucho más, todo desde una interfaz gráfica. Es una forma estupenda de configurar servidor web linux sin tener que escribir comandos todo el tiempo.
[WARNING] Aunque los paneles facilitan la vida, es importante no depender completamente de ellos. Saber usar la línea de comandos te da un control total y es una habilidad fundamental para cualquier sysadmin linux.
Paso 5: Asegurar tu Servidor Web
Un servidor expuesto en Internet es un objetivo. Tomar medidas de seguridad básicas es crucial.
1. Configurar un Firewall (UFW)
Un firewall controla qué tráfico puede entrar y salir de tu servidor. UFW (Uncomplicated Firewall) es la herramienta más sencilla en Ubuntu.
Primero, permite el tráfico SSH (para no quedarte fuera) y HTTP/HTTPS (para tu web).
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enable
Puedes ver el estado con sudo ufw status.
2. Instalar un Certificado SSL (HTTPS)
Hoy en día, un sitio web sin HTTPS no es seguro y los navegadores lo marcan como "No seguro". Vamos a instalar un certificado gratuito de Let's Encrypt.
Primero, instala Certbot.
sudo apt install certbot python3-certbot-apache -y
Luego, ejecuta Certbot para obtener e instalar el certificado automáticamente.
sudo certbot --apache
Sigue las instrucciones: introduce tu correo electrónico, acepta los términos y selecciona el dominio para el que quieres el certificado. Certbot modificará automáticamente la configuración de Apache para usar HTTPS.
3. Deshabilitar el Acceso Root por SSH
Edita el archivo de configuración de SSH.
sudo nano /etc/ssh/sshd_config
Busca la línea PermitRootLogin y cámbiala a no.
PermitRootLogin no
Guarda y reinicia el servicio SSH: sudo systemctl restart sshd. A partir de ahora, solo podrás conectarte con tu usuario normal y usar sudo para tareas de administración.
Preguntas Frecuentes (FAQ) sobre Configuración de Servidores Web
¿Qué es mejor, Apache o Nginx?
Apache es más fácil de configurar para principiantes y tiene una gran comunidad. Nginx es más eficiente con muchos visitantes simultáneos. Para empezar, Apache es perfecto.
¿Necesito un panel de control como cPanel o Plesk?
No es obligatorio, pero facilita enormemente la gestión. Syspanel (puerto 2106) es una alternativa gratuita y excelente a cpanel linux o plesk configuración.
¿Puedo tener varios sitios web en el mismo servidor?
Sí, usando VirtualHosts en Apache (como vimos en el Paso 3) o desde el panel de control. Cada sitio tendrá su propia carpeta y configuración.
¿Cómo subo mis archivos web al servidor?
Puedes usar SCP (Secure Copy) desde la terminal, o un cliente FTP/SFTP como FileZilla. Conéctate con tu usuario y contraseña de SSH, y sube los archivos a la carpeta /var/www/tu-dominio.com/html/.
¿Qué hago si algo sale mal?
Revisa los logs de Apache: sudo tail -f /var/log/apache2/error.log. También puedes buscar el error en Google. La comunidad de sysadmin linux es enorme y siempre hay alguien que ha tenido el mismo problema.
[TIP] La clave para configurar servidor web linux con éxito es la paciencia y la práctica. No tengas miedo de romper cosas. Un servidor de pruebas es el mejor laboratorio de aprendizaje.
Conclusión: Tu Servidor Web ya está en Marcha
Has recorrido un largo camino. Desde una terminal vacía hasta tener un servidor web completamente funcional, con Apache, MySQL, PHP, un panel de control y medidas de seguridad básicas. Has dado un paso de gigante en tu camino para convertirte en un sysadmin linux.
Este es solo el principio. Ahora puedes instalar WordPress, montar tu propio blog, crear una tienda online o simplemente seguir experimentando. Recuerda, la mejor manera de aprender es haciendo. ¡Felicidades por tu nuevo servidor web!
