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

Virtualenv

  • 1.
    Despliegue de aplicacionesPython usando VirtualEnv Virtualenv - Pip - Fabric Oscar Javier Moreno Rey Campus Party Colombia 23 de junio de 2011
  • 2.
    Algunos requerimientos enel 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 enel 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 enel 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 enel 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 enel 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 enel 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 enel 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 enel 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 enel 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 enel 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 enel 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 enel 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 enel 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 enel 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 enel 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 enel 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 enel 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 enel 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 enel 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 enel 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