Contenidos
Introducción
Un servidor web es un programa que implementa el protocolo HTTP (Hyper Text Transfer Protocol), este protocolo está diseñado para transferir páginas HTML.
Arquitectura cliente servidor
Para comprender el funcionamiento de los servicios de directorio hay que tener claro el concepto cliente y servidor. Un resumen simple sería que cuando un equipo cliente necesita un recurso lo tiene que hacer mediante una petición a otro equipo que podemos considerar que se trata de un servidor, ese servidor puede recibir peticiones de varios clientes.
La comunicación al final consiste en un intercambio de información entre el cliente y el servidor mediante un protocolo.
Algunos tipos de servidores, es una clasificación muy simple de lo que puede hacer un equipo que se comporta como un servidor:
- Archivos
- Impresión
- Correo electrónico
- Web
- FTP
- Proxy
Los servidores pueden estar dedicados a una función en concreta o no, además existe la posibilidad de realizar cualquier función de las anteriores y ser una estación de trabajo.
Ejemplo
Comunicación entre un cliente y un servidor mediante el protocolo UDP, el cliente manda un mensaje simple de «Hola» a la dirección IP del servidor que recibe el mensaje.
El servidor se mantiene escuchando en el puerto 2020:
1 2 3 4 5 6 7 | ##Server $port=2020 $endpoint = new-object System.Net.IPEndPoint ([IPAddress]::Any,$port) $udpclient=new-Object System.Net.Sockets.UdpClient $port $content=$udpclient.Receive([ref]$endpoint) [Text.Encoding]::ASCII.GetString($content) $udpclient.Dispose() |
El cliente envía un mensaje al puerto 2020 del servidor, tiene que indicar la dirección IP del servidor:
1 2 3 4 5 6 7 | ##Client $port=2020 $endpoint = new-object System.Net.IPEndPoint ([IPAddress]::Loopback,$port) $udpclient=new-Object System.Net.Sockets.UdpClient $b=[Text.Encoding]::ASCII.GetBytes('Hola') $bytesSent=$udpclient.Send($b,$b.length,$endpoint) $udpclient.Close() |
Más información
- https://www.jesusninoc.com/11/16/simular-el-funcionamiento-de-un-servidor-web-en-linux-y-realizar-una-peticion-desde-powershell/
- https://www.jesusninoc.com/02/27/simular-el-funcionamiento-de-un-servidor-web-utilizando-netcat/
- https://www.jesusninoc.com/06/02/crear-una-comunicacion-entre-un-cliente-en-powershell-de-windows-y-un-servidor-en-node-js-utilizando-tcp-ip/
Arquitectura de tres niveles
Bases de datos
Los sistemas gestores de bases de datos son programas informáticos que sirven para manejar base de datos, existen sistemas gestores libres y no libres.
Uno de los sistemas más utilizado en aplicaciones web es MySQL, se distribuye bajo dos licencias. Los usuarios pueden elegir entre usar el software MySQL como un producto Open Source bajo los términos de la licencia GNU General Public License. Se puede instalar en plataformas Linux, Windows, Mac OS, Solaris, etc., es compatible con servidores web como Apache, IIS, etc.
Ejercicios
Practicar la consulta e inserción de datos en una Base de Datos MySQL desde PowerShell (enlaces sobre los que trabajar)
- https://www.jesusninoc.com/12/27/conectar-powershell-con-mysql/
- https://www.jesusninoc.com/03/18/arrancar-y-conectar-a-mysql-desde-powershell/
- https://www.jesusninoc.com/01/11/crear-una-base-de-datos-en-mysql-con-powershell/
- https://www.jesusninoc.com/01/13/crear-una-tabla-en-una-base-de-datos-en-mysql-con-powershell/
- https://www.jesusninoc.com/01/17/insertar-valores-en-una-tabla-de-una-base-de-datos-en-mysql-con-powershell/
- https://www.jesusninoc.com/01/19/ver-valores-insertados-en-una-tabla-de-una-base-de-datos-en-mysql-con-powershell/
Almacenar la información enviada entre un cliente y un servidor en una base de datos MySQL con PowerShell (es un ejercicio bastante completo)
Protocolos de aplicación más usados
HTTP
El Protocolo de transferencia de hipertexto es el protocolo de comunicación que permite las transferencias de información a través de archivos en la World Wide Web.
Ejemplo
Crear un servidor web al que se pueda acceder desde cualquier parte de la red privada con PowerShell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | $routes = @{ "/" = { return 'Servidor web funcionando' } } #Importante poner la IP de la red privada $url = 'http://192.168.1.157:8080/' $listener = New-Object System.Net.HttpListener $listener.Prefixes.Add($url) $listener.Start() Write-Host "Funcionando $url..." while ($listener.IsListening) { $context = $listener.GetContext() $requestUrl = $context.Request.Url $con $response = $context.Response Write-Host '' Write-Host "Petición: $requestUrl" $localPath = $requestUrl.LocalPath $route = $routes.Get_Item($requestUrl.LocalPath) if ($route -eq $null) { $response.StatusCode = 404 } else { $content = & $route $buffer = [System.Text.Encoding]::UTF8.GetBytes($content) $response.ContentLength64 = $buffer.Length $response.OutputStream.Write($buffer, 0, $buffer.Length) } $response.Close() $responseStatus = $response.StatusCode Write-Host "Respuesta: $responseStatus" } |

HTTPS
El Protocolo seguro de transferencia de hipertexto (en inglés, Hypertext Transfer Protocol Secure o HTTPS) es un protocolo de aplicación basado en el protocolo HTTP, destinado a la transferencia segura de datos de hipertexto, es decir, es la versión segura de HTTP.
Instalación y configuración de un servidor web
En Linux que es un sistema operativo libre el servidor web más utilizado es Apache, es un programa de código abierto y normalmente viene instalado por defecto en cualquier distribución de Linux.
En Windows que es un sistema operativo propietario el servidor web más utilizado es IIS (Internet Information Services), IIS viene integrado en las versiones de Windows Server.
Los elementos que afectan a la configuración de un servidor son el arranque y parada del servidor, los ficheros de configuración, las carpetas donde se almacenan los ficheros a los que van a tener acceso los usuarios cuando teclean una dirección en el navegador. Estos son los principales elementos que tenemos que tener en cuenta a la hora de configurar los servidores.
La configuración de arranque sirve para poner en funcionamiento el servidor y la parada sirve para detener el servidor. El fichero de configuración básica en Apache es el apache2.conf y es el que tiene la configuración principal de Apache. En IIS la configuración básica se realiza por medio de un interfaz gráfico desde el que podemos gestionar todos los servicios del IIS.
Lenguajes de «script» del cliente
Los lenguaje de script son lenguajes de programación que sirven para crear programas que realizan acciones dentro de una página web como por ejemplo cambiar dinámicamente el contenido de un documento, modificar el comportamiento normal del navegador, validar formularios, realizar pequeños trucos visuales, etc.
HTML
HTML, siglas en inglés de HyperText Markup Language, hace referencia al lenguaje de marcado para la elaboración de páginas web.
Modelo de objetos del documento DOM
Document Object Model o DOM es esencialmente una interfaz de plataforma que proporciona un conjunto estándar de objetos para representar documentos HTML, XHTML y XML, un modelo estándar sobre cómo pueden combinarse dichos objetos, y una interfaz estándar para acceder a ellos y manipularlos.
JavaScript
JavaScript es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico.
Lenguajes de «script» de servidor
Los primeros servidores web permitían trabajar con información estática, es decir, la información permanecía invariable hasta que volvíamos hacer una petición al servidor. La primera solución técnica que se realizó fue utilizar aplicaciones que estaban instaladas en el propio servidor, esta tecnología, conocida como Common Gateway Interface (CGI) permitía lanzar programas escritos en C o Perl para refrescar la información y que fuera un poco más dinámica.
PHP
PHP es un lenguaje de programación de uso general que se adapta especialmente al desarrollo web. Fue creado inicialmente por el programador danés-canadiense Rasmus Lerdorf en 1994. En la actualidad, la implementación de referencia de PHP es producida por The PHP Group.
Almacenamiento
Consiste en mantener datos en el sistema de archivos del servidor.
Ejercicio
POST
Se puede usar para enviar texto normal así como datos binarios (archivos, imágenes…). PHP proporciona el array asociativo $_POST para acceder a la información enviada.
Ejercicios
- https://www.jesusninoc.com/05/24/crear-un-sistema-en-php-que-permita-almacenar-cuatro-valores-longitud-latitud-altitud-y-velocidad-en-un-fichero-con-el-metodo-post/
- https://www.jesusninoc.com/05/24/crear-un-sistema-que-permita-almacenar-en-un-fichero-de-un-servidor-la-longitud-latitud-altitud-y-velocidad-de-un-telefono-android-mediante-el-gps/
WordPress
WordPress es un sistema de gestión de contenidos lanzado el 27 de mayo de 2003, enfocado a la creación de cualquier tipo de página web. Originalmente alcanzó una gran popularidad en la creación de blogs, para luego convertirse en una de las principales herramientas para la creación de páginas web comerciales.
Instalación
Más información
Seguridad
Los administradores deben tomar precauciones a la hora de instalar y mantener los gestores de contenidos, si las medidas de seguridad no son apropiadas el gestor podrá ser atacado.
Algunas medidas de seguridad básicas para los gestores de contenidos:
- Actualizar el gestor de contenidos cada vez que aparezca una versión nueva.
- Cambiar las contraseñas con frecuencia
- Utilizar contraseñas complejas, mezclar en las contraseñas minúsculas, mayúsculas, números y símbolos.
- Establecer correctamente los permisos a los usuarios del gestor.
- Controlar los plugins, desactivar los que no se utilicen y estar al día de los fallos que tienen los plugins.
- Asignar correctamente los permisos a los ficheros que componen el gestor.
- Realizar copias de seguridad con frecuencia.
- Ocultar el número de la versión del gestor, los fallos de los gestores afectan a versiones concretas, aunque en algunos casos puede afectar a todas las versiones.
- Utilizar un sistema de prevención y detección de intrusos para bloquear cadenas HTTP maliciosas.
Cuando elegimos un gestor de contenidos sería bueno considerar si dispone de procedimientos para cumplir estas medidas de seguridad.
Usuarios
Para que un sitio web tenga éxito es preciso que los usuarios se involucren en el proyecto y que participen en la publicación de contenidos. No todos los usuarios que acceden al gestor de contenidos pueden crear artículos por este motivo se definen permisos, los permisos sirven para dar acceso al usuario a un determinado contenido.
Más información
Plugins
Permiten añadir nuevas funcionalidades.
Más información
Sindicación de contenidos
La difusión de contenido se realiza por medio del formato RSS (siglas de Really Simple Syndication) es un sistema de distribución de contenido a través de canales web, es otra forma de ver un sitio web, en vez de ver páginas HTML vemos un fichero en formato XML.
Más información
SEO
El posicionamiento en buscadores, optimización en motores de búsqueda o SEO, es un conjunto de acciones orientadas a mejorar el posicionamiento de un sitio web en la lista de resultados de Google, Bing, u otros buscadores de internet.