• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Virtualenv
 

Virtualenv

on

  • 644 views

 

Statistics

Views

Total Views
644
Views on SlideShare
644
Embed Views
0

Actions

Likes
2
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Virtualenv Virtualenv Presentation Transcript

    • Despliegue de aplicaciones Python usando VirtualEnv Virtualenv - Pip - Fabric Oscar Javier Moreno Rey Campus Party Colombia 23 de junio de 2011
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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