despliegue de aplicaciones php
TRANSCRIPT
![Page 1: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/1.jpg)
Monday, June 17, 13
![Page 2: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/2.jpg)
Monday, June 17, 13
![Page 3: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/3.jpg)
¿Quién soy?
⁃Argentino viviendo en Estados Unidos
desde 1999
⁃Desarrollador PHP & Symfony
⁃ Fundador de la primera lista de discusión
de PHP de habla hispana
- Socio fundador de ServerGrove
⁃Amante de la parrillaMonday, June 17, 13
![Page 4: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/4.jpg)
Monday, June 17, 13
![Page 5: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/5.jpg)
Monday, June 17, 13
![Page 6: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/6.jpg)
⁃ Fundada en 2005
⁃Proveedor de servicios de hosting especializado en PHP, Symfony, ZendFramework, y otros
⁃Servidores en Europa y Estados Unidos
ServerGrove!
Monday, June 17, 13
![Page 7: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/7.jpg)
⁃Muy activos en la comunidad de Open Source contribuyendo con código o patrocinando eventos y grupos de usuarios
La comunidad es nuestra guia
Alicante PHP
Monday, June 17, 13
![Page 8: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/8.jpg)
Deployment
?Monday, June 17, 13
![Page 9: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/9.jpg)
Deployment
Deployment de Software comprende todas las actividades que hacen disponible un sistema de software para su uso.
http://en.wikipedia.org/wiki/Software_deployment
Monday, June 17, 13
![Page 10: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/10.jpg)
Deployment
Es una parte muy importante de la vida
de la aplicación
Monday, June 17, 13
![Page 11: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/11.jpg)
Deployment
Es una parte muy importante crítica de la
vida de la aplicación
Monday, June 17, 13
![Page 12: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/12.jpg)
Deployment
No debe ser un pensamiento secundario
Monday, June 17, 13
![Page 13: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/13.jpg)
Deployment
Debe ser predecible
Monday, June 17, 13
![Page 14: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/14.jpg)
Deployment
Cuanto más lo hagas mejor funcionará
Monday, June 17, 13
![Page 15: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/15.jpg)
Monday, June 17, 13
![Page 16: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/16.jpg)
Metas
Monday, June 17, 13
![Page 17: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/17.jpg)
Deployment: Metas
Un-click
Monday, June 17, 13
![Page 18: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/18.jpg)
despliegue continuo
Deployment: Metas
Monday, June 17, 13
![Page 19: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/19.jpg)
Despliegue de Aplicaciones PHP
Monday, June 17, 13
![Page 20: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/20.jpg)
Despliegue de Aplicaciones PHP
Monday, June 17, 13
![Page 21: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/21.jpg)
Despliegue de Aplicaciones PHP
Monday, June 17, 13
![Page 22: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/22.jpg)
A toda hora & lugar
Deployment: Metas
Monday, June 17, 13
![Page 23: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/23.jpg)
Cualquiera
Deployment: Metas
Monday, June 17, 13
![Page 24: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/24.jpg)
Confiable
Deployment: Metas
Monday, June 17, 13
![Page 25: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/25.jpg)
Rollbacks
Deployment: Metas
Monday, June 17, 13
![Page 26: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/26.jpg)
Sin downtime
Deployment: Metas
Monday, June 17, 13
![Page 27: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/27.jpg)
Re-usable
Deployment: Metas
Monday, June 17, 13
![Page 28: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/28.jpg)
Escalable
Deployment: Metas
Monday, June 17, 13
![Page 29: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/29.jpg)
Verdades
Monday, June 17, 13
![Page 30: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/30.jpg)
Deployment: Verdad #1El despliegue comienza con el desarrollador
•Entorno de desarrollo lo más parecido a servidores de producción
•Servidores de test/qa/staging•Vagrant para manejar VMs•Puppet/Chef para manejar los paquetes y configuración del S.O.
Monday, June 17, 13
![Page 31: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/31.jpg)
Deployment: Verdad #2El éxito depende de la configuración del S.O.
•Puppet/Chef para manejar los paquetes y configuración del S.O.
•Crear paquetes de S.O. para todo software de terceros
•Configurar tus propios repositorios
Monday, June 17, 13
![Page 32: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/32.jpg)
Deployment: Verdad #3El monitoreo incrementa el “uptime”
•Herramientas de Monitoreo informan lo que sucede en tus servidores (Ganglia, Cacti, Zabbix, etc.)
•Agrega monitoreo y metrics a tus aplicaciones (Graphite, StatsD, New Relic)
•Usa los logs inteligentemente (Graylog, Logstash, Kibana)
Monday, June 17, 13
![Page 33: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/33.jpg)
Metodologías de Deployment
Monday, June 17, 13
![Page 34: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/34.jpg)
Deployment: Metodologías
•Al estilo VIM•Copia con FTP•rsync•source control (svn, git)•Herramientas de Build (ant, phing)•Herramientas especializadas (capistrano, fabric, etc)
•Basadas en paquetes (rpm, deb, etc)
Monday, June 17, 13
![Page 35: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/35.jpg)
Pasos comunes
Monday, June 17, 13
![Page 36: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/36.jpg)
Deployment x Primera vez
•Copiar archivos a servidor(es)
•Configurar variables en el servidor
•Cargar fixtures de DB•Procesar e instalar assets•“Preparar” el cache•“Activar” sitio
Monday, June 17, 13
![Page 37: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/37.jpg)
•Copiar archivos a servidor(es)
•Aplicar cambios de DB (migraciones)
•Procesar e instalar assets•“Preparar” el cache•“Activar” sitio
Deployment: Siguientes ocaciones
Monday, June 17, 13
![Page 38: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/38.jpg)
•Copiar archivos a servidor(es)
•Aplicar cambios de DB (migraciones)•Procesar e instalar assets•“Preparar” el cache•“Activar” sitio
Deployment: Siguientes ocaciones
Monday, June 17, 13
![Page 39: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/39.jpg)
Desafíos
Monday, June 17, 13
![Page 40: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/40.jpg)
Deployment: Desafíos
•rsync•git pull•configurar git repo en red local para ahorrar ancho de banda y evitar problemas de conectividad con servidor git (i.e. github)
Desafío:Copiar archivos rápida y confiablemente
Soluciones:
Monday, June 17, 13
![Page 41: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/41.jpg)
•usar herramienta que permita ir de 1 a n servidores fácilmente (ej. capistrano)
•pssh permite enviar comandos en paralelo a multiples servidores
•enpaquetar tu aplicación en paquetes de S.O. como .rpm/.deb para instalar en muchos servidores fácilmente
EscalableSoluciones:
Deployment: DesafíosDesafío:
Monday, June 17, 13
![Page 42: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/42.jpg)
•Prueba!•Crea tags•branches dedicados (master para
producción)•deploy cada release en un directorio
nuevo
RollbacksSoluciones:
Deployment: DesafíosDesafío:
Monday, June 17, 13
![Page 43: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/43.jpg)
•usar conexiones basadas en ssh•no guardes contraseñas en source
control•guarda datos sensibles (passwords)
en variables de entorno
SeguroSoluciones:
Deployment: DesafíosDesafío:
Monday, June 17, 13
![Page 44: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/44.jpg)
Migraciones de DB
•Doctrine Migrations•Considera usar DBs de documentos
como MongoDB
“Las mejores migraciones son las que no tienes que hacer”
Soluciones:
Deployment: DesafíosDesafío:
Monday, June 17, 13
![Page 45: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/45.jpg)
Assets estáticos
•YUICompress comprime archivos JS y CSS
•Activa compresión gzip en el servidor Web•Agrega versiones a los links de archivos
estáticos (code.js?v=1)•Assetic cominba multiples archivos en uno•Corre herramientas localmente o servidor
de staging, deploy el resultado
Soluciones:
Deployment: DesafíosDesafío:
Monday, June 17, 13
![Page 46: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/46.jpg)
Caching
•Actualiza un servidor mientras otros procesan el tráfico
•Agrupa servidores y actualiza un grupo a la vez
•Ejecuta comandos en “finalize” para limpiar el cache de APC
Soluciones:
Deployment: DesafíosDesafío:
Monday, June 17, 13
![Page 47: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/47.jpg)
Conflicto de permisos de archivos
•Corre Apache/PHP con el mismo usuario•Usa php-fpm en vez de mod_php•Crea usuario “deploy” y agrega el
usuario del servidor web al grupo “deploy”
•Usa setfacl para permitir que multiples usuarios puedan escribir
Soluciones:
Deployment: DesafíosDesafío:
Monday, June 17, 13
![Page 48: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/48.jpg)
Otros problemas comunes
Monday, June 17, 13
![Page 49: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/49.jpg)
Deployment: Otros problemas comunes
• Sistema de archivos ‘Case sensitive’• Configuraciones diferentes• Software de terceros desactualizados• Github caído
$ git daemon --base-path=/git/repo/path/ --export-all
$ git clone git://127.0.0.1/repo
http://ozmm.org/posts/when_github_goes_down.htmlMonday, June 17, 13
![Page 50: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/50.jpg)
Ejemplos
Monday, June 17, 13
![Page 51: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/51.jpg)
Deployment: Ejemplos
El despliegue continuo más simple!
<?php
exec(‘/usr/bin/env -i HOME=/var/www git pull’);echo “Listo!”;
hook.php
screenshot
Monday, June 17, 13
![Page 52: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/52.jpg)
Capistrano•Escrito en Ruby•Muy extensible•Gran número de extensiones• Instalación simple en el cliente
$ gem install capistrano
Deployment: Ejemplos
Monday, June 17, 13
![Page 53: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/53.jpg)
Capistrano
set :application, "myapp" # Nombre de aplicaciónset :deploy_to, "/var/www/myapp"
set :user, "deployer"set :use_sudo, false # sudo isn't required
set :deploy_via, :remote_cache set :repository, "[email protected]:user/repo.git"
role :web, "server.example.com", “server2.example.com”
Deployment: Ejemplos
Monday, June 17, 13
![Page 54: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/54.jpg)
$ cap deploy:setup
Capistrano
Deployment: Ejemplos
Monday, June 17, 13
![Page 55: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/55.jpg)
|-- releases`-- shared |-- logs `-- uploads
Capistrano
Deployment: Ejemplos
Monday, June 17, 13
![Page 56: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/56.jpg)
Capistrano
$ cap deploy$ cap deploy:migrations$ cap deploy:rollback
Deployment: Ejemplos
Monday, June 17, 13
![Page 57: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/57.jpg)
|-- current (symlink a releases/20130112)|-- releases| `-- 20130112`-- shared |-- logs `-- uploads
Capistrano
Deployment: Ejemplos
Monday, June 17, 13
![Page 58: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/58.jpg)
Deployment:Otras opciones
•Fabric•WePloy•Phing•Magallanes•Jenkins
Monday, June 17, 13
![Page 59: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/59.jpg)
Herramientas
Monday, June 17, 13
![Page 60: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/60.jpg)
Deployment: Herramientas
App Metrics: StatsD & Graphite
Monday, June 17, 13
![Page 61: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/61.jpg)
Logging: LogstashEnvia logs desde fuentes multiples, las procesa, obtiene la fecha correcta, indexa y ofrece búsqueda
Deployment: Herramientas
Monday, June 17, 13
![Page 62: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/62.jpg)
Logging: Logstash
Configura Apache para generar logs en jsonLogFormat "{ \"@timestamp\": \"%{%Y-%m-%dT%H:%M:%S%z}t\", \"@fields\": { \"client\": \"%a\", \"duration_usec\": %D, \"status\": %s, \"request\": \"%U%q\", \"method\": \"%m\", \"referrer\": \"%{Referer}i\" } }" logstash_json
# Write our 'logstash_json' logs to logs/access_json.logCustomLog logs/access_json.log logstash_json
{ "@timestamp": "2012-08-22T14:35:19-0700", "client": "127.0.0.1", "duration_usec": 532, "status": 404, "request": "/favicon.ico", "method": "GET", "referrer": "-" }
Resultado
Deployment: Herramientas
Monday, June 17, 13
![Page 63: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/63.jpg)
Logging: Graylog
Deployment: Herramientas
Monday, June 17, 13
![Page 64: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/64.jpg)
Logging: KibanaKibana ofrece una forma fácil y amigable de visualizar y buscar datos en tus logs
Deployment: Herramientas
Monday, June 17, 13
![Page 65: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/65.jpg)
Packaging: fpm
https://github.com/jordansissel/fpm
Crea paquetes para plataformas múltiples (deb, rpm, etc) muy fácilmente
fpm -s dir -t rpm -n "myapp" -v 1.0 /var/www/myapp
fpm -s dir -t deb -a all -n myapp -v 1.0 /etc/apache2/conf.d/my.conf /var/www/myapp
Deployment: Herramientas
Monday, June 17, 13
![Page 66: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/66.jpg)
Repaso
Monday, June 17, 13
![Page 67: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/67.jpg)
•Deja de usar FTP
Monday, June 17, 13
![Page 68: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/68.jpg)
•Deja de usar FTP•Planea temprano
Monday, June 17, 13
![Page 69: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/69.jpg)
•Deja de usar FTP•Planea temprano•Practícalo
Monday, June 17, 13
![Page 70: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/70.jpg)
•Deja de usar FTP•Planea temprano•Practícalo•Monitoriza
Monday, June 17, 13
![Page 71: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/71.jpg)
•Deja de usar FTP•Planea temprano•Practícalo•Monitoriza•AUTOMATIZA!
Monday, June 17, 13
![Page 72: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/72.jpg)
Preguntas?
Transparencias: http://slideshare.net/pgodelTwitter: @pgodel
E-mail: [email protected]
Monday, June 17, 13
![Page 73: Despliegue de aplicaciones PHP](https://reader033.vdocuments.site/reader033/viewer/2022042423/557bdbf4d8b42a2f7b8b4858/html5/thumbnails/73.jpg)
Gracias!
Transparencias: http://slideshare.net/pgodelTwitter: @pgodel
E-mail: [email protected]
Monday, June 17, 13