====== 2. Administración de Servidores Web ======
===== Tipos de Servidores Web =====
Hay dos grandes tipos de servidores web:
* Servidores Web externos: Son programas completos que hacen de servidor Web. Una vez instalados/ejecutados se añade el código específico de la aplicación en la carpeta del servidor que indique la documentación
* Servidores web integrados (o librerías de Servidores web): Se hace una aplicación (por ejemplo en Java) y se añade como una librería (un JAR) , el código del Servidor Web.
===== Servidores Web externos =====
Para ver como funcionan los servidores Web Externos vamos a explicar dos de ellos:
* Apache HTTP Server Project
* nginx
==== Apache HTTP Server Project ====
Este servidor Web es un proyecto de una fundación sin ánimo de lucro llamada [[https://www.apache.org/|Apache Software Fundation]]. El proyecto del servidor web se llama [[https://httpd.apache.org/|Apache HTTP Server Project]] por lo que a veces se confunde el nombre del servidor con el nombre de la fundación.
* **Instalacion**:Para usar el servidor Apache solo hay que descargarselo y ejecutar el programa "/bin/httpd.exe"
* **Despliegue**:Para desplegar páginas web en Apache solo hay que copiarlas en la carpeta "htdocs"
* **Configuración/administración**:Para configurar/administrar el servidor hay que modificar los ficheros de la carpeta "conf"
==== nginx ====
nginx es un servidor web que podemos descargar desde [[http://nginx.org/]].
* **Instalacion**:Para usar el servidor nginx solo hay que descargarselo y ejecutar el programa "nginx.exe"
* **Despliegue**:Para desplegar páginas web en nginx solo hay que copiarlas en la carpeta "html"
* **Configuración/administración**:Para configurar/administrar el servidor hay que modificar los ficheros de la carpeta "conf"
===== Servidores web integrados =====
Pasemos ahora a ver como es un servidor web integrado. Para entenderlo vamos a usar el lenguaje NodeJS como ejemplo y la librería que tendrá el servidor será [[https://expressjs.com/es/|Express]]
* Instalar paquete express:
npm install express
* Ejemplo básico: [[http://expressjs.com/es/starter/hello-world.html|Ejemplo Hello world]]. Crear el fichero "index.js" con el siguiente contenido.
#!/usr/bin/env node
const express = require('express')
const app = express()
const port = 8080
app.get('/', (request, response) => {
response.send('Hello from Express!')
})
app.listen(port, (err) => {
console.log(`server is listening on ${port}`)
})
Ahora debemos ejecutar el fichero index.js
node index.js
Y si navegamos a [[http://localhost:8080]] veremos el texto "Hello from Express!"
* Servir páginas estáticas: [[http://www.tutorialsteacher.com/nodejs/serving-static-files-in-nodejs|Serving Static Resources in Node.js]]. Deberemos crear dentro del proyecto la carpeta "html" y ahí crear el fichero "index.html". Crear el fichero "index.js" con el siguiente contenido.
#!/usr/bin/env node
const express = require('express')
const app = express()
const port = 8080
app.get('/', (request, response) => {
response.send('Hello from Express!')
})
app.use('/html', express.static(__dirname + '/html'));
app.listen(port, (err) => {
console.log(`server is listening on ${port}`)
})
Ahora debemos ejecutar el fichero index.js
node index.js
Y si navegamos a [[http://localhost:8080/html/index.html]] veremos la página que hemos creado.
===== Ejercicios =====
==== Ejercicio 1 ====
Haz las siguientes tareas:
* Instala el servidor web Apache
* Despliega en el servidor una página llamada "/ventas/mensuales.html" que muestre el título "Ventas Mensuales en Apache"
* Modifica el servidor de forma que escuche en el puerto 1111.
* Inicia el servidor Apache
* Navega a [[http://localhost:1111/ventas/mensuales.html]] y comprueba que se muestra la página
==== Ejercicio 2 ====
Haz las siguientes tareas:
* Instala el servidor web nginx
* Despliega en el servidor una página llamada "/ventas/mensuales.html" que muestre el título "Ventas Mensuales en nginx"
* Modifica el servidor de forma que escuche en el puerto 2222.
* Inicia el servidor nginx
* Navega a [[http://localhost:2222/ventas/mensuales.html]] y comprueba que se muestra la página
==== Ejercicio 3 ====
Crea un servidor Node en el puerto 3333 y que retorne "Hola Mundo" en formato HTML con un
pero sin que exista físicamente el fichero html
==== Ejercicio 4 ====
Crea un servidor Node en el puerto 4444 y que retorne "Hola Mundo" en una página HTML que estará en la URL /site/index.html y físicamente la página estará en la sistema de archivos en "paginas/index.html"