Instalación de servidores para aplicacións web 2
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 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:
```mediawiki
| 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 mediante diferentes plataformas.
- C# e 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;
- necesidades de conectividade.
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 SGBD permite:
- almacenar datos;
- consultar datos;
- modificar datos;
- eliminar datos;
- controlar usuarios;
- 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 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.
| | | | | | - | ------------- | - | ------------------------------------------ | | | Linux | | Sistema operativo. | | | | | | | | Apache | | Servidor web. | | | | | | | | MariaDB/MySQL | | Sistema xestor de bases de datos. | | | | | | | | 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:
18. WebminWebmin é 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:
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 virtualDurante 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
|