Skip to content

Latest commit

 

History

History
226 lines (140 loc) · 5.52 KB

README.md

File metadata and controls

226 lines (140 loc) · 5.52 KB

UT1. A4. Sirviendo Aplicaciones Php Y Python.

La actividad consiste en configurar 2 sitios web, Virtual Hosts, en nuestro Servidor Web Nginx.


Sitio Web 1.

Tenemos que mostrar la aplicación demo_php.zip. Para ello descargamos demo_php.zip.

imagen01

Copiamos el archivo comprimido demo_php.zip a la máquina de producción.

imagen02

Descomprimimos el archivo demo_php.zip.

imagen03

Comprobamos que se ha descomprimido el archivo.

imagen04

Ahora lo que hacemos es añadir el fichero de configuración de Nginx que tratará las peticiones que se hagan al nombre de dominio php.alu5904.me. Para ello vamos a la ruta /etc/nginx/sites-available/ y creamos el fichero demo.

imagen05

Ahora añadimos el contenido a demo.

imagen06

A continuación tenemos que enlazar el fichero que hemos creado para que esté disponible desde los sites-enabled. Para ello entramos a /etc/nginx/sites-enabled, hacemos un enlace simbólico y lo comprobamos.

imagen07

Por último, tenemos que recargar la configuración de Nginx para que los cambios surtan efecto, para ello utilizamos el comando systemctl reload nginx.

imagen08

Finalmente entramos desde un navegador a http://php.alu5904.me.

imagen09


Sitio Web 2.

Creamos un nuevo entorno virtual.

imagen10

Entramos dentro de nuestro entorno virtual.

imagen11

Dentro de nuestro entorno virtual instalamos el paquete pytz.

imagen12

Ahora dentro de nuestro entorno virtual creamos el directorio now.

imagen13

Entramos dentro de este directorio y creamos el fichero main.py.

imagen14

Ahora añadimos el siguiente contenido a main.py.

import datetime
import pytz
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    now = datetime.datetime.now(pytz.timezone("Atlantic/Canary"))
    return """
    <h1>Testing Python over Nginx</h1>
    <h2>In Canary Islands...</h2>
    Today is: {today}
    <br>
    Now is: {now}
    """.format(
        today=now.strftime("%d/%m/%Y"),
        now=now.strftime("%H:%Mh")
    )

imagen15

Creamos un fichero de configuración para uWSGI.

imagen16

Ahora añadimos el siguiente contenido a uwsgi.ini.

[uwsgi]
chdir = /home/alu5904/now
module = main:app
master = true
processes = 1
socket = /tmp/now.sock
chmod-socket = 666
vacuum = true

imagen17

Ahora tenemos que crear un pequeño script que será el encargado de activar el entorno virtual de nuestra aplicación y de lanzar el proceso uwsgi para que escuche peticiones en el socket especificado.

imagen18

Ahora añadimos el siguiente contenido a run.sh.

#!/bin/bash

source /home/alu5904/.virtualenvs/now/bin/activate
uwsgi --ini /home/alu5904/now/uwsgi.ini

imagen19

Ahora le damos permisos de ejecución al script que hemos creado.

imagen20

En este punto, podríamos lanzar el script run.sh sin tener que activar el entorno virtual previamente, ya que el propio script realiza esta tarea.

imagen21

Ahora lo que hacemos es añadir el fichero de configuración de Nginx que tratará las peticiones que se hagan al nombre de dominio now.alu5904.me. Para ello vamos a la ruta /etc/nginx/sites-available/ y creamos el fichero now.

imagen22

Ahora añadimos el siguiente contenido a now.

server {
    server_name now.alu5904.me;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/tmp/now.sock;
    }

    location /static {
        root /home/alu5904/now;
    }
}

imagen23

A continuación tenemos que enlazar el fichero que hemos creado para que esté disponible desde los sites-enabled. Para ello entramos a /etc/nginx/sites-enabled, hacemos un enlace simbólico y lo comprobamos.

imagen24

Por último, tenemos que recargar la configuración de Nginx para que los cambios surtan efecto, para ello utilizamos el comando systemctl reload nginx.

imagen25

Para mantener nuestra aplicación "viva" y poder gestionar su arranque/parada de manera sencilla, necesitamos un proceso coordinador. Para este cometido, se ha desarrollado supervisor.

Comprobamos que el servicio está funcionando.

imagen26

Para que nuestro programa now sea gestionado por supervisor, debemos añadir un fichero de configuración.

imagen27

Ahora añadimos el siguiente contenido a now.conf.

[program:now]
user = alu5904
command = /home/alu5904/now/run.sh
autostart = true
autorestart = true
stopsignal = INT
killasgroup = true
stderr_logfile = /home/alu5904/now/now.err.log
stdout_logfile = /home/alu5904/now/now.out.log

imagen28

Reiniciamos el servicio del supervisor.

imagen29

Comprobamos que el servicio está funcionando con normalidad.

imagen30

Ahora, desde la máquina de producción, pero con un usuario no privilegiado, vemos que ya podemos hacer uso de la gestión de nuestros procesos.

imagen31

En este punto, podemos probar los siguientes comandos.

* supervisorctl status
* supervisorctl start now
* supervisorctl stop now
* supervisorctl restart now

imagen32

Finalmente entramos desde un navegador a http://now.alu5904.me.

imagen33