Taller de Phing - phpconference 2009 barcelona
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Taller de Phing - phpconference 2009 barcelona

  • 3,176 views
Uploaded on

Taller impartido por Fernando Palomo en la phpconference de barcelona en 2009

Taller impartido por Fernando Palomo en la phpconference de barcelona en 2009

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,176
On Slideshare
3,156
From Embeds
20
Number of Embeds
2

Actions

Shares
Downloads
39
Comments
0
Likes
3

Embeds 20

http://www.slideshare.net 14
http://www.linkedin.com 6

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • Bienvenidos frikis del php, disfrutad Soy fernando, qué hago, experiencia anterior relacionada con sistemas Motivación del taller => necesidad de actualizacion Taller != conferencia => debatid, preguntad, contad cómo lo solucionais vosotros No hay 1 sola forma de solucionarlo Palabra mágica => depende TALLER - COLOQUIO Quien usa svn? Quien scripts de despliegue? Ejemplo de cagada. Implantamos memcache por primera vez,pero al pasar no se aplicó
  • Explicar lo que vamos a hacer en cada sección La primera hora entre general y subversion Un breve descanso entre horas La segunda hora para phing
  • Situación típica, servidor de svn en local y réplica en live. Trabajamos sobre los mismos archivos Arquitectura en mybrands -> 3 web , 2db master-master, share nfs for media => migrate to hdfs o mogilefs -> update de datos via rsync -> images via static server => no cookie y mas conexiones ->
  • Una actualización no puede dejar un nodo activo a medio actualizar. Monitorizar que el contenido es el mismo en los www, db slaves... Actualizar fuera de hora: minimizar pérdidas en caso de down time, incidentes, el rendimiento de la aplicación no sufre
  • Svn fue diseñado para reemplazar a cvs Svn -> el numero de revision pertenece al repositorio, no a los archivos. Cvs envia archivos completos desde cliente a servidor, svn solo diff Svn Permite bloqueo de archivos , bueno para binarios Más sobre mercurial
  • Eclipse => subclipse Svn:// => xinetd , /usr/local/bin/svnserve , puerto 3690 Netbeans version compatible with console version in linux . Eclipse not compatible Eclipse muchos fallos con svn, demasiado lento para actualizar http://svn.collab.net/repos/svn/trunk/notes/svnsync.txt
  • Repositorio: almacen central de datos Wc: directorio con archivos en local.area de trabajo privada Branch: programa ligeramente modificado.. Tags: foto del projecto en un momento del tiempo Trunk: direct q alberga la linea central de desarrollo Merge: branchs o branch + trunk Conflictos, se pueden solucionar...
  • RELEASE BRANCHES: Dessarrolladores trabajan al par que testers Hay que dar soporte a version actual de web, mientras desarrollamos la siguiente 1.- commit a trunk 2.- trunk copiada a release branch (1.0) 3.- testers sobre release, developers sobre trunk 4.- bug fixes portados entre ambas ramas 5.- se para desarrollo en branch,se hace release, tras testeo. Se copia a tags/1.0.0 6.- se sigue trabajando en trunk, patchs sobre branch , y cuando hay muchos , se copia branch a tags/1.0.1 Svn merge –reintegrate desde trunk Otra aproximación , trunk siempre version estable
  • PRACTICA SVN Creo repositorio, habilito acceso por http y que lo descarguen los demás. Editamos el archivo generando conflictos y merges
  • Desplegar sin scripts: posibles cosas sin hacer Despliegues de test. Entorno de producción, pero bd y directoryroot de test - apache Ant está orientado y diseñado para integrarse en java - bash es otra opción, pero no siempre es portable entre máquinas, y no es tan manejable.
  • Es posible que sucedan fallos al desplegar. Debemos probar los scripts de despliegue , ejecutar primero sobre testing. En caso de error, configurar el numero de version atras. Evita problemas con caches y proxies, son archivos diferentes 12_header.jpg != 13_header.jpg Tambien podemos usar etags,expires headers... Despliegues mas complejos, necesidad de limpieza de archivos que no estan en uso Solo hay down-time si lo necesitamos para la bd .
  • Hay que planear down-time en la mayoría de actualizaciones., mientras desplegamos el contenido no es consistente. Archivos svn , problemas de seguridad Facil aplicar bug patchs (pero de nuevo con posible down time) Diferenciamos entre testing – development y live en la aplicación
  • Minimiza down time Patchs via diff o update parcial
  • Phing es una herramienta para construir proyectos Basado en ant, cross-platform.
  • Alias del script phing.php Por defecto busca el archivo build.xml , Especificar
  • Target, cada uno de los subprocesos, grupos de tareas logicos Project -> nodo raiz del archivo

Transcript

  • 1. TALLER DE PHING Subversion and PHING : How-to update successfully your website.
    • Fernando Palomo García
      • Head of IT at MyBrands.de
      • 2. [email_address]
  • 3. INDEX
    • 1.- Vista General
    • 4. 2.- Control de versiones: Subversion
      • Breve intro a control de versiones
      • 5. Conceptos de subversion
      • 6. Practica de subversion
    • 3.- Script de despliegue: PHING
      • Breve intro a scripts de despliegue
      • 7. Conceptos de PHING
        • Estructura de un script
        • 8. Comandos básicos
        • 9. Extendiendo Phing
      • Scripts de ejemplo
      • 10. Generemos un script entre todos!
  • 11. 1.- Vista General
    • Equipo de desarrollo trabajando en paralelo
    • 12. Plataforma con multiples servidores
      • DB, Static content, Dynamic content, Proxy para contenido estático, svn, memcache, monitorización, testing...
    • Actualizaciones frecuentes
      • Bug fixes
      • 13. Nuevas funcionalidades
      • 14. Mejoras de funcionalidades
  • 15. 1.- Vista General
    • Garantizar:
      • Consistencia de datos
      • Misma versión en los diferentes recursos:
        • Estructuras de DB corresponden con aplicación
        • 19. Contenido estático corresponde con aplicación(prefijos)
      • Disponibilidad de recursos
        • Es necesario down-time para actualizar?
        • 20. Realizar actualizaciones fuera de horas punta
        • 21. Test de despliegue en entorno controlado
  • 22. 2.- Control de Versiones: Subversion
    • Qué nos proporciona?
      • Trabajo en equipo, desarrollo en paralelo. Archivos compartidos y abiertos al mismo tiempo
      • 23. Control de cambios en archivos. Rollback rápido
      • 24. Quién hace qué
    • Los más populares:
      • CVS => Sustituido por svn
      • 25. SVN => Estándar de-facto,maneja mejor binarios
      • 26. GIT => Desarrollado por Linus Torvalds, usado para el kernel de linux. Distribuido.
      • 27. Mercurial => Distribuido
  • 28. 2.- Subversion::__init()
    • http://subversion.tigris.org/
    • 29. Clientes:
      • Linux / OS X: consola, rapidSVN
      • 30. Windows: tortoiseSVN
      • 31. integrado en IDE: Netbeans, Eclipse,Zend Studio...
    • Repositorio central (svnadmin create <path>)
    • 32. Acceso http:// , https:// , file:/// , svn:// svn+ssh://
    • 33. Replicacion de repositorio master-slave (svnsync)
  • 34. 2.- Subversion::main()
    • Un poco de Terminología
    • Buen tutorial: http://svnbook.red-bean.com/
  • 41. 2.- Subversion::main()
  • 47. 2.- Subversion::__main()
    • Practica:
      • Instalación de servidor
      • 48. Crear repositorio
      • 49. Configurar mod_dav apache
      • 50. Configuración del cliente en netbeans
      • 51. casos:
  • 54. 3.- Scripts de Despliegue: PHING
    • ¿Cómo desplegaríamos sin scripts?
    • 55. Velocidad – no hay olvidos - atomicidad
    • 56. Sincronismo entre servidores
    • 57. Script debería anticipar y prever fallos
    • 58. Posibilidades:
      • Bash scripts ( bash version )
      • 59. Apache Ant (Java: platform-independent)
      • 60. Make ( maldito espacio antes del tabulador! )
      • 61. PHING ( PHP: platform independent)
  • 62. 3.- Scripts de Despliegue: PHING
    • Previsión de fallos
    • 63. Development => Testing => Live
    • 64. Políticas de despliegue ”incrementales”
      • Al desplegar añadimos un prefijo/sufijo a cada archivo, correspondiente a la versión actual.
      • 65. En la aplicación o htaccess indicamos el numero de versión
  • 66. 3.- Scripts de despliegue: PHING
    • Políticas de despliegue ”directa”
      • el directorio principal en el servidor www es una wc
      • 67. Archivos internos de svn
      • 68. Para volver a versión anterior: directamente sobre el contenido web ( otro down-time )
      • 69. Fácil aplicar patchs
  • 70. 3.- Scripts de despliegue: PHING
    • Políticas de despliegue intermedias
      • Svn export , aplicar parches para live version
      • 71. Contenido antiguo sustituido por nuevo
      • 72. Para volver a version anterior, reemplazar directorio
      • 73. Down-time?
        • Descarga local => no
        • 74. Descarga y rsync => sí
      • Diff patch?
    • Y la BD?
      • Preparar scripts incrementales : DO vs UNDO
  • 75. 3.- PHING::__init()
    • PH ing I s N ot G numake
    • 76. http://phing.info
    • 77. Basado en Apache Ant
    • 78. Definición de tareas en XML
    • 79. Facilmente extensible con clases PHP para crear tareas personalizadas
    • 80. Scripts intuitivos, curva de aprendizaje muy inclinada
  • 81. 3.- PHING::main()
    • Phing => phing.php
    • 82. Phing -f <file> target
      • -Dproperty=value , asigna valor a properties
      • 83. -l , para listar targets
      • 84. -verbose
  • 85. 3.- PHING::main()
    • Estructura de un script de PHING
      • Tasks: trozo de codigo con una función específica => echo...
      • 86. Types: estructuras de datos para las tasks => filelist, filterchain, fileset...
      • 87. Properties: inline, input o fichero de properties
      • 88. Target: nodo raiz del archivo de build
    • http://phing.info/docs/guide/stable/
  • 89. 3.- PHING::main() Ejemplo sencillo: <project name=&quot;kernelius&quot; default=&quot;all&quot; basedir=&quot;.&quot;> <property name=”test” value=”testvalue” /> <property file=”build.properties” /> <target name=”all”> <echo msg=”hola mundo!” /> <copy todir=”/tmp”> <fileset dir=”.” includes=”*.txt” /> </copy> </target> <project>
  • 90. 3.- PHING::main()
  • 99. 3.- PHING::main()
    • Algunas estructuras de control:
      • If ( if – elseif – else )
      • 100. Depends
      • 101. Unless
      • 102. Conditions
        • Not, and, or, available, equals, isset, istrue...
  • 103. 3.-PHING::main()
    • Modificaciones sobre el proyecto
      • Datos => <filterchain>
        • Copy, move, append...
        • 104. Eliminar comentarios, cambiar valores,
      • Nombres de archivo => <mapper>
        • Change all php to html... <globmapper>
        • 105. Obtener todos los archivos en el mismo dir <flattenmapper>
        • 106. Expresiones regulares <regexmapper>
  • 107. 3.- PHING::main()
    • Otras tareas
      • <pdo> acepta transactions
      • 108. <phpdoc> para generar la documentación
      • 109. <phpunit> para ejecutar unit test
      • 110. <php> podemos llamar funciones y asignar el resultado a una property
  • 111. 3.-PHING::main()
      Ejercicios! Por fin! http://www.fpg81.es/phing-examples.tar.gz