SlideShare una empresa de Scribd logo
1 de 45
Descargar para leer sin conexión
DEPLOY
HERRAMIENTASPARA "PUBLICAR"NUESTROSPROYECTOS
¿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
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.
GO!!
Empecemos...
DEFINICIÓN
Deploy = desplegar
PROCEDIMIENTO
Cualquier procedimiento es válido si cumple con un requisito
imprescindible: la efectividad.
¿COMO PODRÍA SER?.
¿COMOPODRÍA SER?:
Rápido.
¿COMOPODRÍA SER?:
Sencillo (para tontos)
¿COMOPODRÍA SER?:
De una sóla ejecución (a ser posible).
¿COMOPODRÍA SER?:
Con posibilidad de REGRESAR al estado anterior.
¿COMOPODRÍA SER?.
Escalable
¿COMOPODRÍA SER?.
Con posibilidad de hacer pruebas.
¿COMO LO HACEMOS EN
SYMFONY?.
¿COMO LO HACEMOS EN SYMFONY?
$ php symfony project:deploy production
¿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.
¿COMO LO HACEMOS EN SYMFONY?.
HERRAMIENTAS
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
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.
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
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
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
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
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
CAPIFONY
¿Como funciona?.
http://capifony.org
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
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
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
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"
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
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
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
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
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"
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
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
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
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
DEPLOY!!!
¡¡SUBAMOSNUESTROPROYECTO!!.
DEPLOY
Basta con ejecutar:
¿Funciona?
$ cap deploy
DEPLOY
¿No funciona?.
¡¡No problem!!
$ cap deploy:rollback
VEAMOS UN EJEMPLO.
¿OS HA GUSTADO?.
¿PREGUNTAS?
MUCHAS GRACIAS.

Más contenido relacionado

Destacado

Matematicas cuarto grado 4 perio
Matematicas cuarto grado 4 perioMatematicas cuarto grado 4 perio
Matematicas cuarto grado 4 perioiosef kara
 
Harnessing The Power Of Light - Topic For - International Year Of Light 2015
Harnessing The Power Of Light - Topic For - International Year Of Light 2015Harnessing The Power Of Light - Topic For - International Year Of Light 2015
Harnessing The Power Of Light - Topic For - International Year Of Light 2015superuser99
 
Dabigatran for Atrial Fibrillation: Cardioversion and Ablation
Dabigatran for Atrial Fibrillation: Cardioversion and AblationDabigatran for Atrial Fibrillation: Cardioversion and Ablation
Dabigatran for Atrial Fibrillation: Cardioversion and Ablationlarriva
 
Peace - A Beautiful Message
Peace - A Beautiful MessagePeace - A Beautiful Message
Peace - A Beautiful Messagesuperuser99
 
Independence Day - India
Independence Day - India Independence Day - India
Independence Day - India superuser99
 
News Paper Production
News Paper ProductionNews Paper Production
News Paper ProductionKrish SJ
 
Venous Thromboembolism in the Cancer Patient
Venous Thromboembolism in the Cancer PatientVenous Thromboembolism in the Cancer Patient
Venous Thromboembolism in the Cancer Patientlarriva
 
Krishna Janmashtami ( Hindi )
 Krishna Janmashtami ( Hindi ) Krishna Janmashtami ( Hindi )
Krishna Janmashtami ( Hindi )superuser99
 
Rifaximin for Recurrent Clostridium Difficile Infections
Rifaximin for Recurrent Clostridium Difficile InfectionsRifaximin for Recurrent Clostridium Difficile Infections
Rifaximin for Recurrent Clostridium Difficile Infectionslarriva
 
Present and Future Impact of Cytogenetics on Acute Myeloid Leukemia
Present and Future Impact of Cytogenetics on Acute Myeloid LeukemiaPresent and Future Impact of Cytogenetics on Acute Myeloid Leukemia
Present and Future Impact of Cytogenetics on Acute Myeloid Leukemialarriva
 
प्राथमिक चिकित्सा/First Aid{HINDI}
प्राथमिक चिकित्सा/First Aid{HINDI}प्राथमिक चिकित्सा/First Aid{HINDI}
प्राथमिक चिकित्सा/First Aid{HINDI}superuser99
 
Punctuality In Schools
Punctuality In SchoolsPunctuality In Schools
Punctuality In Schoolssuperuser99
 

Destacado (14)

Matematicas cuarto grado 4 perio
Matematicas cuarto grado 4 perioMatematicas cuarto grado 4 perio
Matematicas cuarto grado 4 perio
 
Harnessing The Power Of Light - Topic For - International Year Of Light 2015
Harnessing The Power Of Light - Topic For - International Year Of Light 2015Harnessing The Power Of Light - Topic For - International Year Of Light 2015
Harnessing The Power Of Light - Topic For - International Year Of Light 2015
 
Dabigatran for Atrial Fibrillation: Cardioversion and Ablation
Dabigatran for Atrial Fibrillation: Cardioversion and AblationDabigatran for Atrial Fibrillation: Cardioversion and Ablation
Dabigatran for Atrial Fibrillation: Cardioversion and Ablation
 
Peace - A Beautiful Message
Peace - A Beautiful MessagePeace - A Beautiful Message
Peace - A Beautiful Message
 
Rabies
RabiesRabies
Rabies
 
Independence Day - India
Independence Day - India Independence Day - India
Independence Day - India
 
News Paper Production
News Paper ProductionNews Paper Production
News Paper Production
 
Venous Thromboembolism in the Cancer Patient
Venous Thromboembolism in the Cancer PatientVenous Thromboembolism in the Cancer Patient
Venous Thromboembolism in the Cancer Patient
 
First aid
First aidFirst aid
First aid
 
Krishna Janmashtami ( Hindi )
 Krishna Janmashtami ( Hindi ) Krishna Janmashtami ( Hindi )
Krishna Janmashtami ( Hindi )
 
Rifaximin for Recurrent Clostridium Difficile Infections
Rifaximin for Recurrent Clostridium Difficile InfectionsRifaximin for Recurrent Clostridium Difficile Infections
Rifaximin for Recurrent Clostridium Difficile Infections
 
Present and Future Impact of Cytogenetics on Acute Myeloid Leukemia
Present and Future Impact of Cytogenetics on Acute Myeloid LeukemiaPresent and Future Impact of Cytogenetics on Acute Myeloid Leukemia
Present and Future Impact of Cytogenetics on Acute Myeloid Leukemia
 
प्राथमिक चिकित्सा/First Aid{HINDI}
प्राथमिक चिकित्सा/First Aid{HINDI}प्राथमिक चिकित्सा/First Aid{HINDI}
प्राथमिक चिकित्सा/First Aid{HINDI}
 
Punctuality In Schools
Punctuality In SchoolsPunctuality In Schools
Punctuality In Schools
 

Último

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 XXIhmpuellon
 
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 eyvanamcerpam
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
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 BasicosJhonJairoRodriguezCe
 
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...JohnRamos830530
 
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 estossgonzalezp1
 
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 ASPECTOSpptxJorgeParada26
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
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.FlorenciaCattelani
 

Último (10)

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
 
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
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
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...
 
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
 
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
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
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.
 

Deploy. Herramientas para publicar nuestros proyectos.