Deploy. Herramientas para publicar nuestros proyectos.

2,600 views

Published on

Slides de la charla del 05/07/2013 en Symfony Valencia.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,600
On SlideShare
0
From Embeds
0
Number of Embeds
1,248
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Deploy. Herramientas para publicar nuestros proyectos.

  1. 1. DEPLOY HERRAMIENTASPARA "PUBLICAR"NUESTROSPROYECTOS
  2. 2. ¿QUIÉN SOY YO?. Pablo Braulio Escribá Programador web desde 2003 y desde 2007 Symfony Fan Boy. Email: brulics@gmail.com Twitter: @brulics Blog: http://mimalamemoriadeprogramador.com
  3. 3. INDEX 1. Procedimiento de deploy, 2. ¿Como lo hacemos en Symfony?, 3. Herramientas, 4. Capifony, 5. DEPLOY!!!, 6. Ejemplo, 7. Aplausos o tomates y lechugas.
  4. 4. GO!! Empecemos...
  5. 5. DEFINICIÓN Deploy = desplegar PROCEDIMIENTO Cualquier procedimiento es válido si cumple con un requisito imprescindible: la efectividad.
  6. 6. ¿COMO PODRÍA SER?.
  7. 7. ¿COMOPODRÍA SER?: Rápido.
  8. 8. ¿COMOPODRÍA SER?: Sencillo (para tontos)
  9. 9. ¿COMOPODRÍA SER?: De una sóla ejecución (a ser posible).
  10. 10. ¿COMOPODRÍA SER?: Con posibilidad de REGRESAR al estado anterior.
  11. 11. ¿COMOPODRÍA SER?. Escalable
  12. 12. ¿COMOPODRÍA SER?. Con posibilidad de hacer pruebas.
  13. 13. ¿COMO LO HACEMOS EN SYMFONY?.
  14. 14. ¿COMO LO HACEMOS EN SYMFONY? $ php symfony project:deploy production
  15. 15. ¿COMO LO HACEMOS EN SYMFONY? $ composer search deploy jordillonch/deploy-bundle A Symfony2 deploy bundle hpatoio/deploy-bundle Brings Symfony 1.4 project:deploy command to Symfony2. madalynn/plum-bundle A Symfony2 deploy bundle. rizeway/anchour Toolkit for deploying web applications ibrows/be-simple-deployment-bundle Symfony2 applications deployment made easy madalynn/plum An object oriented deployer library kachkaev/assets-version-bundle Automates the process of updating assets version in Symfony2 p pomander/pomander Deployment for PHP markguinn/silverstripe-deploytools Provides automated git deployment and (soon) assets/databa kunstmaan/newrelicbundle This bundle adds support for NewRelic's named transactions to you Sy janmarek/webloader Tool for loading or deploying CSS and JS files into web pages amldigital/twitterfeed A quick and easy way to deploy a twitter feed on a website. pomander/wordpress Pomander plugin to deploy and manage Wordpress sites codeless/jugglecode A tool to manipulate PHP statements in scriptfiles dg/ftp-deployment A tool for automated deployment of web applications to an FTP server.
  16. 16. ¿COMO LO HACEMOS EN SYMFONY?.
  17. 17. HERRAMIENTAS
  18. 18. HERRAMIENTAS. Características: No es un sistema de deploy, Fácil, Ejecución rápida, "Rollback", No es escalable, No única ejecución, No se pueden ejecutar pruebas. http://git-scm.com
  19. 19. HERRAMIENTAS SCRIPTSDECONSOLA Características: Ejecución rápida, Puede ser fácil, Puede ser escalable, Puede ser de ejecución única, Pueden ejecutarse pruebas, Costoso de hacer, ¿Rollback?, Reinventar la rueda.
  20. 20. HERRAMIENTAS. Características: Ejecución rápida, Fácil, Escalable, De ejecución única, Solución PHP, Rollback, Ejecución por entornos, Extendible. http://magallanes.zenreworks.com
  21. 21. HERRAMIENTAS. Características: No es un sistema propio de deploy, Requiere aprendizaje, Escalable, De ejecución "semi" rápida, De ejecución única, "Rollback", "Tests", Útil para arquitecturas complejas y levantar entornos, https://puppetlabs.com
  22. 22. HERRAMIENTAS. Características: Fácil, Escalable, De ejecución única, Rollback, Ejecución por entornos. Api PHP, Ejecución "semi" rápida, No es gratis, Poco personalizable. http://aws.amazon.com/es/elasticbeanstalk
  23. 23. HERRAMIENTAS. IDEPHIX. Características: Ejecución rápida, Fácil, Escalable, De ejecución única, Ejecución por entornos, Solución PHP, Personalizable, ¿reinventar la rueda?, No soporta SCM, ¿Rollback?. http://getidephix.com
  24. 24. HERRAMIENTAS. Características: Ejecución rápida, Fácil, Escalable, De ejecución única, Rollback, Ejecución por entornos, Solución Ruby. Extendible, Extensiones: http://capifony.org (symfony2). http://capistranorb.com
  25. 25. CAPIFONY ¿Como funciona?. http://capifony.org
  26. 26. CAPIFONY Para su instalación, vía RubiGems. Para iniciar un proyecto: $ sudo gem install capifony $ cd /path_your_project /path_your_project:~$ capifony . [add] writing './Capfile' [add] making directory './app/config' [add] writing './app/config/deploy.rb' [done] symfony 2 project capifonied! $ tree . ├── app │ └── config │ └── deploy.rb └── Capfile 2 directories, 2 files
  27. 27. CAPIFONY Contenido del fichero de configuración. set :application, "set your application name here" set :domain, "#{application}.com" set :deploy_to, "/var/www/#{domain}" set :app_path, "app" set :repository, "#{domain}:/var/repos/#{application}.git" set :scm, :git # Or: `accurev`, `bzr`, `cvs`, `darcs`, `subversion`, `mercurial`, `perforce`, or `none` set :model_manager, "doctrine" # Or: `propel` role :web, domain # Your HTTP server, Apache/etc role :app, domain, :primary => true # This may be the same as your `Web` server set :keep_releases, 3 # Be more verbose by uncommenting the following line # logger.level = Logger::MAX_LEVEL
  28. 28. CAPIFONY Tras configurar, preparamos el servidor. $ cap deploy:setup `-- /var/www/my-app.com |-- current → /var/www/my-app.com/releases/20100512131539 |-- releases | `-- 20100512131539 | `-- 20100509150741 | `-- 20100509145325 |-- shared | `-- web | `-- uploads | `-- log | `-- config `-- parameters.yml
  29. 29. CAPIFONY Estrategia de ejecución A: De desarrollo a producción (via scm). set :scm, :git set :repository, "ssh-gitrepo-domain.com:/path/to/repo.git"
  30. 30. CAPIFONY Estrategia de ejecución A: Alternativa ligera. No clona el repositorio en cada deploy. Actua mas rápido que en la opción anterior. set :deploy_via, :remote_cache
  31. 31. CAPIFONY Estrategia de ejecución B: De desarrollo a producción (vía copy). set :scm, :git set :repository, "file:///Users/deployer/sites/my-app" set :deploy_via, :copy
  32. 32. CAPIFONY Estrategia de ejecución B: Alternativa ligera: capistrano_rsync_with_remote_cache Instalación y configuración. gem install capistrano_rsync_with_remote_cache set :deploy_via, :rsync_with_remote_cache
  33. 33. CAPIFONY Estrategia de ejecución B: Instalación de vendors previamente en local. set :scm, :git set :repository, "file:///Users/deployer/sites/my-app" set :deploy_via, :capifony_copy_local set :use_composer, true set :use_composer_tmp, true
  34. 34. CAPIFONY Opciones de configuración de capistrano. Usuario para la ejecución. Usamos clave ssh. Rama/tag de git. set :user, "deployer" ssh_options[:forward_agent] = true set :branch, "v0.2.0"
  35. 35. CAPIFONY Opciones de configuración de capistrano. Uso de submodulos de git. Especificamos otro puerto ssh. No vamos a usar sudo en el servidor. set :git_enable_submodules, 1 ssh_options[:port] = "22123" set :use_sudo, false
  36. 36. CAPIFONY Opciones de configuración de capistrano. Mantener sólo un número de versiones. Hay que usarlo con cap deploy:cleanup set :keep_releases, 3
  37. 37. CAPIFONY Opciones de configuración para symfony2. Poner archivos y directorios compartidos con las versiones. Instalamos los vendors con composer o actualizamos (¡¡cuidadín!!). set :shared_files, ["app/config/parameters.yml"] set :shared_children, [app_path + "/logs", web_path + "/uploads", "vendor"] set :use_composer, true set :update_vendors, true
  38. 38. CAPIFONY Opciones de configuración para symfony2. ORM, por defecto doctrine. Directorios app y web. Uso de AsseticBundle. set :model_manager, "propel" set :app_path, "my_app" set :web_path, "my_web" set :dump_assetic_assets, true
  39. 39. DEPLOY!!! ¡¡SUBAMOSNUESTROPROYECTO!!.
  40. 40. DEPLOY Basta con ejecutar: ¿Funciona? $ cap deploy
  41. 41. DEPLOY ¿No funciona?. ¡¡No problem!! $ cap deploy:rollback
  42. 42. VEAMOS UN EJEMPLO.
  43. 43. ¿OS HA GUSTADO?.
  44. 44. ¿PREGUNTAS?
  45. 45. MUCHAS GRACIAS.

×