SlideShare ist ein Scribd-Unternehmen logo
1 von 21
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

Weitere ähnliche Inhalte

Andere mochten auch (8)

Eres Feliz
Eres FelizEres Feliz
Eres Feliz
 
Web2.0
Web2.0Web2.0
Web2.0
 
PERIODO DE ADAPTACIÓN
PERIODO DE ADAPTACIÓNPERIODO DE ADAPTACIÓN
PERIODO DE ADAPTACIÓN
 
Rfid технологии. станции самостоятельной книговыдачивозврата. rfid-оборудован...
Rfid технологии. станции самостоятельной книговыдачивозврата. rfid-оборудован...Rfid технологии. станции самостоятельной книговыдачивозврата. rfid-оборудован...
Rfid технологии. станции самостоятельной книговыдачивозврата. rfid-оборудован...
 
Rapidez mental
Rapidez mentalRapidez mental
Rapidez mental
 
Creacion Compilados De Sl En Cd
Creacion Compilados De Sl En CdCreacion Compilados De Sl En Cd
Creacion Compilados De Sl En Cd
 
Concursos de robotica movil (1)
Concursos de robotica movil (1)Concursos de robotica movil (1)
Concursos de robotica movil (1)
 
Presentación Club Resellers en IBM México
Presentación Club Resellers en IBM MéxicoPresentación Club Resellers en IBM México
Presentación Club Resellers en IBM México
 

Ähnlich wie Virtualenv

Vagrant: virtualizando entornos de desarrollo
Vagrant: virtualizando entornos de desarrolloVagrant: virtualizando entornos de desarrollo
Vagrant: virtualizando entornos de desarrollo
Scalia
 
Virtualización y Provisionamiento: Entornos de desarrollo con Vagrant y Puppet
Virtualización y  Provisionamiento: Entornos de desarrollo con  Vagrant y PuppetVirtualización y  Provisionamiento: Entornos de desarrollo con  Vagrant y Puppet
Virtualización y Provisionamiento: Entornos de desarrollo con Vagrant y Puppet
Richard Moya
 
Demostración final
Demostración finalDemostración final
Demostración final
carmensp
 
La virtualización (Hardware y Software)
La virtualización (Hardware y Software)La virtualización (Hardware y Software)
La virtualización (Hardware y Software)
kevin0514
 
Virtualizacion por Hardware y por Software
Virtualizacion por Hardware y por SoftwareVirtualizacion por Hardware y por Software
Virtualizacion por Hardware y por Software
kevin0514
 
Virtualización para Desarrolladores
Virtualización para DesarrolladoresVirtualización para Desarrolladores
Virtualización para Desarrolladores
sergiovier
 

Ähnlich wie Virtualenv (20)

Virtualenv y buildout
Virtualenv y buildoutVirtualenv y buildout
Virtualenv y buildout
 
Pylons
PylonsPylons
Pylons
 
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
 
Ponencia virtualización sl alejandro vázquez 2
Ponencia virtualización sl alejandro vázquez 2Ponencia virtualización sl alejandro vázquez 2
Ponencia virtualización sl alejandro vázquez 2
 
Ponencia virtualización sl alejandro vázquez 2
Ponencia virtualización sl alejandro vázquez 2Ponencia virtualización sl alejandro vázquez 2
Ponencia virtualización sl alejandro vázquez 2
 
Vagrant: virtualizando entornos de desarrollo
Vagrant: virtualizando entornos de desarrolloVagrant: virtualizando entornos de desarrollo
Vagrant: virtualizando entornos de desarrollo
 
Integrando sonar
Integrando sonarIntegrando sonar
Integrando sonar
 
Virtualización y Provisionamiento: Entornos de desarrollo con Vagrant y Puppet
Virtualización y  Provisionamiento: Entornos de desarrollo con  Vagrant y PuppetVirtualización y  Provisionamiento: Entornos de desarrollo con  Vagrant y Puppet
Virtualización y Provisionamiento: Entornos de desarrollo con Vagrant y Puppet
 
Demostración final
Demostración finalDemostración final
Demostración final
 
Curso Vagrant
Curso VagrantCurso Vagrant
Curso Vagrant
 
Vagrant
VagrantVagrant
Vagrant
 
Portafolio
PortafolioPortafolio
Portafolio
 
La virtualización (Hardware y Software)
La virtualización (Hardware y Software)La virtualización (Hardware y Software)
La virtualización (Hardware y Software)
 
Virtualizacion por Hardware y por Software
Virtualizacion por Hardware y por SoftwareVirtualizacion por Hardware y por Software
Virtualizacion por Hardware y por Software
 
Maven
MavenMaven
Maven
 
Virtualización para Desarrolladores
Virtualización para DesarrolladoresVirtualización para Desarrolladores
Virtualización para Desarrolladores
 
Gestión del software con Maven y Jenkins
Gestión del software con Maven y JenkinsGestión del software con Maven y Jenkins
Gestión del software con Maven y Jenkins
 
Lp II clase03 - Entornos de Desarrollo
Lp II clase03 - Entornos de DesarrolloLp II clase03 - Entornos de Desarrollo
Lp II clase03 - Entornos de Desarrollo
 
Python
PythonPython
Python
 
VIRTUALBOX
VIRTUALBOX VIRTUALBOX
VIRTUALBOX
 

Mehr von campus party

¿Qué es SCADA y cómo me afecta su (in)seguridad?
¿Qué es SCADA y cómo me afecta su (in)seguridad? ¿Qué es SCADA y cómo me afecta su (in)seguridad?
¿Qué es SCADA y cómo me afecta su (in)seguridad?
campus party
 
Producción del largometraje pequeñas voces
Producción del largometraje pequeñas vocesProducción del largometraje pequeñas voces
Producción del largometraje pequeñas voces
campus party
 
Conferencia: Aplicaciones y el reto del desarrollo móvil
Conferencia: Aplicaciones y el reto del desarrollo móvilConferencia: Aplicaciones y el reto del desarrollo móvil
Conferencia: Aplicaciones y el reto del desarrollo móvil
campus party
 
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel ContrerasComo sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
campus party
 
X taller bluevialiminal
X taller bluevialiminalX taller bluevialiminal
X taller bluevialiminal
campus party
 
X liminal buevia 2 (dllo.)-taller
X liminal buevia 2 (dllo.)-tallerX liminal buevia 2 (dllo.)-taller
X liminal buevia 2 (dllo.)-taller
campus party
 
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
campus party
 
Creación transmediática y comunidades en práctica
Creación transmediática y comunidades en prácticaCreación transmediática y comunidades en práctica
Creación transmediática y comunidades en práctica
campus party
 
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
campus party
 

Mehr von campus party (20)

Titulo
Titulo Titulo
Titulo
 
¿Qué es SCADA y cómo me afecta su (in)seguridad?
¿Qué es SCADA y cómo me afecta su (in)seguridad? ¿Qué es SCADA y cómo me afecta su (in)seguridad?
¿Qué es SCADA y cómo me afecta su (in)seguridad?
 
Producción del largometraje pequeñas voces
Producción del largometraje pequeñas vocesProducción del largometraje pequeñas voces
Producción del largometraje pequeñas voces
 
Conferencia: Aplicaciones y el reto del desarrollo móvil
Conferencia: Aplicaciones y el reto del desarrollo móvilConferencia: Aplicaciones y el reto del desarrollo móvil
Conferencia: Aplicaciones y el reto del desarrollo móvil
 
Liminal Bluevia 1
Liminal Bluevia 1Liminal Bluevia 1
Liminal Bluevia 1
 
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel ContrerasComo sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
 
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel ContrerasComo sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
 
X taller bluevialiminal
X taller bluevialiminalX taller bluevialiminal
X taller bluevialiminal
 
X liminal buevia 2 (dllo.)-taller
X liminal buevia 2 (dllo.)-tallerX liminal buevia 2 (dllo.)-taller
X liminal buevia 2 (dllo.)-taller
 
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
 
Theremin Alfredo Vargas
Theremin Alfredo Vargas Theremin Alfredo Vargas
Theremin Alfredo Vargas
 
Sonido y cine Ricardo Escallon
Sonido y cine Ricardo Escallon Sonido y cine Ricardo Escallon
Sonido y cine Ricardo Escallon
 
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Bautista
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés BautistaPhotoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Bautista
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Bautista
 
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Fonseca
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés FonsecaPhotoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Fonseca
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Fonseca
 
Aseguramiento de Vulnerabilidades Web con tecnologías OWASP
Aseguramiento de Vulnerabilidades Web con tecnologías OWASPAseguramiento de Vulnerabilidades Web con tecnologías OWASP
Aseguramiento de Vulnerabilidades Web con tecnologías OWASP
 
Mundos virtuales inmersivos y social shopping
Mundos virtuales inmersivos y social shopping Mundos virtuales inmersivos y social shopping
Mundos virtuales inmersivos y social shopping
 
Creación transmediática y comunidades en práctica
Creación transmediática y comunidades en prácticaCreación transmediática y comunidades en práctica
Creación transmediática y comunidades en práctica
 
Android+Arduino
Android+ArduinoAndroid+Arduino
Android+Arduino
 
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
 
Linux en caja
Linux en cajaLinux en caja
Linux en caja
 

Kürzlich hochgeladen

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Kürzlich hochgeladen (11)

Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
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