Mostrando las entradas con la etiqueta web2py. Mostrar todas las entradas
Mostrando las entradas con la etiqueta web2py. Mostrar todas las entradas

sábado, septiembre 12, 2020

Implementar web2py con gunicorn, Nginx y HTTPS

 Lo primero es tener descargado Web2py en la computadora, supondremos la siguiente ubicación:

  
   
/root/web2py/   
lo siguiente es instalar gunicorn
  
   
pip3 install gunicorn  
  
Ahora debemos ejecutar Web2py con Gunicorn, para esto usaremos anyserver.py de web2py y ejecutarlo en la ip local y el puerto 8000:
  
   
python3 /root/web2py/anyserver.py -s gunicorn -i 127.0.0.1 -p 8000 -w 3   
Probamos con el navegador a la direccion 127.0.0.1:8000 que nuestra aplicacion funciona con Gunicorn. Vericado esto detenemos esta ejecucion. Ahora vas a crear un servicio para ser gestionado por parte de systemd, para esto utilizamos el siguiente codigo:
  
   
nano /etc/systemd/system/web2py.service
  
  
   
[Unit]
Description=Instacion Gunicorn para web2py
After=network.target

[Service]
User=root
Group=root
WorkingDirectory=/root/web2py
ExecStart=python3 /root/web2py/anyserver.py -s gunicorn -i 127.0.0.1 -p 8000 -w 3

[Install]
WantedBy=multi-user.target
  
Ahora lo iniciamos con el siguiente comando:
  
   
systemctl start web2py
systemctl enable web2py
  
Y verificamos que todo este bien con:
  
   
systemctl status web2py
  

Instalar y configurar Nginx

 

Ya podemos comenzar a configurar Nginx Primero instalamos Nginx:


apt install nginx
  
Ahora creamos un archivo de configuracion para Nginx que realizara la llamada al servicio Gunicorn que corre en el puerto 8000:

nano /etc/nginx/sites-available/web2py
  

server {
    listen 80;
    server_name your_domain;

    location / {
        include proxy_params;
        proxy_pass http://127.0.0.1:8000;
    }
}  
Guarde y cierre el archivo al finalizar. Para habilitar la configuración del bloque de servidor de Nginx que acaba de crear, vincule el archivo al directorio sites-enabled:

ln -s /etc/nginx/sites-available/web2py /etc/nginx/sites-enabled
  
Verificamos que esto este bien con Nginx a traves del siguiente comando:

nginx -t
  
Si todo esta bien, reiniciamos Nginx:

systemctl restart nginx
  

Ya todo deberia estar listo y usando el navegador revisados el accesso al domino http://your_domain 

 

Activar HTTPS 

 

Vamos a usar certificados de Let’s Encrypt, los cuales son gratuitos y validos. Debemos instalar el cliente Certbot y su pligun para Nginx para esto:


apt install certbot python3-certbot-nginx
  
Ahora ejecutamos Certbot con el plugin de Nginx, esto realizara el cambio en la configuracion y reinicio de Nginx:

certbot --nginx -d your_domain
  
Debemos ir eligiendo las opciones y ya deberiamos estar listo, ahora ingresemos a https://your_domain

jueves, diciembre 19, 2013

Usar Web2py con servidor web embebido

En muchas situaciones podría ser útil utilizar Web2py sin un servidor web como Apache o Nginx, ya que no va haber mucha concurrencia de usuarios o por otros motivos, aqui les mostrare los pasos necesarios para realizar esto.

1.- Instalar Web2py

Esto lo puedes ver en http://cabildocl.blogspot.com/2013/12/instalacion-minima-de-web2py.html

2.- Crear certificados para utilizar HTTPS

Web2py no permite ingresar a la aplicacion admin si no es por HTTPS y para eso necesitamos generar las claves privadas y los certificados.

Generar clave privada

openssl genrsa -out server.key 2048

Creamos el certificado

openssl req -new -key server.key -out server.csr

Después auto firmamos el certificado

openssl x509 -req -day 3650 -in server.csr -signkey server.key -out server.crt


Ahora podemos arrancar web2py con el certificado creado

python web2py.py -c server.crt -k server.key --ip=0.0.0.0

Con esto podras entrar de manera remota a la administracion de web2py sin necesidad de servidor web externo.


Bonus

Como regalo les dejo un script simple que les permite controlar el arranque de web2py. Deben copiarlo en /etc/init.d/


 #! /bin/sh
# Script de inicio y arranque de web2py

case "$1" in
  start)
    echo "Starting web2py"
    # run application you want to start
    python /web2py/web2py.py -c server.crt -k server.key --ip=0.0.0.0 -a password &
    ;;
  stop)
    echo "Stopping web2py"
    # kill application you want to stop
    pkill -9 -f web2py
    ;;
  *)
    echo "Usage: /etc/init.d/web2py {start|stop}"
    exit 1
    ;;
esac

exit 0






domingo, diciembre 15, 2013

Instalacion minima de Web2py

Esta entrada mostrara como instalar y arrancar Web2py  con 5 simples pasos:

Paso 1: Instalar dependencias

sudo apt-get install python psycopg2   


Paso 2: Descargar fuentes

wget http://www.web2py.com/examples/static/web2py_src.zip


Paso 3: Descomprimir archivos

unzip web2p_src.zip 


Paso 4: Ingresar a la carpeta

cd web2py


Paso 5: Arrancar Web2py

python web2py.py

Ya estamos corriendo web2py!

 

viernes, septiembre 16, 2011

Grabar llamadas en Asterisk y administrarlas via Web



Aqui les mostre un pequeño sistema de grabacion hecho en Asterisk y con administracion Web. El diagrama del sistema es el siguiente:



Dialplan

En el dialplan necesitamos ejecutar la aplicacion MixMonitor la cual creara el archivo de audio de la llamada, esta sera guardar en un disco RAM, cuando concluye la grabacion ejecutamos el script grabacion y le entregamos varios datos entre ellos la ubicacion de la grabacion.

[grabacion]
;Prueba de grabacion
exten=>20,1,set(tiempo=${UNIQUEID})
exten=>20,n,set(GRABACION=/mnt/ramdisk/${tiempo}.wav)
exten=>20,n,set(LLAMANTE=${CALLERID(num)})
exten=>20,n,set(LLAMADO=${EXTEN})
exten=>20,n,set(FECHA=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
exten=>20,n,MixMonitor(/mnt/ramdisk/${tiempo}.wav||python /var/lib/asterisk/agi-bin/grabacion.agi ${LLAMANTE} ${LLAMADO} ${CDR(duration)} ${GRABACION})
exten=>20,n,Dial(SIP/${EXTEN},30,hrtT)
exten=>20,n,hangup()

Script

El Script se ejecuta al finalizar mixmonitor, y su trabajo en subir la informacion a la base de datos.

#!/usr/bin/python
#utilizaremos las librerias para manejo de SQL de Web2py
from gluon.sql import DAL, Field
import sys
# Definimos la base de datos
db=DAL("mysql://root:password@127.0.0.1/grabaciones")
# Definimos la tabla
db.define_table('trabajos',Field('llamante'),Field('llamado'),Field('fecha'),Field('grabacion','upload',uploadfolder='/home/www-data/web2py/applications/grabacion/uploads'),migrate=False)
llamante=sys.argv[1]
llamado=sys.argv[2]
fecha=sys.argv[3]
grabacion=sys.argv[4]
audiograbacion = open(grabacion,'rb')
# insertamos los datos en la base de datos
db.trabajos.insert(llamante=llamante,llamado=llamado,fecha=fecha,grabacion=db.trabajos.grabacion.store(audiograbacion,grabacion))
db.commit()

Aplicacion Web

Para realizar la aplicacion web utilizamos Web2py. Esta aplicacion lo que hace es conectarse a la misma base de datos que utiliza el script y asi se puede visualizar. Adjunto la aplicacion, eso si para utilizarla debes tener instalado Web2py.

Descarga Aplicacion