Configuración y Despliegue de Servidores Web LAMP y FTP en Linux
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 9,23 KB
Arquitectura del Stack LAMP
El stack LAMP es el conjunto de tecnologías de código abierto más utilizado para el despliegue de aplicaciones web dinámicas:
- Linux: Sistema Operativo (SO).
- Apache2: Servidor web para protocolos HTTP/HTTPS.
- MariaDB/MySQL: Sistema de gestión de Bases de Datos (BBDD).
- PHP: Lenguaje de programación para la lógica del servidor.
Flujo de Funcionamiento
- Contenido Dinámico: Navegador → Apache → PHP → BBDD → PHP → Apache → Navegador.
- Contenido Estático: Apache sirve directamente archivos HTML, CSS y JS desde el
DocumentRoot.
Instalación y Gestión de Servicios
Para preparar el entorno, ejecutamos los siguientes comandos:
- Actualización:
sudo apt update - Instalación:
sudo apt install apache2 mariadb-server php php-mysql - Verificación:
systemctl status apache2yapache2ctl -v
Gestión de Servicios con systemctl
systemctl start/stop/restart/reload apache2- reload: Recarga la configuración sin interrumpir las conexiones.
- restart: Reinicia completamente el servicio.
Rutas y Configuración de Apache
/etc/apache2: Directorio principal de configuración.apache2.conf: Configuración global del servidor.ports.conf: Definición de los puertos de escucha.sites-available: Archivos de configuración de sitios disponibles.sites-enabled: Enlaces simbólicos a los sitios activos./var/www/html: Directorio raíz por defecto para la web./var/log/apache2/error.log: Registro de errores.access.log: Registro de accesos.
Idea clave: En sites-available creo el archivo .conf; en sites-enabled es donde Apache los carga. El comando a2ensite activa el sitio creando el enlace correspondiente.
Configuración de Virtual Hosts
Permiten alojar varios dominios bajo una misma dirección IP. Apache identifica el dominio mediante la cabecera Host y sirve el DocumentRoot correspondiente.
Archivo de Configuración
Ruta: /etc/apache2/sites-available/misitio.conf
Ejemplo de Configuración
<VirtualHost *:80>
ServerName midominio.com
ServerAlias <a href="http://www.midominio.com/">www.midominio.com</a>
DocumentRoot /var/www/misitio
ErrorLog ${APACHE_LOG_DIR}/misitio-error.log
CustomLog ${APACHE_LOG_DIR}/misitio-access.log combined
</VirtualHost>Activación del Sitio
sudo a2ensite misitio.confsudo apache2ctl configtest(Verifica la sintaxis).sudo systemctl reload apache2
Directivas Principales
- *:80: Escucha peticiones HTTP en el puerto 80.
- ServerName: Dominio principal.
- ServerAlias: Nombres de dominio alternativos.
- DocumentRoot: Carpeta donde reside la web.
- ErrorLog: Archivo de registro de errores.
- CustomLog: Archivo de registro de accesos.
Configuración de DNS
El sistema DNS traduce nombres de dominio a direcciones IP:
- Registro A: Apunta a una dirección IPv4.
- CNAME: Crea un alias para otro nombre de dominio.
- AAAA: Apunta a una dirección IPv6.
Para Virtual Hosts: El DNS debe apuntar a la IP del servidor. Si el ServerName no coincide con el DNS, Apache o Certbot fallarán.
Seguridad con HTTPS y Certbot
- HTTP: Puerto 80 (sin cifrar).
- HTTPS: Puerto 443 (cifrado mediante TLS).
- TLS: Protocolo que cifra la comunicación.
- Certificado: Vincula un dominio con una clave pública.
- Let’s Encrypt: Autoridad de Certificación (CA) gratuita.
- Certbot: Herramienta para automatizar certificados en Apache.
Comandos de Certbot
sudo apt install certbot python3-certbot-apachesudo certbot --apache(Instalación automática).sudo certbot renew --dry-run(Prueba de renovación).
Importante: Certbot requiere que el DNS sea correcto y que el puerto 80 esté abierto para la validación.
Flujo de Despliegue Completo
- Ejecutar
apt update. - Instalar Apache, MariaDB y PHP.
- Crear el directorio
/var/www/misitio. - Subir el archivo
index. - Crear el archivo de Virtual Host (VH).
- Configurar ServerName y DocumentRoot.
- Activar el sitio con
a2ensite. - Realizar un
configtest. - Recargar el servicio (
reload). - Configurar el registro DNS tipo A.
- Probar el acceso vía HTTP.
- Ejecutar
certbot --apache. - Probar el acceso final vía HTTPS.
Diagnóstico y Resolución de Errores
- Apache no arranca: Error de sintaxis en
.conf. Usarapache2ctl configtest. - Puerto 80 ocupado: Verificar con
ss -tlnp | grep :80. - Error 403: Problemas de permisos o directiva Directory.
- Error 404: DocumentRoot incorrecto o falta el archivo
index. - Error 500: Error en PHP o en la aplicación. Revisar con
tail -f error.log. - Fallo en Certbot: DNS mal configurado o puerto 80 cerrado.
Comandos de Diagnóstico
sudo systemctl status apache2sudo journalctl -xesudo apache2ctl configtestsudo tail -f /var/log/apache2/error.logsudo ss -tlnp | grep :80
Servidor de Archivos FTP con VSFTPD
El protocolo FTP se utiliza para la transferencia de archivos:
- Puerto de control: 21.
- Puertos pasivos: 4000-4100.
- Servidor: vsftpd.
- Cliente: FileZilla.
Instalación y Configuración
sudo apt update && sudo apt install vsftpd -ysystemctl status vsftpd- Copia de seguridad:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak - Edición:
sudo nano /etc/vsftpd.conf
Directivas de vsftpd.conf
anonymous_enable=NO: Deshabilita accesos anónimos.local_enable=YES: Permite usuarios locales.write_enable=YES: Permite la subida de archivos.chroot_local_user=YES: Enjaula al usuario en su directorio.pasv_enable=YES: Activa el modo pasivo.pasv_min_port=4000ypasv_max_port=4100.ssl_enable=YES: Activa TLS/FTPS para mayor seguridad.
Reiniciar tras cambios: sudo systemctl restart vsftpd
Seguridad con Firewall (UFW)
sudo ufw allow ssh/http/httpssudo ufw allow 21/tcpsudo ufw allow 4000:4100/tcpsudo ufw statussudo ufw enable
Comandos Básicos de Administración
pwd: Muestra la ruta actual.ls -lah: Lista archivos con detalles y ocultos.cd: Cambia de directorio.mkdir -p: Crea directorios (incluyendo padres).nano: Editor de texto sencillo.cat: Visualiza el contenido de un archivo.cp: Copia archivos o directorios.mv: Mueve o renombra archivos.rm: Borra archivos.rm -rf: ¡Peligro! Borra carpetas de forma recursiva y forzada.
Metodología para Respuestas de Examen
- Qué hago: Explicar el objetivo.
- Ruta/Fichero: Indicar dónde se trabaja.
- Comando/Configuración: Escribir la acción técnica.
- Recargo/Reinicio: Aplicar los cambios.
- Comprobación: Verificar mediante status, configtest o logs.
Frase resumen: Cliente → DNS → Servidor Linux → Apache/FTP → VirtualHost/PHP/BBDD/archivos → Respuesta.