Python

La instancia de Simple Hosting Python le permite publicar aplicaciones web escritas en Python de forma fácil y económica.

Prerrequisitos

  • Familiaridad con el lenguaje de codificación Python y el protocolo WSGI
  • Su aplicación debe tener un punto de entrada WSGI
  • Debe estar familiarizado con Git.

Soporte de versiones

Al crear una nueva instancia de Python, actualmente tiene dos opciones:

  • 2.7 (incluye apoyo de 3.2)
  • 3.6

Si ha seleccionado una instancia de Python 2.7, para elegir la versión que desea utilizar para ejecutar su aplicación, consulte «Selección de la versión de Python» a continuación.

Uso Básico

Su aplicación Python debe contener al menos un archivo llamado wsgi.py, que a su vez debe contener el objeto de la aplicación, de acuerdo con el acuerdo PEP especificado aquí: http://www.python.org/dev/peps/pep-0333/#the-application-framework-side

Dominios

Un nombre de dominio está disponible para fines de prueba cuando se crea la instancia. Puede enlazar varios nombres de dominio y subdominios. Todos apuntarán a la misma base de código de la aplicación.

Ejemplo

Diseño del directorio

.
└── wsgi.py

wsgi.py:

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8')])
    return ['<!DOCTYPE html><html><meta charset="utf-8"><title>It works',
            '</title><h1>It works!</h1>']

Dependencias de la aplicación

Las dependencias de su aplicación tienen que ser instalables con pip, y deben ser especificadas en un archivo llamado requirements.txt.

Para que las dependencias se instalen automáticamente, necesita desplegar el código con Git.

Al desarrollar su aplicación en una computadora local, instale las dependencias con pip install. Luego, cuando su aplicación esté lista para entrar en producción, ejecute el siguiente comando localmente para generar un archivo que contenga todas las dependencias:

$ pip freeze > requirements.txt

Este comando rellenará el archivo requirements.txt con módulos y dependencias basadas en los que tenga instalados en su entorno de desarrollo. Debe usar Git para confirmar y empujar este archivo a la instancia para que sea usado. Las dependencias se instalarán cuando despliegue la aplicación con SSH.

Para obtener más información, consulte:

http://www.pip-installer.org/en/latest/cookbook.html#requirements-files

Para más información sobre la implementación de tu aplicación con git+SSH, consulte la guía de git.

Selección de la versión de Python

Nota

Esta sección sólo se aplica a las instancias de Python 2.7 / 3.2.

Es posible elegir la versión de Python que desea utilizar para ejecutar su aplicación de entre las versiones disponibles que ofrecemos. Para ello, deberá especificar la versión de Python que desea utilizar en un archivo gandi.yml en la raíz del proyecto, en el campo python:

gandi.yml

python:
  version: 3.2

El ejemplo anterior forzará el uso de Python 3.2. Si el archivo existe pero no hay un campo python o en el caso de que el formato yaml no sea válido, se utilizará la versión por defecto. Si se especifica un valor no válido, la aplicación no se iniciará y se mostrará un mensaje de error en los registros de implementación de la aplicación y en los registros de inicio de la instancia.

Nota

Este archivo, al igual que todos los demás archivos que componen su proyecto, necesita ser rastreado por Git y enviado a su repositorio remoto de Simple Hosting antes de emitir el comando de despliegue.

Archivos estáticos

Coloque todo su contenido estático en directorios llamados /static/ o /media/, para que el servidor HTTPD Apache pueda detectarlos.

Registros (Logs)

La salida de error estándar de su aplicación se escribirá en los siguientes archivos del disco de su instancia:

  • desde la consola SSH: /srv/data/var/log/www/uwsgi.log
  • sobre SFTP: /lamp0/var/log/www/uwsgi.log

Puede utilizar estos archivos para supervisar el inicio correcto de su aplicación.

También tiene la opción de configurar el registrador para que se ajuste a sus necesidades. Añada un archivo llamado logging.ini a la raíz del proyecto para hacerlo.

Para obtener más información, consulte:

Ejemplos

Un ejemplo de una aplicación de Flask

https://github.com/crito/minitwit

Esquema del directorio

.
├── minitwit.py
├── requirements.txt
├── static/
├── templates/
└── wsgi.py

wsgi.py:

from minitwit import app as application

requirements.txt:

flask

Un ejemplo de Django

Esquema del directorio

.
├── media/
├── cms/
│   ├── manage.py
│   └── cms/
│       ├── init.py
│       ├── settings.py
│       ├── templates/
│       └── urls.py
├── requirements.txt
├── static/
└── wsgi.py

wsgi.py:

import sys
import os
import os.path

sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__),
                                                'cms')))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cms.settings')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

requirements.txt:

django-cms

Codificación de caracteres (Encoding)

Para habilitar el soporte de caracteres especiales en uwsgi, por ejemplo dentro de los nombres de archivo, agregue las siguientes declaraciones al archivo uwsgi.py:

os.environ['LC_ALL']="en_US.UTF-8"
os.environ['LC_LANG']="en_US.UTF-8"