Diferencia entre revisiones de «Instalación de servidores para aplicacións web 2»
| (No se muestran 42 ediciones intermedias del mismo usuario) | |||
| Línea 1: | Línea 1: | ||
| + | |||
| + | [[Category:ASIR]] | ||
| + | [[Category:IAW]] | ||
| + | |||
A parte práctica da UD1 está baseada na tarefa realizada no CIFP Rodolfo Ucha: máquina virtual con Lubuntu, instalación de Webmin, verificación SHA-256, creación de usuario, xestión de Apache, instalación de MariaDB/MySQL e configuración de PHP mediante `phpinfo()`. | A parte práctica da UD1 está baseada na tarefa realizada no CIFP Rodolfo Ucha: máquina virtual con Lubuntu, instalación de Webmin, verificación SHA-256, creación de usuario, xestión de Apache, instalación de MariaDB/MySQL e configuración de PHP mediante `phpinfo()`. | ||
| Línea 24: | Línea 28: | ||
Ao rematar a unidade deberías ser capaz de: | Ao rematar a unidade deberías ser capaz de: | ||
| − | |||
{| class="wikitable" | {| class="wikitable" | ||
! Criterio | ! Criterio | ||
| Línea 56: | Línea 59: | ||
| Documentar correctamente os procedementos realizados. | | Documentar correctamente os procedementos realizados. | ||
|} | |} | ||
| − | |||
= 3. Que é unha aplicación web? = | = 3. Que é unha aplicación web? = | ||
| Línea 85: | Línea 87: | ||
{| class="wikitable" | {| class="wikitable" | ||
! Etapa | ! Etapa | ||
| − | + | ! Características | |
| − | + | |- | |
| − | | - | + | | Web estática |
| − | | Web estática | + | | O servidor entrega documentos previamente almacenados, normalmente HTML para os contidos e CSS para os estilos. |
| − | | O servidor entrega documentos previamente almacenados, normalmente HTML. | + | |- |
| − | | - | + | | Web dinámica |
| − | | Web dinámica | + | | O contido da resposta pode xerarse no servidor en función de datos, usuarios ou parámetros. |
| − | | O contido da resposta pode xerarse no servidor en función de datos, usuarios ou parámetros. | + | |- |
| − | | - | + | | Aplicacións web interactivas |
| − | | Aplicacións web interactivas | + | | O navegador tamén executa unha parte importante da aplicación mediante JavaScript. |
| − | | O navegador tamén executa unha parte importante da aplicación mediante JavaScript. | + | |- |
| − | | - | + | | Aplicacións web modernas |
| − | | Aplicacións web modernas | + | | Utilizan múltiples servizos, APIs, bases de datos, sistemas de autenticación, almacenamento e outros compoñentes. |
| − | | Utilizan múltiples servizos, APIs, bases de datos, sistemas de autenticación, almacenamento e outros compoñentes. | + | |} |
| − | | } | ||
| − | |||
Esta evolución provocou que unha aplicación web xa non sexa simplemente unha colección de páxinas HTML, senón un sistema composto por múltiples elementos. | Esta evolución provocou que unha aplicación web xa non sexa simplemente unha colección de páxinas HTML, senón un sistema composto por múltiples elementos. | ||
| Línea 113: | Línea 113: | ||
O servidor entrega ficheiros que xa existen, como: | O servidor entrega ficheiros que xa existen, como: | ||
| − | + | <div style="column-count:6;-moz-column-count:6;-webkit-column-count:6"> | |
* HTML. | * HTML. | ||
* CSS. | * CSS. | ||
| Línea 120: | Línea 120: | ||
* Vídeos. | * Vídeos. | ||
* Outros recursos. | * Outros recursos. | ||
| + | </div> | ||
O servidor non ten que executar necesariamente código de aplicación para xerar o contido. | O servidor non ten que executar necesariamente código de aplicación para xerar o contido. | ||
| Línea 140: | Línea 141: | ||
Podemos atopar: | Podemos atopar: | ||
| − | + | <div style="column-count:5;-moz-column-count:5;-webkit-column-count:5"> | |
* Blogs. | * Blogs. | ||
* Portais web. | * Portais web. | ||
| Línea 151: | Línea 152: | ||
* Administración electrónica. | * Administración electrónica. | ||
* Aplicacións de xestión. | * Aplicacións de xestión. | ||
| + | </div> | ||
= 5. Tecnoloxías das aplicacións web = | = 5. Tecnoloxías das aplicacións web = | ||
| Línea 163: | Línea 165: | ||
{| class="wikitable" | {| class="wikitable" | ||
| − | + | ! Tecnoloxía ! | |
| − | + | ! Función principal | |
| − | | - | + | |- |
| − | | HTML | + | | HTML |
| − | | - | + | | Define a estrutura e o contido da páxina. |
| − | | CSS | + | |- |
| − | | - | + | | CSS |
| − | | JavaScript | + | | Define a presentación e o aspecto visual. |
| − | | } | + | |- |
| + | | JavaScript | ||
| + | | Permite incorporar lóxica e interacción no navegador. | ||
| + | |} | ||
Por exemplo: | Por exemplo: | ||
| Línea 192: | Línea 197: | ||
No servidor pode executarse código para: | No servidor pode executarse código para: | ||
| − | + | <div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"> | |
| − | * procesar peticións | + | * procesar peticións |
| − | * validar datos | + | * validar datos |
| − | * realizar cálculos | + | * realizar cálculos |
| − | * xestionar sesións | + | * xestionar sesións |
| − | * acceder a bases de datos | + | * acceder a bases de datos |
| − | * xerar contido dinámico | + | * xerar contido dinámico |
| − | * aplicar regras de negocio | + | * aplicar regras de negocio |
| − | * autenticar usuarios | + | * autenticar usuarios |
| + | </div> | ||
Entre as linguaxes e tecnoloxías utilizadas neste ámbito podemos atopar: | Entre as linguaxes e tecnoloxías utilizadas neste ámbito podemos atopar: | ||
| − | * PHP | + | <div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"> |
| − | * Python | + | * PHP |
| − | * Java | + | * Python |
| − | * JavaScript | + | * Java |
| − | * C# | + | * JavaScript |
| − | * Ruby | + | * C# |
| − | * Perl | + | * ASP.NET |
| + | * Ruby | ||
| + | * Perl | ||
| + | </div> | ||
Non é necesario dominar todas estas tecnoloxías. Nesta unidade interesa comprender o concepto fundamental: | Non é necesario dominar todas estas tecnoloxías. Nesta unidade interesa comprender o concepto fundamental: | ||
| + | '''o código do servidor execútase no servidor e o resultado é enviado posteriormente ao cliente.''' | ||
| − | + | = 6. Aplicacións web e sistemas informáticos = | |
| − | |||
| − | |||
Unha aplicación web non funciona de maneira illada. | Unha aplicación web non funciona de maneira illada. | ||
| Línea 250: | Línea 258: | ||
Dependendo da aplicación poden ser necesarios: | Dependendo da aplicación poden ser necesarios: | ||
| − | * servidor web | + | <div style="column-count:5;-moz-column-count:5;-webkit-column-count:5"> |
| − | * servidor de bases de datos | + | |
| − | * intérprete ou runtime | + | * servidor web |
| − | * servizo DNS | + | * servidor de bases de datos |
| − | * servizo de correo | + | * intérprete ou runtime |
| − | * servizo de almacenamento | + | * servizo DNS |
| − | * servizo de autenticación | + | * servizo de correo |
| − | * certificados dixitais | + | * servizo de almacenamento |
| − | * sistemas de monitorización | + | * servizo de autenticación |
| − | * sistemas de copias de seguridade | + | * certificados dixitais |
| + | * sistemas de monitorización | ||
| + | * sistemas de copias de seguridade | ||
| + | |||
| + | </div> | ||
Por tanto, administrar unha aplicación web implica tamén coñecer o sistema operativo e os servizos sobre os que se apoia. | Por tanto, administrar unha aplicación web implica tamén coñecer o sistema operativo e os servizos sobre os que se apoia. | ||
| Línea 272: | Línea 284: | ||
{| class="wikitable" | {| class="wikitable" | ||
| − | + | ! Capa !! Función | |
| − | + | |- | |
| − | | - | + | | Presentación |
| − | | Presentación | + | | Interface coa que interactúa o usuario. |
| − | | - | + | |- |
| − | | Lóxica de aplicación | + | | Lóxica de aplicación |
| − | | - | + | | Contén a lóxica e o procesamento da aplicación. |
| − | | Datos | + | |- |
| − | | } | + | | Datos |
| + | | Almacena e xestiona a información persistente. | ||
| + | |} | ||
Podemos representalo así: | Podemos representalo así: | ||
| Línea 304: | Línea 318: | ||
A separación entre capas facilita: | A separación entre capas facilita: | ||
| − | + | <div style="column-count:5;-moz-column-count:5;-webkit-column-count:5"> | |
| − | * o mantemento | + | * o mantemento |
| − | * a actualización | + | * a actualización |
| − | * a seguridade | + | * a seguridade |
| − | * a escalabilidade | + | * a escalabilidade |
| − | * a organización do código | + | * a organización do código |
| + | </div> | ||
= 8. Arquitectura cliente-servidor = | = 8. Arquitectura cliente-servidor = | ||
| Línea 320: | Línea 335: | ||
O cliente pode ser: | O cliente pode ser: | ||
| − | + | <div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"> | |
| − | * un navegador web | + | * un navegador web |
| − | * unha aplicación móbil | + | * unha aplicación móbil |
| − | * outro programa | + | * outro programa |
| − | * un sistema automatizado | + | * un sistema automatizado |
| + | </div> | ||
== 8.2. Servidor == | == 8.2. Servidor == | ||
| Línea 379: | Línea 395: | ||
Algúns aspectos que debemos analizar son: | Algúns aspectos que debemos analizar son: | ||
| − | + | <div style="column-count:2;-moz-column-count:2;-webkit-column-count:2"> | |
| − | * sistema operativo | + | * sistema operativo |
| − | * hardware dispoñible | + | * hardware dispoñible (memoria RAM, capacidade de almacenamento) |
| − | + | * software necesario | |
| − | + | * versións compatibles | |
| − | * software necesario | + | * base de datos necesaria |
| − | * versións compatibles | + | * linguaxe empregada |
| − | * base de datos necesaria | + | * versión do servidor web |
| − | * linguaxe empregada | + | * permisos |
| − | * versión do servidor web | + | * usuarios |
| − | * permisos | + | * necesidades de seguridade, conectividade e disponibilidade |
| − | * usuarios | + | </div> |
| − | * necesidades de seguridade | ||
| − | |||
== 10.1. Exemplo de análise == | == 10.1. Exemplo de análise == | ||
| Línea 402: | Línea 416: | ||
{| class="wikitable" | {| class="wikitable" | ||
| − | + | ! Elemento !! Necesidade | |
| − | | - | + | |- |
| − | | Sistema operativo | + | | Sistema operativo |
| − | | - | + | | Linux ou outro sistema. |
| − | | Servidor web | + | |- |
| − | | - | + | | Servidor web |
| − | | Linguaxe | + | | Apache ou outro (nginx, IIS). |
| − | | - | + | |- |
| − | | Base de datos | + | | Linguaxe |
| − | | - | + | | PHP. |
| − | | Cliente | + | |- |
| − | | - | + | | Base de datos |
| − | | Rede | + | | MariaDB/MySQL. |
| − | | - | + | |- |
| − | | Seguridade | + | | Cliente |
| − | | } | + | | Navegador web. |
| + | |- | ||
| + | | Rede | ||
| + | | Conectividade entre cliente e servidor. | ||
| + | |- | ||
| + | | Seguridade | ||
| + | | Control de usuarios, permisos e acceso á aplicación. | ||
| + | |} | ||
= 11. Servidor web = | = 11. Servidor web = | ||
| Línea 424: | Línea 445: | ||
Entre os servidores web máis coñecidos están: | Entre os servidores web máis coñecidos están: | ||
| − | + | <div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> | |
* Apache HTTP Server. | * Apache HTTP Server. | ||
* Nginx. | * Nginx. | ||
* Microsoft IIS. | * Microsoft IIS. | ||
| + | </div> | ||
Nesta unidade traballaremos fundamentalmente con '''Apache'''. | Nesta unidade traballaremos fundamentalmente con '''Apache'''. | ||
| Línea 434: | Línea 456: | ||
Un servidor web pode: | Un servidor web pode: | ||
| − | + | <div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"> | |
| − | * recibir peticións HTTP | + | * recibir peticións HTTP |
| − | * entregar ficheiros estáticos | + | * entregar ficheiros estáticos |
| − | * executar ou delegar o procesamento de aplicacións | + | * executar ou delegar o procesamento de aplicacións |
| − | * xestionar sitios virtuais | + | * xestionar sitios virtuais |
| − | * controlar acceso a recursos | + | * controlar acceso a recursos |
| − | * rexistrar actividade | + | * rexistrar actividade |
| − | * utilizar módulos | + | * utilizar módulos |
| − | * traballar con HTTPS | + | * traballar con HTTPS |
| + | </div> | ||
== 11.2. Document root == | == 11.2. Document root == | ||
| Línea 467: | Línea 490: | ||
Por exemplo, poden existir módulos relacionados con: | Por exemplo, poden existir módulos relacionados con: | ||
| − | + | <div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"> | |
| − | * autenticación | + | * autenticación |
| − | * reescritura de URLs | + | * reescritura de URLs |
| − | * SSL/TLS | + | * SSL/TLS |
| − | * linguaxes de servidor | + | * linguaxes de servidor |
| − | * rexistro | + | * rexistro |
| − | * compresión | + | * compresión |
| − | * control de acceso | + | * control de acceso |
| + | </div> | ||
Esta arquitectura permite adaptar Apache ás necesidades da aplicación. | Esta arquitectura permite adaptar Apache ás necesidades da aplicación. | ||
| Línea 486: | Línea 510: | ||
Para iso utilizamos un '''Sistema Xestor de Bases de Datos''' (SXBD ou SGBD). | Para iso utilizamos un '''Sistema Xestor de Bases de Datos''' (SXBD ou SGBD). | ||
| − | Un | + | Un SXBD permite: |
| − | + | <div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> | |
| − | * almacenar | + | * almacenar/consultar/modificar/eliminar datos |
| − | + | * controlar usuarios e aplicar permisos | |
| − | + | * manter a integridade da información | |
| − | + | </div> | |
| − | * controlar usuarios | ||
| − | |||
| − | * manter a integridade da información | ||
Na unidade utilizamos '''MariaDB/MySQL'''. | Na unidade utilizamos '''MariaDB/MySQL'''. | ||
| Línea 504: | Línea 525: | ||
A información organízase mediante: | A información organízase mediante: | ||
| − | * bases de datos | + | <div style="column-count:5;-moz-column-count:5;-webkit-column-count:5"> |
| − | * táboas | + | * bases de datos |
| − | * rexistros | + | * táboas |
| − | * campos | + | * rexistros |
| − | * relacións | + | * campos |
| + | * relacións | ||
| + | </div> | ||
Exemplo: | Exemplo: | ||
| Línea 522: | Línea 545: | ||
| 1 | Ana | García | | | 1 | Ana | García | | ||
| 2 | Xoán | López | | | 2 | Xoán | López | | ||
| − | +----+---------+-----------+ </syntaxhighlight> | + | +----+---------+-----------+ |
| + | </syntaxhighlight> | ||
| − | As aplicacións web poden acceder a esta información mediante SQL. | + | As aplicacións web poden acceder a esta información mediante ''querys'' (consultas) SQL. |
= 14. Acceso da aplicación á base de datos = | = 14. Acceso da aplicación á base de datos = | ||
| Línea 530: | Línea 554: | ||
Unha aplicación web pode consultar unha base de datos para realizar operacións como: | Unha aplicación web pode consultar unha base de datos para realizar operacións como: | ||
| − | * comprobar credenciais | + | <div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> |
| − | * mostrar produtos | + | * comprobar credenciais |
| − | * gardar pedidos | + | * mostrar produtos |
| − | * consultar notas | + | * gardar pedidos |
| − | * almacenar publicacións | + | * consultar notas |
| − | * xestionar usuarios | + | * almacenar publicacións |
| + | * xestionar usuarios | ||
| + | </div> | ||
Un exemplo conceptual sería: | Un exemplo conceptual sería: | ||
| Línea 598: | Línea 624: | ||
{| class="wikitable" | {| class="wikitable" | ||
| − | + | ! Cliente !! Servidor | |
| − | + | |- | |
| − | | - | + | | Executa o navegador |
| − | | Executa o navegador | + | | Executa o servidor |
| − | | - | + | |- |
| − | | HTML | + | | HTML |
| − | | - | + | | PHP, Python, Java, etc. |
| − | | CSS | + | |- |
| − | | - | + | | CSS |
| − | | JavaScript | + | | Acceso a bases de datos |
| − | | - | + | |- |
| − | | Interacción coa interface | + | | JavaScript |
| − | | } | + | | Lóxica de aplicación |
| + | |- | ||
| + | | Interacción coa interface | ||
| + | | Procesamento e persistencia | ||
| + | |} | ||
= 16. PHP = | = 16. PHP = | ||
| Línea 656: | Línea 686: | ||
{| class="wikitable" | {| class="wikitable" | ||
| − | + | ! Letra !! Compoñente !! Función | |
| − | + | |- | |
| − | | - | + | | L |
| − | | L | + | | Linux |
| − | | - | + | | Sistema operativo. |
| − | | A | + | |- |
| − | | - | + | | A |
| − | | M | + | | Apache |
| − | | - | + | | Servidor web. |
| − | | P | + | |- |
| − | | } | + | | M |
| + | | MariaDB/MySQL | ||
| + | | Sistema xestor de bases de datos. | ||
| + | |- | ||
| + | | P | ||
| + | | PHP | ||
| + | | Linguaxe de programación do lado servidor. | ||
| + | |} | ||
A idea fundamental non é simplemente coñecer os compoñentes por separado, senón entender como se integran. | A idea fundamental non é simplemente coñecer os compoñentes por separado, senón entender como se integran. | ||
| Línea 749: | Línea 786: | ||
{| class="wikitable" | {| class="wikitable" | ||
| − | + | ! Termo !! Significado | |
| − | + | |- | |
| − | | - | + | | Máquina anfitrioa |
| − | | Máquina anfitrioa | + | | Equipo físico onde se executa a virtualización. |
| − | | - | + | |- |
| − | | Máquina virtual | + | | Máquina virtual |
| − | | - | + | | Equipo virtual executado sobre o anfitrión. |
| − | | Sistema anfitrión | + | |- |
| − | | - | + | | Sistema anfitrión |
| − | | Sistema convidado | + | | Sistema operativo principal. |
| − | | - | + | |- |
| − | | Hipervisor | + | | Sistema convidado |
| − | | } | + | | Sistema operativo instalado dentro da máquina virtual. |
| + | |- | ||
| + | | Hipervisor | ||
| + | | Software encargado de executar e xestionar máquinas virtuais. | ||
| + | |} | ||
Exemplos de software de virtualización son: | Exemplos de software de virtualización son: | ||
| − | * VirtualBox | + | <div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"> |
| − | * VMware Workstation | + | * VirtualBox |
| − | * Hyper-V | + | * VMware Workstation |
| − | * KVM/QEMU | + | * Hyper-V |
| + | * KVM/QEMU | ||
| + | </div> | ||
| − | Na práctica da unidade empregamos VirtualBox. | + | Na práctica da unidade empregamos VirtualBox (e tamén tedes instalado e podedes usar VMWare Workstation Pro). |
= 20. Configuración dunha máquina virtual = | = 20. Configuración dunha máquina virtual = | ||
| Línea 777: | Línea 820: | ||
Entre os parámetros que podemos configurar están: | Entre os parámetros que podemos configurar están: | ||
| − | + | <div style="column-count:5;-moz-column-count:5;-webkit-column-count:5"> | |
| − | * número de procesadores virtuais | + | * número de procesadores virtuais |
| − | * memoria RAM | + | * memoria RAM |
| − | * disco | + | * disco |
| − | * rede | + | * rede |
| − | * dispositivos | + | * dispositivos |
| − | * teclado | + | * teclado |
| − | * resolución | + | * resolución |
| − | * nome da máquina | + | * nome da máquina |
| − | * integración co sistema anfitrión. | + | * integración co sistema anfitrión |
| + | * ... | ||
| + | </div> | ||
Unha configuración inadecuada pode producir problemas de rendemento. | Unha configuración inadecuada pode producir problemas de rendemento. | ||
| Línea 818: | Línea 863: | ||
A comprobación de integridade permite detectar, entre outras situacións: | A comprobación de integridade permite detectar, entre outras situacións: | ||
| − | * ficheiros corrompidos | + | <div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"> |
| − | * descargas incompletas | + | * ficheiros corrompidos |
| − | * modificacións do ficheiro | + | * descargas incompletas |
| − | * discrepancias entre o ficheiro descargado e o esperado | + | * modificacións do ficheiro |
| + | * discrepancias entre o ficheiro descargado e o esperado | ||
| + | </div> | ||
'''Importante:''' | '''Importante:''' | ||
| Línea 833: | Línea 880: | ||
É fundamental distinguir entre: | É fundamental distinguir entre: | ||
| − | * usuario normal | + | <div style="column-count:5;-moz-column-count:5;-webkit-column-count:5"> |
| − | * usuario con privilegios administrativos | + | * usuario normal |
| − | * grupo | + | * usuario con privilegios administrativos |
| − | * propietario dun ficheiro | + | * grupo |
| − | * permisos de lectura | + | * propietario dun ficheiro |
| − | + | * permisos de lectura/escritura/execución | |
| − | + | </div> | |
As aplicacións web executaranse habitualmente baixo determinadas identidades e necesitarán acceder a ficheiros e directorios concretos. | As aplicacións web executaranse habitualmente baixo determinadas identidades e necesitarán acceder a ficheiros e directorios concretos. | ||
| Línea 850: | Línea 897: | ||
Algunhas medidas básicas son: | Algunhas medidas básicas son: | ||
| − | + | <div style="column-count:2;-moz-column-count:2;-webkit-column-count:2"> | |
| − | * manter o sistema actualizado | + | * manter o sistema actualizado |
| − | * utilizar contrasinais seguros | + | * utilizar contrasinais seguros |
| − | * limitar os privilexios dos usuarios | + | * limitar os privilexios dos usuarios |
| − | * evitar servizos innecesarios | + | * evitar servizos innecesarios |
| − | * limitar o acceso á administración | + | * limitar o acceso á administración |
| − | * utilizar HTTPS cando corresponda | + | * utilizar HTTPS cando corresponda |
| − | * controlar os permisos dos ficheiros | + | * controlar os permisos dos ficheiros |
| − | * revisar os rexistros | + | * revisar os rexistros |
| − | * realizar copias de seguridade | + | * realizar copias de seguridade |
| − | * evitar expoñer innecesariamente servizos á rede | + | * evitar expoñer innecesariamente servizos á rede |
| + | </div> | ||
== 23.1. Webmin e seguridade == | == 23.1. Webmin e seguridade == | ||
| Línea 869: | Línea 917: | ||
Debemos prestar atención a: | Debemos prestar atención a: | ||
| − | + | <div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> | |
* credenciais; | * credenciais; | ||
* direccións desde as que se permite o acceso; | * direccións desde as que se permite o acceso; | ||
| Línea 876: | Línea 924: | ||
* configuración dos usuarios; | * configuración dos usuarios; | ||
* exposición do porto de administración. | * exposición do porto de administración. | ||
| + | </div> | ||
| − | '''Unha interface web de administración non debería considerarse menos importante que unha conexión SSH: ambas proporcionan capacidade de administración do sistema.''' | + | '''Unha interface web de administración non debería considerarse menos importante que unha conexión SSH: ambas proporcionan capacidade de administración do sistema.''' |
= 24. Rexistros e resolución de problemas = | = 24. Rexistros e resolución de problemas = | ||
| Línea 884: | Línea 933: | ||
Os rexistros poden axudarnos a descubrir: | Os rexistros poden axudarnos a descubrir: | ||
| − | + | <div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"> | |
| − | * erros de configuración | + | * erros de configuración |
| − | * intentos de acceso | + | * intentos de acceso |
| − | * problemas de permisos | + | * problemas de permisos |
| − | * peticións HTTP | + | * peticións HTTP |
| − | * erros da aplicación | + | * erros da aplicación |
| − | * fallos de conexión | + | * fallos de conexión |
| − | * problemas de arranque dun servizo. | + | * problemas de arranque dun servizo |
| + | * ... | ||
| + | </div> | ||
A administración de sistemas non consiste simplemente en instalar software, senón tamén en saber comprobar por que unha configuración funciona ou falla. | A administración de sistemas non consiste simplemente en instalar software, senón tamén en saber comprobar por que unha configuración funciona ou falla. | ||
| Línea 902: | Línea 953: | ||
{| class="wikitable" | {| class="wikitable" | ||
| − | + | ! Proba !! Que comprobamos | |
| − | + | |- | |
| − | | - | + | | Abrir a páxina web |
| − | | Abrir a páxina web | + | | Apache responde. |
| − | | - | + | |- |
| − | | Consultar unha páxina PHP | + | | Consultar unha páxina PHP |
| − | | - | + | | PHP está correctamente integrado. |
| − | | Acceder a MariaDB | + | |- |
| − | | - | + | | Acceder a MariaDB |
| − | | Acceder a Webmin | + | | A base de datos está instalada e accesible. |
| − | | - | + | |- |
| − | | Consultar os logs | + | | Acceder a Webmin |
| − | | - | + | | O servizo de administración funciona. |
| − | | Verificar o estado do servizo | + | |- |
| − | | } | + | | Consultar os logs |
| + | | Podemos analizar incidencias. | ||
| + | |- | ||
| + | | Verificar o estado do servizo | ||
| + | | O servizo está activo. | ||
| + | |} | ||
A instalación '''non debe darse por correcta simplemente porque o paquete se instalou'''. | A instalación '''non debe darse por correcta simplemente porque o paquete se instalou'''. | ||
| Línea 927: | Línea 983: | ||
Exemplos: | Exemplos: | ||
| − | + | <div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> | |
| − | * Webmin | + | * Webmin |
| − | * XAMPP | + | * XAMPP |
| − | * Docker | + | * Docker |
| − | * contornos de desenvolvemento integrados | + | * contornos de desenvolvemento integrados |
| − | * ferramentas de automatización | + | * ferramentas de automatización |
| − | * paneis de control | + | * paneis de control |
| + | </div> | ||
Neste módulo utilizaremos progresivamente diferentes tecnoloxías e veremos que algunhas facilitan a instalación e administración, mentres outras están máis orientadas ao despregamento ou automatización. | Neste módulo utilizaremos progresivamente diferentes tecnoloxías e veremos que algunhas facilitan a instalación e administración, mentres outras están máis orientadas ao despregamento ou automatización. | ||
| Línea 972: | Línea 1029: | ||
{| class="wikitable" | {| class="wikitable" | ||
| − | + | ! Parte !! Traballo realizado | |
| − | + | |- | |
| − | | - | + | | 1.1 |
| − | | 1.1 | + | | Uso e configuración dunha máquina virtual. |
| − | | - | + | |- |
| − | | 1.2 | + | | 1.2 |
| − | | - | + | | Instalación de Webmin e comprobación do acceso ao panel. |
| − | | 1.3 | + | |- |
| − | | - | + | | 1.3 |
| − | | 1.4 | + | | Descarga manual e comprobación da integridade mediante SHA-256. |
| − | | - | + | |- |
| − | | 1.5 | + | | 1.4 |
| − | | - | + | | Creación dun usuario mediante Webmin. |
| − | | 1.6 | + | |- |
| − | | - | + | | 1.5 |
| − | | 1.7 | + | | Acceso e administración de Apache desde Webmin. |
| − | | } | + | |- |
| + | | 1.6 | ||
| + | | Instalación de MariaDB/MySQL e comprobación do acceso. | ||
| + | |- | ||
| + | | 1.7 | ||
| + | | Configuración de Apache para interpretar PHP e comprobación mediante phpinfo(). | ||
| + | |} | ||
Na tarefa tamén se pediu documentar o traballo mediante capturas de pantalla, responder cuestións e realizar unha autoavaliación. | Na tarefa tamén se pediu documentar o traballo mediante capturas de pantalla, responder cuestións e realizar unha autoavaliación. | ||
| Línea 999: | Línea 1062: | ||
Posibles causas: | Posibles causas: | ||
| − | + | <div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> | |
| − | * o servizo non está iniciado | + | * o servizo non está iniciado |
| − | * Apache non está instalado | + | * Apache non está instalado |
| − | * existe un erro de configuración | + | * existe un erro de configuración |
| − | * o porto utilizado está ocupado | + | * o porto utilizado está ocupado |
| − | * existe un problema de rede | + | * existe un problema de rede |
| − | * un firewall está bloqueando o acceso | + | * un firewall está bloqueando o acceso |
| + | </div> | ||
== PHP non funciona == | == PHP non funciona == | ||
Posibles causas: | Posibles causas: | ||
| − | + | <div style="column-count:5;-moz-column-count:5;-webkit-column-count:5"> | |
| − | * PHP non está instalado | + | * PHP non está instalado |
| − | + | * existe un erro na configuración | |
| − | * existe un erro na configuración | + | * o ficheiro non ten extensión adecuada |
| − | * o ficheiro non ten extensión adecuada | + | * existe un problema de permisos |
| − | * existe un problema de permisos | + | * conflitos entre distintas versións de PHP |
| + | </div> | ||
== Non se pode acceder a MariaDB == | == Non se pode acceder a MariaDB == | ||
Posibles causas: | Posibles causas: | ||
| − | + | <div style="column-count:5;-moz-column-count:5;-webkit-column-count:5"> | |
| − | * o servizo non está iniciado | + | * o servizo non está iniciado |
| − | * credenciais incorrectas | + | * credenciais incorrectas |
| − | * usuario sen permisos | + | * usuario sen permisos |
| − | * configuración incorrecta | + | * configuración incorrecta |
| − | * problema de conectividade | + | * problema de conectividade |
| + | </div> | ||
== Webmin non permite administrar un servizo == | == Webmin non permite administrar un servizo == | ||
Pode ocorrer porque: | Pode ocorrer porque: | ||
| − | + | <div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> | |
| − | * o servizo non está instalado | + | * o servizo non está instalado |
| − | + | * o módulo non está correctamente configurado | |
| − | * o módulo non está correctamente configurado | ||
| − | |||
* os permisos non son suficientes. | * os permisos non son suficientes. | ||
| + | </div> | ||
= 30. Metodoloxía de resolución de problemas = | = 30. Metodoloxía de resolución de problemas = | ||
| Línea 1060: | Línea 1125: | ||
Unha documentación mínima debería indicar: | Unha documentación mínima debería indicar: | ||
| − | + | <div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"> | |
* que se instalou; | * que se instalou; | ||
* que versión se utilizou; | * que versión se utilizou; | ||
| Línea 1069: | Línea 1134: | ||
* que problemas apareceron; | * que problemas apareceron; | ||
* como se solucionaron. | * como se solucionaron. | ||
| + | </div> | ||
Un exemplo: | Un exemplo: | ||
| Línea 1092: | Línea 1158: | ||
A documentación permite: | A documentación permite: | ||
| − | + | <div style="column-count:5;-moz-column-count:5;-webkit-column-count:5"> | |
| − | * repetir unha instalación | + | * repetir unha instalación |
| − | * recuperar unha configuración | + | * recuperar unha configuración |
| − | * solucionar problemas | + | * solucionar problemas |
| − | * compartir coñecementos | + | * compartir coñecementos |
| − | * facilitar o mantemento | + | * facilitar o mantemento |
| + | </div> | ||
= 32. Conceptos que debes dominar = | = 32. Conceptos que debes dominar = | ||
Ao finalizar a UD1 deberías poder explicar con palabras propias os seguintes conceptos: | Ao finalizar a UD1 deberías poder explicar con palabras propias os seguintes conceptos: | ||
| − | + | <div style="column-count:6;-moz-column-count:6;-webkit-column-count:6"> | |
| − | * aplicación web | + | * aplicación web |
| − | * cliente | + | * cliente |
| − | * servidor | + | * servidor |
| − | * arquitectura cliente-servidor | + | * arquitectura cliente-servidor |
| − | * arquitectura multicapa | + | * arquitectura multicapa |
| − | * aplicación estática | + | * aplicación estática |
| − | * aplicación dinámica | + | * aplicación dinámica |
| − | * HTML | + | * HTML |
| − | * CSS | + | * CSS |
| − | * JavaScript | + | * JavaScript |
| − | * PHP | + | * PHP |
| − | * servidor web | + | * servidor web |
| − | * Apache | + | * Apache |
| − | * base de datos | + | * base de datos |
| − | * SGBD | + | * SGBD |
| − | * MariaDB | + | * MariaDB |
| − | * MySQL | + | * MySQL |
| − | * SQL | + | * SQL |
| − | * Webmin | + | * Webmin |
| − | * máquina virtual | + | * máquina virtual |
| − | * anfitrión | + | * anfitrión |
| − | * convidado | + | * convidado |
| − | * hipervisor | + | * hipervisor |
| − | * LAMP | + | * LAMP |
| − | * HTTP | + | * HTTP |
| − | * HTTPS | + | * HTTPS |
| − | * módulo | + | * módulo |
| − | * usuario | + | * usuario |
| − | * permisos | + | * permisos |
| − | * logs | + | * logs |
| − | * hash | + | * hash |
| − | * SHA-256 | + | * SHA-256 |
| − | * integridade | + | * integridade |
| − | * análise de requisitos | + | * análise de requisitos |
| + | </div> | ||
= 33. Resumo da unidade = | = 33. Resumo da unidade = | ||
| Línea 1172: | Línea 1240: | ||
A preparación correcta dun servidor implica moito máis que instalar paquetes. É necesario: | A preparación correcta dun servidor implica moito máis que instalar paquetes. É necesario: | ||
| − | + | # analizar os requisitos | |
| − | + | # instalar os compoñentes necesarios | |
| − | + | # configurar os servizos | |
| − | + | # comprobar o seu funcionamento | |
| − | + | # aplicar medidas básicas de seguridade | |
| − | + | # solucionar incidencias | |
| − | + | # documentar o traballo | |
| − | + | = 34. Preguntas para comprobar os coñecementos = | |
# Que é unha aplicación web? | # Que é unha aplicación web? | ||
| Línea 1221: | Línea 1289: | ||
DATOS | DATOS | ||
| − | |||
INFRAESTRUTURA DE APOIO | INFRAESTRUTURA DE APOIO | ||
| Línea 1234: | Línea 1301: | ||
| Logs e monitorización | | | Logs e monitorización | | ||
+-------------------------------+ | +-------------------------------+ | ||
| − | |||
| − | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Revisión actual del 13:03 16 sep 2026
A parte práctica da UD1 está baseada na tarefa realizada no CIFP Rodolfo Ucha: máquina virtual con Lubuntu, instalación de Webmin, verificación SHA-256, creación de usuario, xestión de Apache, instalación de MariaDB/MySQL e configuración de PHP mediante `phpinfo()`.
Sumario
- 1 1. Introdución
- 2 2. Resultados de aprendizaxe da unidade
- 3 3. Que é unha aplicación web?
- 4 4. Tipos de aplicacións web
- 5 5. Tecnoloxías das aplicacións web
- 6 6. Aplicacións web e sistemas informáticos
- 7 7. Arquitectura dunha aplicación web
- 8 8. Arquitectura cliente-servidor
- 9 9. HTTP e HTTPS
- 10 10. Análise de requisitos
- 11 11. Servidor web
- 12 12. Apache e módulos
- 13 13. Sistema xestor de bases de datos
- 14 14. Acceso da aplicación á base de datos
- 15 15. Procesamento no cliente e no servidor
- 16 16. PHP
- 17 17. A pila LAMP
- 18 18. Webmin
- 19 19. Máquina virtual
- 20 20. Configuración dunha máquina virtual
- 21 21. Integridade dos ficheiros descargados
- 22 22. Usuarios, permisos e administración
- 23 23. Seguridade básica do servidor web
- 24 24. Rexistros e resolución de problemas
- 25 25. Utilidades de proba
- 26 26. Instalación integrada e ferramentas de administración
- 27 27. Caso práctico: preparar un servidor web
- 28 28. Relación coa práctica realizada
- 29 29. Problemas habituais
- 30 30. Metodoloxía de resolución de problemas
- 31 31. Documentación técnica
- 32 32. Conceptos que debes dominar
- 33 33. Resumo da unidade
- 34 34. Preguntas para comprobar os coñecementos
- 35 35. Esquema final para memorizar
1. Introdución
As aplicacións web forman parte esencial dos sistemas informáticos actuais. Desde unha simple páxina web ata aplicacións empresariais complexas, plataformas educativas, tendas en liña ou servizos de administración electrónica, todas necesitan un conxunto de elementos de software e hardware que permitan o seu funcionamento.
Nesta unidade didáctica estudaremos como preparar un contorno básico para executar aplicacións web, identificando os principais compoñentes que interveñen e aprendendo a instalar e configurar os servizos fundamentais.
O obxectivo práctico da unidade é familiarizarse cun servidor Linux e preparar unha infraestrutura básica baseada na pila LAMP:
- Linux: sistema operativo.
- Apache: servidor web.
- MariaDB/MySQL: sistema xestor de bases de datos.
- PHP: linguaxe de programación executada no servidor.
Ademais, utilizaremos Webmin como ferramenta de administración mediante interface web.
2. Resultados de aprendizaxe da unidade
Esta unidade está relacionada principalmente co resultado de aprendizaxe:
RA1. Prepara o contorno de desenvolvemento e os servidores para aplicacións web instalando e integrando as funcións necesarias.
Ao rematar a unidade deberías ser capaz de:
| Criterio | Que deberías saber facer |
|---|---|
| CA1.1 | Identificar o software necesario para instalar e executar unha aplicación web. |
| CA1.2 | Identificar as principais tecnoloxías empregadas nas aplicacións web. |
| CA1.3 | Instalar e configurar servidores web e servidores de bases de datos. |
| CA1.4 | Explicar que tarefas se realizan no cliente e cales no servidor. |
| CA1.5 | Instalar e configurar os compoñentes necesarios para executar código no servidor. |
| CA1.6 | Configurar e comprobar o acceso ás bases de datos. |
| CA1.7 | Aplicar medidas básicas de seguridade nos accesos aos servidores. |
| CA1.8 | Utilizar ferramentas integradas para probar e administrar aplicacións web. |
| CA1.9 | Documentar correctamente os procedementos realizados. |
3. Que é unha aplicación web?
Unha aplicación web é un programa informático ao que se accede normalmente mediante un navegador web utilizando unha rede.
A principal diferenza respecto dunha aplicación tradicional é que boa parte da aplicación pode executarse nun servidor remoto, mentres que o usuario utiliza un cliente, normalmente un navegador.
Por exemplo:
- O usuario abre o navegador.
- Introduce unha URL.
- O navegador realiza unha petición ao servidor.
- O servidor procesa a petición.
- O servidor devolve unha resposta.
- O navegador interpreta e mostra esa resposta.
Unha aplicación web pode ser tan sinxela como unha páxina estática ou tan complexa como unha plataforma bancaria, un campus virtual ou unha aplicación de xestión empresarial.
3.1. Evolución das aplicacións web
Podemos distinguir, de maneira simplificada, varias etapas:
3.1. Evolución das aplicacións web
Podemos distinguir, de maneira simplificada, varias etapas:
| Etapa | Características |
|---|---|
| Web estática | O servidor entrega documentos previamente almacenados, normalmente HTML para os contidos e CSS para os estilos. |
| Web dinámica | O contido da resposta pode xerarse no servidor en función de datos, usuarios ou parámetros. |
| Aplicacións web interactivas | O navegador tamén executa unha parte importante da aplicación mediante JavaScript. |
| Aplicacións web modernas | Utilizan múltiples servizos, APIs, bases de datos, sistemas de autenticación, almacenamento e outros compoñentes. |
Esta evolución provocou que unha aplicación web xa non sexa simplemente unha colección de páxinas HTML, senón un sistema composto por múltiples elementos.
4. Tipos de aplicacións web
Existen diferentes formas de clasificar as aplicacións web.
4.1. Segundo o contido
Aplicacións web estáticas
O servidor entrega ficheiros que xa existen, como:
- HTML.
- CSS.
- JavaScript.
- Imaxes.
- Vídeos.
- Outros recursos.
O servidor non ten que executar necesariamente código de aplicación para xerar o contido.
Aplicacións web dinámicas
O contido da resposta xérase no momento da petición.
Por exemplo:
Usuario -> petición -> servidor
Servidor -> executa código
Servidor -> consulta base de datos
Servidor -> xera resposta
Servidor -> resposta -> navegador
4.2. Segundo a función
Podemos atopar:
- Blogs.
- Portais web.
- Tendas en liña.
- Foros.
- Redes sociais.
- Xestores de contido.
- Aplicacións empresariais.
- Plataformas educativas.
- Administración electrónica.
- Aplicacións de xestión.
5. Tecnoloxías das aplicacións web
Unha aplicación web pode utilizar múltiples tecnoloxías.
5.1. Tecnoloxías do lado cliente
O cliente é normalmente o navegador web.
As tecnoloxías básicas son:
| Tecnoloxía ! | Función principal |
|---|---|
| HTML | Define a estrutura e o contido da páxina. |
| CSS | Define a presentación e o aspecto visual. |
| JavaScript | Permite incorporar lóxica e interacción no navegador. |
Por exemplo:
<!DOCTYPE html>
<html>
<head>
<title>Exemplo</title>
</head>
<body>
<h1>Ola mundo</h1>
</body>
</html>
Neste caso o navegador interpreta o HTML e presenta o resultado ao usuario.
5.2. Tecnoloxías do lado servidor
No servidor pode executarse código para:
- procesar peticións
- validar datos
- realizar cálculos
- xestionar sesións
- acceder a bases de datos
- xerar contido dinámico
- aplicar regras de negocio
- autenticar usuarios
Entre as linguaxes e tecnoloxías utilizadas neste ámbito podemos atopar:
- PHP
- Python
- Java
- JavaScript
- C#
- ASP.NET
- Ruby
- Perl
Non é necesario dominar todas estas tecnoloxías. Nesta unidade interesa comprender o concepto fundamental:
o código do servidor execútase no servidor e o resultado é enviado posteriormente ao cliente.
6. Aplicacións web e sistemas informáticos
Unha aplicación web non funciona de maneira illada.
Normalmente depende de diferentes servizos do sistema informático.
Por exemplo:
USUARIO
|
v
NAVEGADOR
|
HTTP
|
v
SERVIDOR WEB
(Apache)
|
v
INTERPRETADOR PHP
|
v
BASE DE DATOS
(MariaDB)
Nesta estrutura cada compoñente ten unha función diferente.
6.1. Exemplos de servizos necesarios
Dependendo da aplicación poden ser necesarios:
- servidor web
- servidor de bases de datos
- intérprete ou runtime
- servizo DNS
- servizo de correo
- servizo de almacenamento
- servizo de autenticación
- certificados dixitais
- sistemas de monitorización
- sistemas de copias de seguridade
Por tanto, administrar unha aplicación web implica tamén coñecer o sistema operativo e os servizos sobre os que se apoia.
7. Arquitectura dunha aplicación web
Unha forma habitual de organizar unha aplicación web é mediante unha arquitectura multicapa.
7.1. Arquitectura de tres capas
Un modelo habitual é:
| Capa | Función |
|---|---|
| Presentación | Interface coa que interactúa o usuario. |
| Lóxica de aplicación | Contén a lóxica e o procesamento da aplicación. |
| Datos | Almacena e xestiona a información persistente. |
Podemos representalo así:
+-----------------------------+
| Capa de presentación |
| HTML / CSS / JavaScript |
+-------------+---------------+
|
v
+-----------------------------+
| Capa de aplicación |
| PHP / Python / Java |
+-------------+---------------+
|
v
+-----------------------------+
| Capa de datos |
| MariaDB / MySQL |
+-----------------------------+
A separación entre capas facilita:
- o mantemento
- a actualización
- a seguridade
- a escalabilidade
- a organización do código
8. Arquitectura cliente-servidor
As aplicacións web baséanse habitualmente no modelo cliente-servidor.
O cliente solicita un servizo e o servidor responde.
8.1. Cliente
O cliente pode ser:
- un navegador web
- unha aplicación móbil
- outro programa
- un sistema automatizado
8.2. Servidor
O servidor recibe peticións e proporciona os servizos correspondentes.
Nunha aplicación web podemos ter varios servidores lóxicos ou físicos:
- servidor web;
- servidor de aplicacións;
- servidor de bases de datos;
- servidor de ficheiros;
- servidor DNS;
- servidor de autenticación.
Nun contorno pequeno todos poden estar instalados na mesma máquina.
Nunha infraestrutura máis grande poden estar separados.
9. HTTP e HTTPS
A comunicación habitual entre navegador e servidor web baséase no protocolo HTTP.
Exemplo conceptual:
Cliente Servidor
| |
| ---- petición HTTP ------> |
| |
| <---- resposta HTTP ------ |
| |
A resposta pode conter:
- código de estado;
- cabeceiras;
- HTML;
- CSS;
- JavaScript;
- imaxes;
- outros datos.
HTTPS é HTTP utilizando unha conexión protexida mediante TLS.
O seu uso permite protexer a comunicación e reducir o risco de que os datos sexan interceptados ou modificados durante o transporte.
10. Análise de requisitos
Antes de instalar software debemos coñecer que necesita a aplicación.
Isto denomínase análise de requisitos.
Algúns aspectos que debemos analizar son:
- sistema operativo
- hardware dispoñible (memoria RAM, capacidade de almacenamento)
- software necesario
- versións compatibles
- base de datos necesaria
- linguaxe empregada
- versión do servidor web
- permisos
- usuarios
- necesidades de seguridade, conectividade e disponibilidade
10.1. Exemplo de análise
Imaginemos que queremos instalar unha aplicación web baseada en PHP e MariaDB.
Necesitaremos, como mínimo, comprobar:
| Elemento | Necesidade |
|---|---|
| Sistema operativo | Linux ou outro sistema. |
| Servidor web | Apache ou outro (nginx, IIS). |
| Linguaxe | PHP. |
| Base de datos | MariaDB/MySQL. |
| Cliente | Navegador web. |
| Rede | Conectividade entre cliente e servidor. |
| Seguridade | Control de usuarios, permisos e acceso á aplicación. |
11. Servidor web
Un servidor web é un software encargado de recibir peticións HTTP/HTTPS e proporcionar os recursos solicitados.
Entre os servidores web máis coñecidos están:
- Apache HTTP Server.
- Nginx.
- Microsoft IIS.
Nesta unidade traballaremos fundamentalmente con Apache.
11.1. Funcións dun servidor web
Un servidor web pode:
- recibir peticións HTTP
- entregar ficheiros estáticos
- executar ou delegar o procesamento de aplicacións
- xestionar sitios virtuais
- controlar acceso a recursos
- rexistrar actividade
- utilizar módulos
- traballar con HTTPS
11.2. Document root
O document root é o directorio a partir do cal se serven os ficheiros dun sitio web.
Por exemplo, un servidor pode conter:
/var/www/html/
├── index.html
├── css/
├── js/
└── imaxes/
Cando o cliente solicita determinada URL, Apache busca o recurso correspondente no sitio configurado.
12. Apache e módulos
Apache dispón dunha arquitectura baseada en módulos.
Un módulo permite engadir determinadas funcionalidades ao servidor.
Por exemplo, poden existir módulos relacionados con:
- autenticación
- reescritura de URLs
- SSL/TLS
- linguaxes de servidor
- rexistro
- compresión
- control de acceso
Esta arquitectura permite adaptar Apache ás necesidades da aplicación.
Na práctica realizada nesta unidade accedemos ao módulo de Apache de Webmin e comprobamos as opcións de administración dispoñibles.
13. Sistema xestor de bases de datos
As aplicacións web normalmente necesitan almacenar información.
Para iso utilizamos un Sistema Xestor de Bases de Datos (SXBD ou SGBD).
Un SXBD permite:
- almacenar/consultar/modificar/eliminar datos
- controlar usuarios e aplicar permisos
- manter a integridade da información
Na unidade utilizamos MariaDB/MySQL.
13.1. Base de datos relacional
MariaDB e MySQL son sistemas de xestión de bases de datos relacionais.
A información organízase mediante:
- bases de datos
- táboas
- rexistros
- campos
- relacións
Exemplo:
Base de datos: instituto
Táboa: alumnos
+----+---------+-----------+
| id | nome | apelidos |
+----+---------+-----------+
| 1 | Ana | García |
| 2 | Xoán | López |
+----+---------+-----------+
As aplicacións web poden acceder a esta información mediante querys (consultas) SQL.
14. Acceso da aplicación á base de datos
Unha aplicación web pode consultar unha base de datos para realizar operacións como:
- comprobar credenciais
- mostrar produtos
- gardar pedidos
- consultar notas
- almacenar publicacións
- xestionar usuarios
Un exemplo conceptual sería:
Navegador
|
v
Aplicación web
|
| consulta SQL
v
MariaDB
|
| resultados
v
Aplicación web
|
v
Navegador
É importante comprender que o navegador normalmente non se conecta directamente á base de datos.
Habitualmente é a aplicación que se executa no servidor a que realiza as consultas.
15. Procesamento no cliente e no servidor
Un dos conceptos fundamentais desta unidade é distinguir onde se executa cada parte do código.
15.1. Procesamento no cliente
Execútase no navegador.
Exemplo habitual:
alert("Ola mundo");
O código JavaScript é enviado ao navegador e executado no equipo do usuario.
15.2. Procesamento no servidor
Execútase no servidor.
Por exemplo:
<?php
echo "Ola mundo";
?>
Neste caso o servidor executa PHP.
O usuario non recibe necesariamente o código PHP.
Recibe o resultado da súa execución.
15.3. Comparación
| Cliente | Servidor |
|---|---|
| Executa o navegador | Executa o servidor |
| HTML | PHP, Python, Java, etc. |
| CSS | Acceso a bases de datos |
| JavaScript | Lóxica de aplicación |
| Interacción coa interface | Procesamento e persistencia |
16. PHP
PHP é unha linguaxe de programación utilizada tradicionalmente no desenvolvemento de aplicacións web.
Nunha infraestrutura LAMP, PHP permite executar código no servidor.
O fluxo simplificado é:
1. O navegador solicita unha páxina PHP.
2. Apache recibe a petición.
3. O servidor entrega o código ao intérprete de PHP.
4. PHP executa o código.
5. Xérase unha resposta.
6. Apache devolve a resposta ao navegador.
Un exemplo mínimo:
<?php
echo "<h1>Ola desde PHP</h1>";
?>
16.1. phpinfo()
Unha das probas máis sinxelas para comprobar que PHP funciona correctamente é utilizar a función:
<?php
phpinfo();
?>
Esta función mostra información sobre a instalación de PHP e a súa configuración.
Na práctica da unidade utilizamos este mecanismo para comprobar que Apache podía interpretar correctamente código PHP.
17. A pila LAMP
A pila LAMP é unha combinación de tecnoloxías moi utilizada para executar aplicacións web.
| Letra | Compoñente | Función |
|---|---|---|
| L | Linux | Sistema operativo. |
| A | Apache | Servidor web. |
| M | MariaDB/MySQL | Sistema xestor de bases de datos. |
| P | PHP | Linguaxe de programación do lado servidor. |
A idea fundamental non é simplemente coñecer os compoñentes por separado, senón entender como se integran.
17.1. Funcionamento da pila LAMP
USUARIO
|
v
NAVEGADOR WEB
|
HTTP
|
v
APACHE
|
v
PHP
|
+------+------+
| |
v |
MARIA DB <-------+
|
v
DATOS
Unha aplicación web pode, por exemplo:
- recibir unha petición desde o navegador;
- procesar os datos con PHP;
- consultar MariaDB;
- xerar HTML;
- devolver o resultado ao navegador.
18. Webmin
Webmin é unha ferramenta de administración de sistemas accesible mediante interface web.
Permite administrar diferentes aspectos dun sistema desde un navegador.
Entre outras posibilidades, pode facilitar:
- administración de usuarios;
- configuración de servizos;
- administración de Apache;
- configuración de rede;
- xestión de determinados paquetes e servizos;
- consulta de información do sistema.
O uso de Webmin non elimina a necesidade de coñecer Linux e os seus comandos.
É importante entender a relación entre:
INTERFACE WEB
|
v
WEBMIN
|
v
SISTEMA OPERATIVO
|
+---- Apache
|
+---- MariaDB
|
+---- Usuarios
|
+---- Rede
19. Máquina virtual
Durante a práctica utilizamos unha máquina virtual para dispoñer dun servidor Linux independente do sistema anfitrión.
A virtualización permite executar un sistema operativo convidado dentro doutro sistema operativo.
19.1. Conceptos fundamentais
| Termo | Significado |
|---|---|
| Máquina anfitrioa | Equipo físico onde se executa a virtualización. |
| Máquina virtual | Equipo virtual executado sobre o anfitrión. |
| Sistema anfitrión | Sistema operativo principal. |
| Sistema convidado | Sistema operativo instalado dentro da máquina virtual. |
| Hipervisor | Software encargado de executar e xestionar máquinas virtuais. |
Exemplos de software de virtualización son:
- VirtualBox
- VMware Workstation
- Hyper-V
- KVM/QEMU
Na práctica da unidade empregamos VirtualBox (e tamén tedes instalado e podedes usar VMWare Workstation Pro).
20. Configuración dunha máquina virtual
Antes de instalar os servizos debemos preparar adecuadamente a máquina virtual.
Entre os parámetros que podemos configurar están:
- número de procesadores virtuais
- memoria RAM
- disco
- rede
- dispositivos
- teclado
- resolución
- nome da máquina
- integración co sistema anfitrión
- ...
Unha configuración inadecuada pode producir problemas de rendemento.
Por exemplo, asignar demasiada memoria á máquina virtual pode deixar sen recursos o sistema anfitrión.
21. Integridade dos ficheiros descargados
Un administrador de sistemas non debería instalar software descargado de forma indiscriminada.
É importante poder comprobar que o ficheiro recibido corresponde realmente ao publicado polo provedor e que non foi alterado.
Un mecanismo habitual é utilizar funcións hash.
21.1. SHA-256
SHA-256 é unha función que produce un valor de resumo a partir dun ficheiro.
Se dous ficheiros son exactamente iguais, producirán o mesmo hash.
Exemplo:
sha256sum webmin-package.deb
O resultado pode ser comparado co valor SHA-256 publicado polo fabricante ou provedor.
21.2. Para que serve?
A comprobación de integridade permite detectar, entre outras situacións:
- ficheiros corrompidos
- descargas incompletas
- modificacións do ficheiro
- discrepancias entre o ficheiro descargado e o esperado
Importante:
Unha suma hash permite comprobar a integridade, pero por si soa non garante sempre a autenticidade do ficheiro. Para cuestións de autenticidade poden utilizarse tamén mecanismos de sinatura dixital.
22. Usuarios, permisos e administración
Os sistemas Linux utilizan usuarios e grupos para controlar o acceso aos recursos.
É fundamental distinguir entre:
- usuario normal
- usuario con privilegios administrativos
- grupo
- propietario dun ficheiro
- permisos de lectura/escritura/execución
As aplicacións web executaranse habitualmente baixo determinadas identidades e necesitarán acceder a ficheiros e directorios concretos.
Unha mala configuración dos permisos pode converterse nun problema de seguridade.
23. Seguridade básica do servidor web
A seguridade debe considerarse desde o momento da instalación.
Algunhas medidas básicas son:
- manter o sistema actualizado
- utilizar contrasinais seguros
- limitar os privilexios dos usuarios
- evitar servizos innecesarios
- limitar o acceso á administración
- utilizar HTTPS cando corresponda
- controlar os permisos dos ficheiros
- revisar os rexistros
- realizar copias de seguridade
- evitar expoñer innecesariamente servizos á rede
23.1. Webmin e seguridade
Unha ferramenta de administración como Webmin proporciona un acceso moi potente ao servidor.
Por ese motivo, debe protexerse especialmente.
Debemos prestar atención a:
- credenciais;
- direccións desde as que se permite o acceso;
- uso de HTTPS;
- actualización da ferramenta;
- configuración dos usuarios;
- exposición do porto de administración.
Unha interface web de administración non debería considerarse menos importante que unha conexión SSH: ambas proporcionan capacidade de administración do sistema.
24. Rexistros e resolución de problemas
Cando un servizo non funciona, unha das primeiras ferramentas dun administrador son os logs ou rexistros.
Os rexistros poden axudarnos a descubrir:
- erros de configuración
- intentos de acceso
- problemas de permisos
- peticións HTTP
- erros da aplicación
- fallos de conexión
- problemas de arranque dun servizo
- ...
A administración de sistemas non consiste simplemente en instalar software, senón tamén en saber comprobar por que unha configuración funciona ou falla.
25. Utilidades de proba
Para verificar unha instalación debemos realizar probas.
Exemplos:
| Proba | Que comprobamos |
|---|---|
| Abrir a páxina web | Apache responde. |
| Consultar unha páxina PHP | PHP está correctamente integrado. |
| Acceder a MariaDB | A base de datos está instalada e accesible. |
| Acceder a Webmin | O servizo de administración funciona. |
| Consultar os logs | Podemos analizar incidencias. |
| Verificar o estado do servizo | O servizo está activo. |
A instalación non debe darse por correcta simplemente porque o paquete se instalou.
Debemos comprobar o funcionamento real.
26. Instalación integrada e ferramentas de administración
No desenvolvemento e despregamento de aplicacións web é frecuente utilizar ferramentas que integran ou facilitan distintas tarefas.
Exemplos:
- Webmin
- XAMPP
- Docker
- contornos de desenvolvemento integrados
- ferramentas de automatización
- paneis de control
Neste módulo utilizaremos progresivamente diferentes tecnoloxías e veremos que algunhas facilitan a instalación e administración, mentres outras están máis orientadas ao despregamento ou automatización.
27. Caso práctico: preparar un servidor web
Unha tarefa típica dun administrador podería ser:
Necesítase preparar un servidor Linux para posteriormente instalar unha aplicación web baseada en PHP e MariaDB.
Un posible procedemento sería:
- Crear ou preparar unha máquina virtual.
- Configurar correctamente os seus recursos.
- Instalar ou dispor dun sistema Linux.
- Comprobar a conectividade de rede.
- Instalar Webmin.
- Acceder ao panel de administración.
- Crear ou configurar usuarios.
- Instalar Apache.
- Comprobar que Apache responde.
- Instalar MariaDB.
- Comprobar o acceso á base de datos.
- Instalar PHP.
- Integrar PHP con Apache.
- Crear unha páxina de proba.
- Verificar o resultado.
- Revisar a configuración e a seguridade.
- Documentar o procedemento.
Este proceso representa unha primeira aproximación ao traballo real dun administrador de sistemas.
28. Relación coa práctica realizada
Na práctica da UD1 traballamos sobre unha máquina virtual con Linux e realizamos diferentes tarefas relacionadas coa preparación dun servidor.
As principais tarefas foron:
| Parte | Traballo realizado |
|---|---|
| 1.1 | Uso e configuración dunha máquina virtual. |
| 1.2 | Instalación de Webmin e comprobación do acceso ao panel. |
| 1.3 | Descarga manual e comprobación da integridade mediante SHA-256. |
| 1.4 | Creación dun usuario mediante Webmin. |
| 1.5 | Acceso e administración de Apache desde Webmin. |
| 1.6 | Instalación de MariaDB/MySQL e comprobación do acceso. |
| 1.7 | Configuración de Apache para interpretar PHP e comprobación mediante phpinfo(). |
Na tarefa tamén se pediu documentar o traballo mediante capturas de pantalla, responder cuestións e realizar unha autoavaliación.
29. Problemas habituais
Ao preparar unha infraestrutura web poden aparecer numerosos problemas.
Apache non responde
Posibles causas:
- o servizo non está iniciado
- Apache non está instalado
- existe un erro de configuración
- o porto utilizado está ocupado
- existe un problema de rede
- un firewall está bloqueando o acceso
PHP non funciona
Posibles causas:
- PHP non está instalado
- existe un erro na configuración
- o ficheiro non ten extensión adecuada
- existe un problema de permisos
- conflitos entre distintas versións de PHP
Non se pode acceder a MariaDB
Posibles causas:
- o servizo non está iniciado
- credenciais incorrectas
- usuario sen permisos
- configuración incorrecta
- problema de conectividade
Webmin non permite administrar un servizo
Pode ocorrer porque:
- o servizo non está instalado
- o módulo non está correctamente configurado
- os permisos non son suficientes.
30. Metodoloxía de resolución de problemas
Ante un problema non debemos cambiar configuracións ao azar.
Unha metodoloxía razoable é:
- Identificar o problema.
- Reproducilo.
- Observar os síntomas.
- Revisar os logs.
- Comprobar o estado dos servizos.
- Revisar a configuración.
- Realizar un cambio controlado.
- Probar de novo.
- Documentar a solución.
Esta metodoloxía será especialmente importante nas seguintes unidades.
31. Documentación técnica
Un administrador debe documentar os cambios realizados.
Unha documentación mínima debería indicar:
- que se instalou;
- que versión se utilizou;
- que comandos se executaron;
- que ficheiros se modificaron;
- que configuración se aplicou;
- que probas se realizaron;
- que problemas apareceron;
- como se solucionaron.
Un exemplo:
Data:
16/09/2026
Servizo:
Apache
Modificación:
Instalación do servidor web.
Proba:
Acceso mediante navegador á páxina inicial.
Resultado:
Correcto.
Observacións:
O servizo queda configurado para continuar coa integración de PHP.
A documentación permite:
- repetir unha instalación
- recuperar unha configuración
- solucionar problemas
- compartir coñecementos
- facilitar o mantemento
32. Conceptos que debes dominar
Ao finalizar a UD1 deberías poder explicar con palabras propias os seguintes conceptos:
- aplicación web
- cliente
- servidor
- arquitectura cliente-servidor
- arquitectura multicapa
- aplicación estática
- aplicación dinámica
- HTML
- CSS
- JavaScript
- PHP
- servidor web
- Apache
- base de datos
- SGBD
- MariaDB
- MySQL
- SQL
- Webmin
- máquina virtual
- anfitrión
- convidado
- hipervisor
- LAMP
- HTTP
- HTTPS
- módulo
- usuario
- permisos
- logs
- hash
- SHA-256
- integridade
- análise de requisitos
33. Resumo da unidade
Unha aplicación web está formada por diferentes compoñentes que colaboran para ofrecer un servizo ao usuario.
Nunha infraestrutura típica:
USUARIO
|
v
NAVEGADOR
|
| HTTP/HTTPS
v
SERVIDOR WEB
|
v
LÓXICA DA APLICACIÓN
|
v
BASE DE DATOS
Nun contorno LAMP podemos utilizar:
- Linux como sistema operativo;
- Apache como servidor web;
- MariaDB/MySQL como sistema xestor de bases de datos;
- PHP como tecnoloxía de procesamento no servidor.
Webmin permite administrar parte da infraestrutura mediante unha interface web.
A preparación correcta dun servidor implica moito máis que instalar paquetes. É necesario:
- analizar os requisitos
- instalar os compoñentes necesarios
- configurar os servizos
- comprobar o seu funcionamento
- aplicar medidas básicas de seguridade
- solucionar incidencias
- documentar o traballo
34. Preguntas para comprobar os coñecementos
- Que é unha aplicación web?
- Que diferenza existe entre unha aplicación estática e unha dinámica?
- Que función desempeña un navegador?
- Que é un servidor web?
- Que función desempeña Apache?
- Que é unha arquitectura cliente-servidor?
- Que significa arquitectura multicapa?
- Que diferenza existe entre o procesamento no cliente e o procesamento no servidor?
- Para que serve PHP?
- Para que serve MariaDB?
- Que é un SGBD?
- Que significa LAMP?
- Que función desempeña Webmin?
- Que vantaxes ofrece unha máquina virtual nun contorno de prácticas?
- Que é un hash?
- Para que podemos utilizar SHA-256?
- Que diferenza existe entre integridade e autenticidade?
- Por que debemos comprobar que un servizo está funcionando despois da súa instalación?
- Que información podemos obter dos logs?
- Por que é importante documentar os procedementos realizados?
- Que relación existe entre Apache, PHP e MariaDB nunha aplicación web?
35. Esquema final para memorizar
APLICACIÓN WEB
|
+-------------+-------------+
| |
LADO CLIENTE LADO SERVIDOR
| |
HTML/CSS SERVIDOR WEB
JavaScript |
PHP
|
MARIA DB
|
DATOS
INFRAESTRUTURA DE APOIO
+-------------------------------+
| Linux |
| Apache |
| MariaDB/MySQL |
| PHP |
| Webmin |
| Usuarios e permisos |
| Rede e seguridade |
| Logs e monitorización |
+-------------------------------+
Idea fundamental da UD1:
Para executar correctamente unha aplicación web non abonda con desenvolver o código. É necesario preparar, configurar, integrar, probar e asegurar o contorno no que esa aplicación vai funcionar.