Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Virtualenv
1. Despliegue de aplicaciones Python usando
VirtualEnv
Virtualenv - Pip - Fabric
Oscar Javier Moreno Rey
Campus Party Colombia
23 de junio de 2011
2. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Contenidos
1 Algunos requerimientos en el despliegue de aplicaciones.
2 Una buena soluci´n (Virtualenv).
o
3 Usando Virtualenvwrapper.
4 Gesti´n de paquetes Python mediante Pip.
o
5 Ejecuci´n de tareas sobre SSH con Fabric.
o
6 Herramientas utilizadas como apoyo.
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
3. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Algunos problemas comunes
Al llevar a cabo las tareas de despliegue y mantenimiento de
aplicaciones nos encontramos con los siguientes inconvenientes:
Las aplicaciones requieren componentes con versiones
espec´
ıficas.
Se necesita mantener la aplicaci´n en la versi´n estable sin
o o
tocar sus componentes.
En el hosting compartido no se tienen permisos suficientes
para actualizar o instalar dependencias de mi aplicaci´n.
o
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
4. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Virtualenv
Una buena soluci´n!
o
Creaci´n y manejo de entornos virtuales usando Virtualenv.
o
¿Qu´ es virtualenv?
e
Herramienta para crear entornos independientes en Python.
Sucesor de Workingenv.
Puede trabajar con setuptools o distribute.
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
5. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Usando Virtualenv
Instalaci´n
o
En distribuci´nes GNU/Linux tipo Debian basta con:
o
$ sudo apt-get install python-virtualenv
Creando un entorno virtual
Se crea un entorno virtual llamado “test” con distribute y no hace
uso de los paquetes globales de Python:
$ virtualenv --distribute --no-site-packages test
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
6. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Usando Virtualenv
Estructura
La estructura de directorios para “test” es la siguiente:
test/
|- bin/
|- include/
|- lib/
Activando y desactivando el entorno
$ source bin/activate
$ deactivate
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
7. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Usando Virtualenvwrapper
¿Qu´ es virtualenvwrapper?
e
Es una extensi´n de virtualenv que permite manejar de forma m´s
o a
amable varios entornos virtuales en un servidor.
Instalaci´n
o
En una distribuci´n GNU/Linux tipo Debian se puede instalar
o
desde los repositorios:
# apt-get install virtualenvwrapper
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
8. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Usando Virtualenvwrapper
Configuraci´n
o
Es necesario definir el directorio que alojar´ los entornos virtuales
a
adem´s del fichero que contiene las diferentes funciones de
a
virtualenvwrapper. Se puede definir dentro del fichero .bashrc as´ ı:
export WORKON_HOME=$HOME/.virtualenvs
source /path/to/bin/virtualenvwrapper.sh
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
9. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Usando Virtualenvwrapper
Manejando entornos virtuales
Comandos de utilidad:
mkvirtualenv: Creaci´n de entornos virtuales.
o
mkvirtualenv --distribute --no-site-packages test
workon: Activaci´n de entornos virtuales.
o
workon test
rmvirtualenv: Eliminaci´n de entornos virtuales.
o
rmvirtualenv test
deactivate: Desactiva entorno virtual.
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
10. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Gesti´n de paquetes Python mediante Pip
o
¿Qu´ es Pip?
e
Es una herramienta que permite instalar, actualizar o eliminar
paquetes Python.
Creado como fork a partir de easy install con mejoras como:
Prevenci´n contra instalaciones parciales descargando en su
o
totalidad el paquete escogido.
Menjsajes de error m´s claros.
a
Desinstalaci´n de paquetes.
o
Soporte nativo para Git, Mercurial y Bazaar.
Permite trabajar con setuptools o distribute.
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
11. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Usando Pip
Introducci´n a Pip
o
Algunas opciones utiles para usar Pip son:
´
search: Permite buscar dentro del listado de paquetes alguno
en especial.
install: Permite instalar o actualizar los paquetes
seleccionados.
install -r: Permite instalar paquetes listados en un fichero.
install -e: Permite instalar paquetes desde una URL.
install –upgrade: Lleva a cabo la actualizaci´n de un paquete.
o
uninstall: Elimina el paquete especificado.
freeze: Muestra el listado de paquetes instalados con sus
versiones exactas.
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
12. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Usando Pip
Usando Pip con Virtualenv
Cada vez que se crea un entorno virtual, una copia de Pip es
almacenada en ´ste.
e
Los paquetes instalados son almacenados en el directorio local
“lib”, dentro del entorno virtual.
Es necesario tener instaladas librer´ de desarrollo en el S. O.
ıas
para la correcta instalaci´n de algunos paquetes.
o
Ejemplo
Instalaci´n de xmlrpclib.
o
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
13. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Usando Pip
Definici´n de fichero requiements.txt.
o
El fichero que almacena el listado de dependencias deber´ tener
a
una estructura similar a la siguiente:
#Definici´n de paquetes congelados en la versi´n X.X.
o o
xmlrpclib==1.0.1
ipython==0.10.2
#Definici´n de paquetes descargados de una URL con git.
o
-e git+https://github.com/django/django.git#egg=Package
El anterior listado puede ser instalado mediante la opci´n “-r”.
o
pip install -r requirementes.txt
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
14. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Ejecuci´n de tareas sobre SSH con Fabric
o
¿Qu´ es Fabric?
e
Es una herramienta escrita en Python que permite ejecutar
comandos via SSH en varios hosts.
Ejecuta comandos v´ sudo o como usuario normal.
ıs
Se obtiene la salida interactiva del resultado en cada ejecuci´n.
o
Instalaci´n
o
Puede ser instalado a trav´s de Pip o easy install.
e
pip install fabric
o
´
easy_install fabric
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
15. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Ejecuci´n de tareas sobre SSH con Fabric
o
Instalaci´n
o
Tambi´n es posible obener la versi´n de desarrollo descargando el
e o
c´digo fuente de su repositorio git.
o
https://github.com/bitprophet/fabric
Usando Fabric
Un script sencillo para ejecuci´n local ser´
o ıa:
from fabric.api import local
def disk_space():
local(‘df -h’)
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
16. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Ejecuci´n de tareas sobre SSH con Fabric
o
Usando Fabric
Un script sencillo para ejecuci´n remota y con sudo ser´
o ıa:
from fabric.api import run
def disk_space():
run(‘df -h’)
def install_apache():
sudo(’apt-get install apache2 mod_wsgi’, pty=True)
Para ejecutar los comandos descritos bastar´ con ejecutar fabric:
a
$ fab -H remotehost disk_space
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
17. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Ejecuci´n de tareas sobre SSH con Fabric
o
Parametrizaci´n de fabfile
o
Diccionario de par´metros env cuyas claves hacen referencia a
a
variables de entorno:
env.user: Usuario utilizado para conexiones SSH.
env.password: Contrse˜a usada para conexiones SSH o para
n
ejecutar sudo.
env.hosts: Listado de m´quinas sobre las que se ejecutar´n las
a a
tareas.
env.key filename: Archivo o listado de archivos donde se
alojan las llaves primarias para la conexi´n v´ SSH.
o ıa
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
18. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Ejecuci´n de tareas sobre SSH con Fabric
o
Algunas operacioens de Fabric
Algunas operaciones de utilidad.
put: Permite enviar un fichero al servidor remoto.
get: Descarga un fichero del servidor remoto.
local: Ejecuta un comando en la m´quina local.
a
run: Ejecuta un comando en la o las m´quinas remotas.
a
sudo: Permite la ejecuci´n de comandos con privilegios de
o
superusuario.
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
19. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Herramientas utilizadas
Django
Framework escrito en Python para desarrollo de aplicaciones web.
Liberado bajo licencia BSD.
Sitio web: http://www.djangoproject.com/
Django-extensions
Aplicaci´n instalable en Django que permite incrementar el n´mero
o u
de programas a ejecutar desde la l´
ınea de comandos “con
manage.py”.
Liberado bajo licencia New BSD.
Sitio web: https://github.com/django-extensions/django-extensions
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
20. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Herramientas utilizadas
South
Aplicaci´n instalable en Django que permite realizar cambios en los
o
modelos facilitando su migraci´n.
o
Liberado bajo licencia ASL 2.0.
Sitio web: http://south.aeracode.org/
Git
Sistema controlador de versiones distribuido escrito en C.
Liberado bajo licencia GPL v2.
Sitio web: http://git-scm.com/
Oscar Javier Moreno Rey Despliegue Aplicaciones Python
21. Algunos requerimientos en el despliegue de aplicaciones.
Una buena soluci´n (Virtualenv).
o
Usando Virtualenvwrapper.
Gesti´n de paquetes Python mediante Pip.
o
Ejecuci´n de tareas sobre SSH con Fabric.
o
Herramientas utilizadas como apoyo.
Referencias
Virtualenv
http://www.virtualenv.org/en/latest/index.html
Virtualenvwrapper
http://www.doughellmann.com/docs/virtualenvwrapper
Fabric
http://docs.fabfile.org/en/1.0.1/index.html
PIP
http://www.pip-installer.org/en/latest/index.html
Oscar Javier Moreno Rey Despliegue Aplicaciones Python