Implantación de Aplicaciones Web: Guía Completa de Arquitectura, Servidores, CMS y Scripting

Conceptos Generales sobre la Arquitectura de Aplicaciones Web

La distinción entre un servidor web y un servidor de aplicaciones es cada vez más borrosa. Un servidor web tradicional tiene como misión principal proporcionar documentos estáticos como páginas HTML, imágenes y vídeos utilizando el protocolo HTTP (HyperTextTransferProtocolHyperText\,Transfer\,Protocol) y hojas de estilo CSS para el formato. Sin embargo, una aplicación web es un programa informático que se ejecuta de forma remota en un servidor y presenta una interfaz dinámica a través del navegador. A diferencia del contenido estático, una aplicación web procesa órdenes de los usuarios mediante una "lógica de negocio" y presenta resultados dinámicos. Las comunicaciones no se limitan a HTTP, sino que pueden incluir protocolos como CGI (CommonGatewayInterfaceCommon\,Gateway\,Interface).

En cuanto a la popularidad de los servidores web de código abierto, Nginx y Apache son los líderes. Para abril de 2019, Nginx superó a Apache; actualmente posee el 38%38\% del mercado, mientras que Apache HTTP Server retiene un 24%24\%. Por otro lado, los servidores de aplicaciones más utilizados son Apache Tomcat y Glassfish. Glassfish fue lanzado en 2006 por Sun Microsystems y es compatible con Java EE, servlets y EJB. Tomcat, lanzado en 1998, es el servidor de aplicaciones Java EE de código abierto más extendido y se incluye frecuentemente con Apache.

Las aplicaciones web se clasifican en cuatro grupos según la presentación de datos. Las aplicaciones Estáticas no cambian su contenido tras la petición. Las Dinámicas generan nuevo código HTML con cada interacción del usuario, lo que implica recargar la página. Las de Página Única (SPA o SinglePageApplicationsSingle-Page\,Applications) utilizan JavaScript de forma asíncrona (AJAX: AsynchronousJavaScriptandXMLAsynchronous\,JavaScript\,and\,XML) para actualizar partes del contenido sin recargar el navegador, como ocurre en Gmail. Finalmente, las de Múltiples Páginas dividen el contenido en varias páginas cargadas según la elección del usuario. También existen los generadores de sitios estáticos (SSG) como Next.js, Hugo y Gatsby, que transforman aplicaciones dinámicas en versiones estáticas simplificadas.

Análisis de Requerimientos de Hardware y Software

El despliegue de aplicaciones web requiere dimensionar los recursos según el tráfico y la complejidad. Para una pequeña o mediana empresa (PYME), un PC de gama media puede actuar como servidor. No obstante, si se manejan bases de datos nutridas, la CPU y la RAM son críticas. Se recomienda separar los servicios (web y base de datos) para evitar la congestión. Los sistemas de almacenamiento deben ofrecer alto rendimiento y seguridad mediante técnicas como RAID o replicación. En comunicaciones, el mínimo recomendado son conexiones GigabitEthernetGigabit\,Ethernet internas y fibra óptica simétrica para Internet. La seguridad por hardware a través de appliancesappliances (cortafuegos, DMZ, antimalware) es fundamental.

En cuanto al software, la familia Unix/Linux es preferida por su estabilidad, aunque Windows ofrece mejor integración con sistemas como Azure y es más amigable para la administración. La arquitectura típica se basa en las pilas LAMP o WAMP (Linux/Windows, Apache, MySQL/MariaDB, PHP). Los lenguajes de marcas como HTML o XML carecen de lógica de programación y se limitan a la estructura. Los lenguajes de script (PHP, JavaScript, Python) son interpretados línea a línea en tiempo de ejecución. La ejecución puede ser en el lado del servidor, donde se genera el código HTML antes de enviarlo al cliente, o en el lado del cliente (como JavaScript), lo que libera recursos del servidor y mejora la interactividad.

Instalación del Sistema Operativo Anfitrión y el Servidor Web

La instalación de Windows 10 Professional (22H2) comienza con la descarga de la herramienta MediaCreationTool22H2.exeMediaCreationTool22H2.exe. Se debe crear un medio de instalación en una unidad flash de al menos 8GB8\,GB. Durante el proceso, se configuran el idioma, la arquitectura y la edición. Tras la instalación, se realiza la configuración OOBE (OutofBoxExperienceOut\,of\,Box\,Experience) para personalizar la privacidad, la región y las cuentas de usuario. Es crucial ejecutar WindowsUpdateWindows\,Update inmediatamente después para corregir vulnerabilidades.

Para el servidor web, se utiliza XAMPP, que automatiza la instalación de Apache, MariaDB, PHP y Perl. La versión 8.2.0 incluye Apache 2.4.54, MariaDB 10.4.27 y PHP 8.2.0. El panel de control de XAMPP permite gestionar servicios como módulos de Windows, configurar puertos (como el 8080 para HTTP y el 443443 para HTTPS) y monitorear procesos mediante NetstatNetstat. Apache se configura mediante el archivo httpd.confhttpd.conf ubicado en C:xamppapacheconfC:\\xampp\\apache\\conf. En este archivo se definen el ServerRootServerRoot, el ListenListen (puerto), el DocumentRootDocumentRoot (donde residen los documentos web, por defecto C:xampphtdocsC:\\xampp\\htdocs) y los registros de errores.

Sistemas Gestores de Contenidos (CMS): Joomla!

Los CMS permiten crear y organizar sitios web sin conocimientos técnicos avanzados. Se clasifican en blogs (Blogger), wikis (MediaWiki), comercio electrónico (PrestaShop), aprendizaje (LMS como Moodle), foros (phpBB) y propósito general (WordPress, Joomla!, Drupal). WordPress domina el 65%65\% del mercado. Joomla! ocupa el segundo lugar (5%5\%) y destaca por su flexibilidad para desarrolladores.

La instalación de Joomla! requiere una base de datos MySQL/MariaDB configurada preferiblemente con la extensión MySQLi (MySQLimprovedMySQL\,improved). Durante la instalación, se definen los datos del superusuario y los parámetros de conexión a la BD. En Joomla!, el contenido se organiza en categorías (contenedores) y artículos (objetos con el contenido). El sistema de permisos se hereda de los grupos de usuarios: Público, Invitados, Gestores, Registrados y Superusuarios. Dentro de Registrados hay subniveles: Autores, Editores y Publicadores. Los niveles de acceso (Público, Invitado, Registrado, Especial y Superusuario) determinan qué elementos puede ver cada grupo. Para la seguridad y respaldo, se utilizan extensiones como AkeebaBackupCoreAkeeba\,Backup\,Core, que crea instantáneas del sitio y de la base de datos para restauraciones mediante herramientas como KickstartKickstart.

Ofimática Web y Documentación Técnica

La ofimática web utiliza clientes ligeros (navegadores) para realizar tareas como procesamiento de textos u hojas de cálculo. Las soluciones líderes son Microsoft 365 (Word, Excel, PowerPoint) y Google Workspace (Documentos, Hojas de Cálculo, Presentaciones). Google Workspace destaca por ofrecer planes gratuitos y edición en tiempo real. Documentos de Google permite exportar archivos en formatos como .docx, .odt, .rtf, .pdf, .txt, .html y .epub. Las hojas de cálculo admiten .xlsx, .ods, .csv y .tsv.

La integración de estas aplicaciones en intranets corporativas se realiza comúnmente mediante código HTML e iframesiframes o a través de herramientas de búsqueda como Google CSE (CustomSearchEngineCustom\,Search\,Engine), donde se obtiene una URL pública tipo https://cse.google.com/cse?cx=[ID]https://cse.google.com/cse?cx=[ID]. La labor del administrador incluye la elaboración de manuales técnicos que deben contener requisitos mínimos, opciones de instalación, configuración del entorno, diagnóstico de problemas (sección de FAQ) y control de versiones.

Lenguajes de Marcas y Estilos (HTML y CSS)

HTML (HyperTextMarkupLanguageHyperText\,Markup\,Language) es el estándar para la web. Sus elementos básicos incluyen <html><html>, <head><head>, <body><body>, encabezados (<h1><h1> a <h6><h6>), párrafos (<p><p>), enlaces (<a><a>) e imágenes (<img><img> con atributos srcsrc y altalt). CSS (CascadingStyleSheetsCascading\,Style\,Sheets) separa el contenido de la presentación. El "Modelo de Caja" divide los elementos en Contenido, Relleno (paddingpadding), Borde (borderborder) y Margen (marginmargin).

Existen reglas de precedencia para los estilos CSS basadas en la especificidad:

  1. Estilo en línea: 10001000 puntos.
  2. Selector de ID (#id): 100100 puntos.
  3. Selector de clase (.clase.clase) o atributo: 1010 puntos.
  4. Selector de elemento: 11 punto.

La regla !important!important puede anular cualquier precedencia. En animación web, destacan las transiciones CSS y el formato SVG (ScalableVectorGraphicsScalable\,Vector\,Graphics), que es vectorial y nativo en navegadores modernos, frente al antiguo SWF (Flash), que requiere complementos externos y se considera inseguro.

Programación en el Servidor con PHP

PHP (HypertextPreprocessorHypertext\,Preprocessor) es un lenguaje interpretado y embebible en HTML. Se utilizan herramientas como Notepad++, Eclipse o VSCodium para su desarrollo. En VSCodium, se debe configurar el settings.jsonsettings.json apuntando a php.exephp.exe. La sintaxis incluye variables (denotadas con el signo ),operadoresaritmeˊticos,estructurasdecontrol(), operadores aritméticos, estructuras de control (if/else,,while,,for,,switch) y funciones integradas (matemáticas, de matriz, de archivo, de base de datos).\n\nPHP soporta la programación orientada a objetos (POO), incluyendo conceptos como clases, objetos (instancias de clase), polimorfismo, encapsulación, interfaces y herencia. El manejo de errores se realiza mediante excepciones (try,,catch,,throw)yinformesdenivelcomo) y informes de nivel comowarn,,infooodebug.Paramantenerelestadoentreconexiones,seutilizanvariablesdesesioˊn(matrizsuperglobal. Para mantener el estado entre conexiones, se utilizan variables de sesión (matriz superglobal\text{\$_SESSION})ycookies(funcioˊn) y cookies (funciónsetcookie()).\n\n# Acceso a Bases de Datos y ODBC\n\nLa extensión MySQLi es la más utilizada para conectar PHP con MySQL. La conexión requiere el anfitrión, usuario, contraseña y nombre de la BD. Una vez conectado, se ejecutan sentencias SQL como SELECT,,INSERT,,UPDATEyyDELETE.LosprocedimientosalmacenadossonbloquesdesentenciasSQLqueseguardanenelservidorparamayorrendimiento.EnPHP,seejecutanpreparandolallamadacon. Los procedimientos almacenados son bloques de sentencias SQL que se guardan en el servidor para mayor rendimiento. En PHP, se ejecutan preparando la llamada conprepare("CALL\,procedimiento(?)")yvinculandoparaˊmetroscony vinculando parámetros conbind_param().\n\nODBC (Open\,Database\,Connectivity)esunestaˊndarquepermiteindependenciadelabasededatosmedianteconectores.EnWindows,seadministranlosDSN() es un estándar que permite independencia de la base de datos mediante conectores. En Windows, se administran los DSN (Data\,Source\,Names) mediante el "Administrador de orígenes de datos ODBC", configurando controladores ANSI o Unicode y parámetros de autenticación como el puerto y el cifrado SSL.\n\n# Scripting del Lado del Cliente: JavaScript\n\nJavaScript fue creado en 1995 por Brendan Eich para Netscape. Es un lenguaje compacto que interactúa con el DOM (Document\,Object\,Model),unaAPIquerepresentaeldocumentoHTMLcomounconjuntodeobjetos.LoseventossonelmotordeJavaScriptysecapturanmediante), una API que representa el documento HTML como un conjunto de objetos. Los eventos son el motor de JavaScript y se capturan medianteaddEventListener("evento",\,función).Entreloseventoscomunesestaˊn. Entre los eventos comunes estánclick,,dblclick,,mouseoveryykeydown.\n\nLa validación de formularios en el cliente mejora la experiencia del usuario. Se utiliza la API de validación de restricciones con propiedades como validationMessage,,validity(queincluyeestadoscomo(que incluye estados comotooLong,,typeMismatchoovalueMissing)ymeˊtodoscomo) y métodos comocheckValidity().Sinembargo,elusodeJavaScriptconllevariesgoscomoataquesXSS(. Sin embargo, el uso de JavaScript conlleva riesgos como ataques XSS (Cross-Site\,Scripting)yCSRF() y CSRF (Cross-Site\,Request\,Forgery).Lasbuenaspraˊcticasincluyenelusode). Las buenas prácticas incluyen el uso delinters$$ (JSHint, ESLint), evitar el JavaScript en línea y escapar o codificar las entradas de usuario para prevenir la inyección de código.

Questions & Discussion

P: ¿Ofrecen las aplicaciones web de página única (SPA) poca posibilidad de interacción? R: Falso. Ofrecen una alta interacción pues actualizan partes de la página sin recargarla.

P: ¿A qué está limitado el protocolo de comunicación en una aplicación web? R: No está limitado únicamente a HTTP; puede realizarse mediante diversos protocolos como CGI.

P: En una arquitectura de tres niveles, ¿dónde se sitúa típicamente la base de datos? R: Se sitúa en el tercer nivel.

P: ¿Qué caracteriza a la WWW? R: Su protocolo de capa de aplicación, el HTTP.

P: ¿Cuál es una ventaja de los servidores Unix/Linux? R: Existen distribuciones ligeras que alivian la carga del sistema sobre el hardware.

P: ¿Heredan los artículos de Joomla! automáticamente los permisos de su categoría? R: Falso. Los permisos se heredan del grupo al que el artículo está asignado.

P: ¿Qué es la sindicación de contenidos? R: Es un mecanismo que permite recabar los nuevos contenidos de una web (como RSS o Atom).

P: ¿A qué formatos exporta Hojas de Cálculo de Google? R: PDF, XLSX y CSV.

P: ¿Cómo se realiza la integración de aplicaciones web en una intranet? R: Típicamente utilizando direcciones URL dentro de iframes.

P: ¿Qué tipo de selector es .negrita en CSS? R: Es un selector de clase.

P: ¿Para qué se utiliza typeMismatch en JavaScript? R: Devuelve verdadero si la entrada no se adapta al tipo de dato requerido en un control de formulario.

P: ¿Cuál es el intérprete de PHP? R: El programa executable php.exe.