SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Deployer
Despliegue rápido y sencillo
de aplicaciones (Web)
Meetups
@SergioCarracedoWeb developer at OPSOU
Php Developer Drupal enthusiast
@SergioCarracedo
¿Qué entendemos despliegue?
Meetups
Es la forma en la que llevamos a una o varias máquinas remotas:
● El código y/o sus cambios
● Los archivos de configuraciones
● Los archivos binarios: Imágenes, videos, documentos
● …..
● Todo lo que necesitamos para hacer funcionar nuestra aplicación
¿Como podemos hacer el despliegue?
Meetups
Copiar código (a mano)
Subida
● FTP / SFTP / SSH / Rsync
● Modificar los archivos de configuración a mano en el destino
● Borrar a mano caches
● etc…
Es muy ineficiente / cansado / aburrido
No podemos hacer rollback
Necesitamos saber la lista de ficheros cambiados
¿Como podemos hacer el despliegue? 2
Meetups
Control de versiones (GIT / SVN)
Ya tenemos nuestro código en git (o deberíamos)
git clone -b master
Seguimos teniendo que tocar la ficheros de configuración a mano.
Es posible hacer rollback pero no es rápido (o tan rápido como puede llegar a ser)
Los archivos de usuario (imágenes, videos, etc) no deberían estar en el repo.
¿Como podemos hacer el despliegue? 3
Meetups
Sistema de despliegue
Es la “Solución”
Podemos hacer rollback “instantáneo” y a distintos puntos, no solo a la última versión
Creación automática de archivos de configuración para cada máquina
Gestión de archivos / directorios escribibles
Gestión de carpetas compartidas
Instalación de vendors
Sistemas de despliegue
Meetups
Existen muchas opciones
● Capistrano http://capistranorb.com/ (Ruby)
● Ansistrano https://github.com/ansistrano (Python)
● Rocketeer http://rocketeer.autopergamene.eu/ (PHP)
● Fabric https://get.fabric.io/ (Python)
Deployer
http://deployer.org/
Deployer
Meetups
● Gestor de despliegues escrito en PHP
● Modular: Permite creación de recetas personalizadas
● Rollback
● Despliegues consistentes en distintos servidores (entornos)
Instalación
mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep
o
composer require deployer/deployer:^3.2
Estructura de directorios
Meetups
/your/project/path
|--releases
| |--20150513120631
| |--...
|--shared
| |--...
|--current -> /your/project/path/releases/20150513120631
Deployer
Meetups
Creamos un archivo de configuración en la raíz del proyecto con el nombre deploy.php
<?php
// All Deployer recipes are based on `recipe/common.php`.
require 'recipe/common.php';
require './.deployer/myrecipe.php';
task('deploy', ['deploy:prepare', 'deploy:release', 'deploy:update_code',
‘deploy:shared', 'deploy:writable', 'deploy:symlink', 'cleanup' ]);
serverList('.deployer/servers.yml');
set(‘keep_releases’, 5);
set('repository', 'git@bitbucket.org:sergiocarracedo/phpvigo_deployer.git');
Deployer: Receta 1
Meetups
Creamos la receta myrecipe.php
<?php
set('shared_files', [
'.htaccess',
'settings.inc.php'
]);
set('shared_dirs', [
'user_imgs',
'cache',
]);
set('writable_dirs', [
'user_img',
'cache',
]);
Deployer: Permisos de escritura
Meetups
Necesitamos añadir al sudoers
user_name ALL=(ALL) NOPASSWD: /usr/bin/setfacl
ACLs
http://rm-rf.es/acl-access-control-list-en-sistemas-de-ficheros-gnulinux/
Nos permite mejor granularidad en los permisos del sistema de archivos
Podemos asignar permisos a un usuario concreto incluso aunque no sea
el propietario ni esté en el grupo del propietario
Si no tenemos ACLs lo podemos hacer a mano (eliminando la tarea deploy:writable)
Deployer: Receta 2
Meetups
task('cc:smarty', function () {
if (askConfirmation('Are you sure to clear SMARTY cache?')) {
run('cd {{deploy_path}}/cache/smarty && rm -f *');
}
});
task('cc:static', function () {
if (askConfirmation('Are you sure to clear STATIC cache?')) {
run('cd {{deploy_path}}/cache/static && rm -f *');
}
});
task('cc:all', [ 'cc:smarty', 'cc:static' ]);
task('upload_img', function () {
if (askConfirmation('Are you sure to upload user imgs?')) {
uploadEnv('user_imgs', '{{deploy_path}}/shared/user_imgs');
}
});
Deployer: Receta 2
Meetups
task('config:generate', function () {
if (askConfirmation('Are you sure to generate settings.inc.php?')) {
$basepath = dirname(__FILE__);
$secrets = env('settings');
//**********************************************//
//Load template and replace secrets / values
//***********************************************//
writeln('settings.php created succesfuly');
$tmpFilename = tempnam( $basepath , 'tmp_settings_' );
file_put_contents($tmpFilename, $settings);
uploadEnv($tmpFilename, '{{deploy_path}}/shared/settings.php');
unlink($tmpFilename);
}
});
Deployer: Server.yml
Meetups
dev:
host: 127.0.0.1:15022
stage: dev
forward_agent: true
user: deploy
password: test2012
deploy_path : /home/deploy/
branch: dev
settings:
user_img_dir: user_imgs
base_path: localhost:9080
tpl_dir: ./assets/t
tpl_cache_dir: ./cache/t
tpl_compile_dir: ./cache/t_c
prod:
host: 127.0.0.1:15022
stage: production
…
…
Deployer: Plantilla settings
Meetups
<?php
$settings = array();
$settings['user_img_dir'] = '{{user_img_dir}}';
$settings['base_path'] = '{{base_path}}';
$settings['tpl_dir'] = '{{tpl_dir}}';
$settings['tpl_cache_dir'] = '{{tpl_cache_dir}}';
$settings['tpl_compile_dir'] = '{{tpl_compile_dir}}';
Demo Time
Meetups
Otras funcionalidades
Meetups
● Triggers: Podemos definir tareas que se ejecuten antes o después de otra tarea
● Tareas sólo en un entorno: Por ejemplo una tarea que solo se pueda ejecutar en dev
● Agrupación de servidores por Stage lo que permite múltiples despliegues simultáneos
● Ejecución remota: Por ejemplo lanzar composer en remoto
Meetups
@SergioCarracedoWeb developer at OPSOU
Php Developer Drupal enthusiast
@SergioCarracedo
echo PHP_EOF;
¿Preguntas?

Más contenido relacionado

La actualidad más candente

Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open sourcescrumecuador
 
Ansible DevOps Day Peru 2016
Ansible DevOps Day Peru 2016Ansible DevOps Day Peru 2016
Ansible DevOps Day Peru 2016Raul Hugo
 
Administracion de software en debian y derivados (comandos) taringa!
Administracion de software en debian y derivados (comandos)   taringa!Administracion de software en debian y derivados (comandos)   taringa!
Administracion de software en debian y derivados (comandos) taringa!Frank Davila
 
Introducción a Servidor HTTP Apache
Introducción a Servidor HTTP ApacheIntroducción a Servidor HTTP Apache
Introducción a Servidor HTTP ApacheIker Canarias
 
Ansible administracion simplificada
Ansible   administracion simplificada Ansible   administracion simplificada
Ansible administracion simplificada bcoca
 
Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible Moisés Maciá
 
Ansible + tacos at dev hangout
Ansible + tacos at dev hangoutAnsible + tacos at dev hangout
Ansible + tacos at dev hangoutOscar Gonzalez
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completoAndrés Amaya
 

La actualidad más candente (17)

Crear pagina apache
Crear pagina apacheCrear pagina apache
Crear pagina apache
 
01intalacion de apache
01intalacion de apache01intalacion de apache
01intalacion de apache
 
Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open source
 
Ansible DevOps Day Peru 2016
Ansible DevOps Day Peru 2016Ansible DevOps Day Peru 2016
Ansible DevOps Day Peru 2016
 
0 entorno php
0 entorno php0 entorno php
0 entorno php
 
Drupal 8, de cero a producción en minutos.
Drupal 8, de cero a producción en minutos.Drupal 8, de cero a producción en minutos.
Drupal 8, de cero a producción en minutos.
 
Administracion de software en debian y derivados (comandos) taringa!
Administracion de software en debian y derivados (comandos)   taringa!Administracion de software en debian y derivados (comandos)   taringa!
Administracion de software en debian y derivados (comandos) taringa!
 
Introducción a Servidor HTTP Apache
Introducción a Servidor HTTP ApacheIntroducción a Servidor HTTP Apache
Introducción a Servidor HTTP Apache
 
Entorno PHP
Entorno PHPEntorno PHP
Entorno PHP
 
Ansible administracion simplificada
Ansible   administracion simplificada Ansible   administracion simplificada
Ansible administracion simplificada
 
Primeros pasos con Docker
Primeros pasos con DockerPrimeros pasos con Docker
Primeros pasos con Docker
 
Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible
 
Introducción a Ansible
Introducción a AnsibleIntroducción a Ansible
Introducción a Ansible
 
php
phpphp
php
 
Tz2014 workshop rundeck
Tz2014 workshop rundeckTz2014 workshop rundeck
Tz2014 workshop rundeck
 
Ansible + tacos at dev hangout
Ansible + tacos at dev hangoutAnsible + tacos at dev hangout
Ansible + tacos at dev hangout
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 

Destacado

Toi di giua hoang hon
Toi di giua hoang honToi di giua hoang hon
Toi di giua hoang hontaivang
 
Nelson Mandela. CEIP A Solaina
 Nelson Mandela. CEIP A Solaina Nelson Mandela. CEIP A Solaina
Nelson Mandela. CEIP A SolainaA Solaina
 
Earn Money Online India
Earn Money Online IndiaEarn Money Online India
Earn Money Online Indiaaffroz
 
Nghe nghiep nguoi me
Nghe nghiep nguoi me Nghe nghiep nguoi me
Nghe nghiep nguoi me taivang
 
Chuyen do que huong
Chuyen do que huong   Chuyen do que huong
Chuyen do que huong taivang
 
Corso Dirigenti Cooperative 25.03 Plenaria
Corso Dirigenti Cooperative 25.03 PlenariaCorso Dirigenti Cooperative 25.03 Plenaria
Corso Dirigenti Cooperative 25.03 PlenariaLauraPucci
 
11 . 14 nho tuoi tho ha noi
11 . 14 nho tuoi tho ha noi 11 . 14 nho tuoi tho ha noi
11 . 14 nho tuoi tho ha noi taivang
 
10 37 gom thanh ha web
10 37 gom thanh ha web10 37 gom thanh ha web
10 37 gom thanh ha webtaivang
 
Digitizing the mobile_workforce_electronic_health_records_for_hospice
Digitizing the mobile_workforce_electronic_health_records_for_hospiceDigitizing the mobile_workforce_electronic_health_records_for_hospice
Digitizing the mobile_workforce_electronic_health_records_for_hospiceQuestexConf
 
Ditch_Leads_and_Acquire_Customers
Ditch_Leads_and_Acquire_CustomersDitch_Leads_and_Acquire_Customers
Ditch_Leads_and_Acquire_CustomersQuestexConf
 
Managing content in_a_mobile_world
Managing content in_a_mobile_worldManaging content in_a_mobile_world
Managing content in_a_mobile_worldQuestexConf
 
Ecm mythbusters the_real_story_behind_vendor_marketing
Ecm mythbusters the_real_story_behind_vendor_marketingEcm mythbusters the_real_story_behind_vendor_marketing
Ecm mythbusters the_real_story_behind_vendor_marketingQuestexConf
 
Pablo,miguel,gorka y sergio
Pablo,miguel,gorka y sergioPablo,miguel,gorka y sergio
Pablo,miguel,gorka y sergioA Solaina
 
Bong ca
Bong ca Bong ca
Bong ca taivang
 
Conference marketing presentation
Conference marketing presentationConference marketing presentation
Conference marketing presentationnanvuwc
 
Simulation: Winning with a Faculty Training Website Repository INACSL 2013
Simulation: Winning with a Faculty Training Website Repository INACSL 2013Simulation: Winning with a Faculty Training Website Repository INACSL 2013
Simulation: Winning with a Faculty Training Website Repository INACSL 2013Lori Lioce
 
Visual dictionary
Visual dictionaryVisual dictionary
Visual dictionaryJosh Jordan
 
Apostila execução trabalhista
Apostila  execução trabalhistaApostila  execução trabalhista
Apostila execução trabalhistaDébora Bastos
 
Finding the right_portal_for_e_government_services
Finding the right_portal_for_e_government_servicesFinding the right_portal_for_e_government_services
Finding the right_portal_for_e_government_servicesQuestexConf
 

Destacado (20)

Toi di giua hoang hon
Toi di giua hoang honToi di giua hoang hon
Toi di giua hoang hon
 
Nelson Mandela. CEIP A Solaina
 Nelson Mandela. CEIP A Solaina Nelson Mandela. CEIP A Solaina
Nelson Mandela. CEIP A Solaina
 
Earn Money Online India
Earn Money Online IndiaEarn Money Online India
Earn Money Online India
 
Nghe nghiep nguoi me
Nghe nghiep nguoi me Nghe nghiep nguoi me
Nghe nghiep nguoi me
 
Chuyen do que huong
Chuyen do que huong   Chuyen do que huong
Chuyen do que huong
 
Corso Dirigenti Cooperative 25.03 Plenaria
Corso Dirigenti Cooperative 25.03 PlenariaCorso Dirigenti Cooperative 25.03 Plenaria
Corso Dirigenti Cooperative 25.03 Plenaria
 
11 . 14 nho tuoi tho ha noi
11 . 14 nho tuoi tho ha noi 11 . 14 nho tuoi tho ha noi
11 . 14 nho tuoi tho ha noi
 
10 37 gom thanh ha web
10 37 gom thanh ha web10 37 gom thanh ha web
10 37 gom thanh ha web
 
Digitizing the mobile_workforce_electronic_health_records_for_hospice
Digitizing the mobile_workforce_electronic_health_records_for_hospiceDigitizing the mobile_workforce_electronic_health_records_for_hospice
Digitizing the mobile_workforce_electronic_health_records_for_hospice
 
Ditch_Leads_and_Acquire_Customers
Ditch_Leads_and_Acquire_CustomersDitch_Leads_and_Acquire_Customers
Ditch_Leads_and_Acquire_Customers
 
Actividad ecbi
Actividad ecbiActividad ecbi
Actividad ecbi
 
Managing content in_a_mobile_world
Managing content in_a_mobile_worldManaging content in_a_mobile_world
Managing content in_a_mobile_world
 
Ecm mythbusters the_real_story_behind_vendor_marketing
Ecm mythbusters the_real_story_behind_vendor_marketingEcm mythbusters the_real_story_behind_vendor_marketing
Ecm mythbusters the_real_story_behind_vendor_marketing
 
Pablo,miguel,gorka y sergio
Pablo,miguel,gorka y sergioPablo,miguel,gorka y sergio
Pablo,miguel,gorka y sergio
 
Bong ca
Bong ca Bong ca
Bong ca
 
Conference marketing presentation
Conference marketing presentationConference marketing presentation
Conference marketing presentation
 
Simulation: Winning with a Faculty Training Website Repository INACSL 2013
Simulation: Winning with a Faculty Training Website Repository INACSL 2013Simulation: Winning with a Faculty Training Website Repository INACSL 2013
Simulation: Winning with a Faculty Training Website Repository INACSL 2013
 
Visual dictionary
Visual dictionaryVisual dictionary
Visual dictionary
 
Apostila execução trabalhista
Apostila  execução trabalhistaApostila  execução trabalhista
Apostila execução trabalhista
 
Finding the right_portal_for_e_government_services
Finding the right_portal_for_e_government_servicesFinding the right_portal_for_e_government_services
Finding the right_portal_for_e_government_services
 

Similar a Rápido despliegue aplicaciones Web con Deployer

Php01 instalacion de apache y php en linux
Php01 instalacion de apache y php en linuxPhp01 instalacion de apache y php en linux
Php01 instalacion de apache y php en linuxJulio Pari
 
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfPHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfRaaulroodriguez
 
97132962-instalacion-de-open meetings-en-squeeze
 97132962-instalacion-de-open meetings-en-squeeze 97132962-instalacion-de-open meetings-en-squeeze
97132962-instalacion-de-open meetings-en-squeezexavazquez
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y BackEric Zeidan
 
Servidor PXE de Instalaciones GNU/Linux
Servidor PXE de Instalaciones GNU/LinuxServidor PXE de Instalaciones GNU/Linux
Servidor PXE de Instalaciones GNU/Linuxfraterneo GNU/Linux
 
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...
Sesion Nº 03   Tecnologias Web I   Instalación Y Configuración Del Servidor A...Sesion Nº 03   Tecnologias Web I   Instalación Y Configuración Del Servidor A...
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...Edgar A. Cruz Huaman
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARPablo Godel
 
2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...
2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...
2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...Andrea Guaygua
 
Crea tus instaladores para linux (fedora, ubuntu, etc) sencillamente
Crea tus instaladores para linux (fedora, ubuntu, etc) sencillamenteCrea tus instaladores para linux (fedora, ubuntu, etc) sencillamente
Crea tus instaladores para linux (fedora, ubuntu, etc) sencillamenteKuboosoft
 
Desarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend FrameworkDesarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend Frameworkricsoc
 
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y GitDesplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Gitmoisesgallego
 
instalacion e intregracion de OcsInventory-NG y GLPI
instalacion e intregracion de OcsInventory-NG y GLPIinstalacion e intregracion de OcsInventory-NG y GLPI
instalacion e intregracion de OcsInventory-NG y GLPImiltonvf
 
Configuracion basica de centos 6.3 linux v1
Configuracion basica de centos 6.3 linux v1Configuracion basica de centos 6.3 linux v1
Configuracion basica de centos 6.3 linux v1Ecatel SRL
 
633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completoMETROPOLITANO
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completoErnesto Gamboa
 
633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completoUbeimar Navarro Herrera
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completoIgnacio Reyes
 

Similar a Rápido despliegue aplicaciones Web con Deployer (20)

Php01 instalacion de apache y php en linux
Php01 instalacion de apache y php en linuxPhp01 instalacion de apache y php en linux
Php01 instalacion de apache y php en linux
 
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfPHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
 
97132962-instalacion-de-open meetings-en-squeeze
 97132962-instalacion-de-open meetings-en-squeeze 97132962-instalacion-de-open meetings-en-squeeze
97132962-instalacion-de-open meetings-en-squeeze
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y Back
 
Servidor PXE de Instalaciones GNU/Linux
Servidor PXE de Instalaciones GNU/LinuxServidor PXE de Instalaciones GNU/Linux
Servidor PXE de Instalaciones GNU/Linux
 
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...
Sesion Nº 03   Tecnologias Web I   Instalación Y Configuración Del Servidor A...Sesion Nº 03   Tecnologias Web I   Instalación Y Configuración Del Servidor A...
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
 
Php andmysql
Php andmysqlPhp andmysql
Php andmysql
 
Kitsune documentation
Kitsune documentationKitsune documentation
Kitsune documentation
 
2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...
2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...
2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...
 
Crea tus instaladores para linux (fedora, ubuntu, etc) sencillamente
Crea tus instaladores para linux (fedora, ubuntu, etc) sencillamenteCrea tus instaladores para linux (fedora, ubuntu, etc) sencillamente
Crea tus instaladores para linux (fedora, ubuntu, etc) sencillamente
 
Mercurial
MercurialMercurial
Mercurial
 
Desarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend FrameworkDesarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend Framework
 
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y GitDesplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
 
instalacion e intregracion de OcsInventory-NG y GLPI
instalacion e intregracion de OcsInventory-NG y GLPIinstalacion e intregracion de OcsInventory-NG y GLPI
instalacion e intregracion de OcsInventory-NG y GLPI
 
Configuracion basica de centos 6.3 linux v1
Configuracion basica de centos 6.3 linux v1Configuracion basica de centos 6.3 linux v1
Configuracion basica de centos 6.3 linux v1
 
633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 

Último

GESTOS Y POSTURAS EN LA MISA PARA LOS MONAGUILLOS.pptx
GESTOS Y POSTURAS EN LA MISA PARA LOS MONAGUILLOS.pptxGESTOS Y POSTURAS EN LA MISA PARA LOS MONAGUILLOS.pptx
GESTOS Y POSTURAS EN LA MISA PARA LOS MONAGUILLOS.pptxCarlosRizos
 
Diapositiva del JUICIO VALORATIVO - 2024
Diapositiva del JUICIO VALORATIVO - 2024Diapositiva del JUICIO VALORATIVO - 2024
Diapositiva del JUICIO VALORATIVO - 2024KellySue4
 
PRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdf
PRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdfPRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdf
PRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdfRubenBrayanVQ
 
S.3 El debate Impacto de la Inteligencia Artificial en la Sociedad Moderna
S.3 El debate Impacto de la Inteligencia Artificial en la Sociedad ModernaS.3 El debate Impacto de la Inteligencia Artificial en la Sociedad Moderna
S.3 El debate Impacto de la Inteligencia Artificial en la Sociedad ModernaRodrigoReynaldo1
 
Figuas de Dicción.pptx ,definición, clasificación, ejemplos importantes de...
Figuas de Dicción.pptx ,definición, clasificación, ejemplos   importantes  de...Figuas de Dicción.pptx ,definición, clasificación, ejemplos   importantes  de...
Figuas de Dicción.pptx ,definición, clasificación, ejemplos importantes de...marisolmendieta1310
 
CRIMEN ORGANIZADO . CONFERENCIA PNP.pptx
CRIMEN ORGANIZADO . CONFERENCIA PNP.pptxCRIMEN ORGANIZADO . CONFERENCIA PNP.pptx
CRIMEN ORGANIZADO . CONFERENCIA PNP.pptxHugoGuerra28
 
Presentación conformación brigada de emergencia.ppt
Presentación conformación brigada de emergencia.pptPresentación conformación brigada de emergencia.ppt
Presentación conformación brigada de emergencia.pptaletapiaapr
 
CURSO DE INICIACIÓN Á ASTRONOMÍA: O noso lugar no universo
CURSO DE INICIACIÓN Á ASTRONOMÍA: O noso lugar no universoCURSO DE INICIACIÓN Á ASTRONOMÍA: O noso lugar no universo
CURSO DE INICIACIÓN Á ASTRONOMÍA: O noso lugar no universoanoiteenecesaria
 
412414553-La-Globalizacion-en-El-Arte.pptx
412414553-La-Globalizacion-en-El-Arte.pptx412414553-La-Globalizacion-en-El-Arte.pptx
412414553-La-Globalizacion-en-El-Arte.pptxAndresSantana60
 
CURSO DE INICIACIÓN Á ASTRONOMÍA Eclipses na Coruña
CURSO DE INICIACIÓN Á ASTRONOMÍA Eclipses na CoruñaCURSO DE INICIACIÓN Á ASTRONOMÍA Eclipses na Coruña
CURSO DE INICIACIÓN Á ASTRONOMÍA Eclipses na Coruñaanoiteenecesaria
 

Último (10)

GESTOS Y POSTURAS EN LA MISA PARA LOS MONAGUILLOS.pptx
GESTOS Y POSTURAS EN LA MISA PARA LOS MONAGUILLOS.pptxGESTOS Y POSTURAS EN LA MISA PARA LOS MONAGUILLOS.pptx
GESTOS Y POSTURAS EN LA MISA PARA LOS MONAGUILLOS.pptx
 
Diapositiva del JUICIO VALORATIVO - 2024
Diapositiva del JUICIO VALORATIVO - 2024Diapositiva del JUICIO VALORATIVO - 2024
Diapositiva del JUICIO VALORATIVO - 2024
 
PRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdf
PRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdfPRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdf
PRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdf
 
S.3 El debate Impacto de la Inteligencia Artificial en la Sociedad Moderna
S.3 El debate Impacto de la Inteligencia Artificial en la Sociedad ModernaS.3 El debate Impacto de la Inteligencia Artificial en la Sociedad Moderna
S.3 El debate Impacto de la Inteligencia Artificial en la Sociedad Moderna
 
Figuas de Dicción.pptx ,definición, clasificación, ejemplos importantes de...
Figuas de Dicción.pptx ,definición, clasificación, ejemplos   importantes  de...Figuas de Dicción.pptx ,definición, clasificación, ejemplos   importantes  de...
Figuas de Dicción.pptx ,definición, clasificación, ejemplos importantes de...
 
CRIMEN ORGANIZADO . CONFERENCIA PNP.pptx
CRIMEN ORGANIZADO . CONFERENCIA PNP.pptxCRIMEN ORGANIZADO . CONFERENCIA PNP.pptx
CRIMEN ORGANIZADO . CONFERENCIA PNP.pptx
 
Presentación conformación brigada de emergencia.ppt
Presentación conformación brigada de emergencia.pptPresentación conformación brigada de emergencia.ppt
Presentación conformación brigada de emergencia.ppt
 
CURSO DE INICIACIÓN Á ASTRONOMÍA: O noso lugar no universo
CURSO DE INICIACIÓN Á ASTRONOMÍA: O noso lugar no universoCURSO DE INICIACIÓN Á ASTRONOMÍA: O noso lugar no universo
CURSO DE INICIACIÓN Á ASTRONOMÍA: O noso lugar no universo
 
412414553-La-Globalizacion-en-El-Arte.pptx
412414553-La-Globalizacion-en-El-Arte.pptx412414553-La-Globalizacion-en-El-Arte.pptx
412414553-La-Globalizacion-en-El-Arte.pptx
 
CURSO DE INICIACIÓN Á ASTRONOMÍA Eclipses na Coruña
CURSO DE INICIACIÓN Á ASTRONOMÍA Eclipses na CoruñaCURSO DE INICIACIÓN Á ASTRONOMÍA Eclipses na Coruña
CURSO DE INICIACIÓN Á ASTRONOMÍA Eclipses na Coruña
 

Rápido despliegue aplicaciones Web con Deployer

  • 1.
  • 2. Deployer Despliegue rápido y sencillo de aplicaciones (Web)
  • 3. Meetups @SergioCarracedoWeb developer at OPSOU Php Developer Drupal enthusiast @SergioCarracedo
  • 4. ¿Qué entendemos despliegue? Meetups Es la forma en la que llevamos a una o varias máquinas remotas: ● El código y/o sus cambios ● Los archivos de configuraciones ● Los archivos binarios: Imágenes, videos, documentos ● ….. ● Todo lo que necesitamos para hacer funcionar nuestra aplicación
  • 5. ¿Como podemos hacer el despliegue? Meetups Copiar código (a mano) Subida ● FTP / SFTP / SSH / Rsync ● Modificar los archivos de configuración a mano en el destino ● Borrar a mano caches ● etc… Es muy ineficiente / cansado / aburrido No podemos hacer rollback Necesitamos saber la lista de ficheros cambiados
  • 6. ¿Como podemos hacer el despliegue? 2 Meetups Control de versiones (GIT / SVN) Ya tenemos nuestro código en git (o deberíamos) git clone -b master Seguimos teniendo que tocar la ficheros de configuración a mano. Es posible hacer rollback pero no es rápido (o tan rápido como puede llegar a ser) Los archivos de usuario (imágenes, videos, etc) no deberían estar en el repo.
  • 7. ¿Como podemos hacer el despliegue? 3 Meetups Sistema de despliegue Es la “Solución” Podemos hacer rollback “instantáneo” y a distintos puntos, no solo a la última versión Creación automática de archivos de configuración para cada máquina Gestión de archivos / directorios escribibles Gestión de carpetas compartidas Instalación de vendors
  • 8. Sistemas de despliegue Meetups Existen muchas opciones ● Capistrano http://capistranorb.com/ (Ruby) ● Ansistrano https://github.com/ansistrano (Python) ● Rocketeer http://rocketeer.autopergamene.eu/ (PHP) ● Fabric https://get.fabric.io/ (Python) Deployer http://deployer.org/
  • 9. Deployer Meetups ● Gestor de despliegues escrito en PHP ● Modular: Permite creación de recetas personalizadas ● Rollback ● Despliegues consistentes en distintos servidores (entornos) Instalación mv deployer.phar /usr/local/bin/dep chmod +x /usr/local/bin/dep o composer require deployer/deployer:^3.2
  • 10. Estructura de directorios Meetups /your/project/path |--releases | |--20150513120631 | |--... |--shared | |--... |--current -> /your/project/path/releases/20150513120631
  • 11. Deployer Meetups Creamos un archivo de configuración en la raíz del proyecto con el nombre deploy.php <?php // All Deployer recipes are based on `recipe/common.php`. require 'recipe/common.php'; require './.deployer/myrecipe.php'; task('deploy', ['deploy:prepare', 'deploy:release', 'deploy:update_code', ‘deploy:shared', 'deploy:writable', 'deploy:symlink', 'cleanup' ]); serverList('.deployer/servers.yml'); set(‘keep_releases’, 5); set('repository', 'git@bitbucket.org:sergiocarracedo/phpvigo_deployer.git');
  • 12. Deployer: Receta 1 Meetups Creamos la receta myrecipe.php <?php set('shared_files', [ '.htaccess', 'settings.inc.php' ]); set('shared_dirs', [ 'user_imgs', 'cache', ]); set('writable_dirs', [ 'user_img', 'cache', ]);
  • 13. Deployer: Permisos de escritura Meetups Necesitamos añadir al sudoers user_name ALL=(ALL) NOPASSWD: /usr/bin/setfacl ACLs http://rm-rf.es/acl-access-control-list-en-sistemas-de-ficheros-gnulinux/ Nos permite mejor granularidad en los permisos del sistema de archivos Podemos asignar permisos a un usuario concreto incluso aunque no sea el propietario ni esté en el grupo del propietario Si no tenemos ACLs lo podemos hacer a mano (eliminando la tarea deploy:writable)
  • 14. Deployer: Receta 2 Meetups task('cc:smarty', function () { if (askConfirmation('Are you sure to clear SMARTY cache?')) { run('cd {{deploy_path}}/cache/smarty && rm -f *'); } }); task('cc:static', function () { if (askConfirmation('Are you sure to clear STATIC cache?')) { run('cd {{deploy_path}}/cache/static && rm -f *'); } }); task('cc:all', [ 'cc:smarty', 'cc:static' ]); task('upload_img', function () { if (askConfirmation('Are you sure to upload user imgs?')) { uploadEnv('user_imgs', '{{deploy_path}}/shared/user_imgs'); } });
  • 15. Deployer: Receta 2 Meetups task('config:generate', function () { if (askConfirmation('Are you sure to generate settings.inc.php?')) { $basepath = dirname(__FILE__); $secrets = env('settings'); //**********************************************// //Load template and replace secrets / values //***********************************************// writeln('settings.php created succesfuly'); $tmpFilename = tempnam( $basepath , 'tmp_settings_' ); file_put_contents($tmpFilename, $settings); uploadEnv($tmpFilename, '{{deploy_path}}/shared/settings.php'); unlink($tmpFilename); } });
  • 16. Deployer: Server.yml Meetups dev: host: 127.0.0.1:15022 stage: dev forward_agent: true user: deploy password: test2012 deploy_path : /home/deploy/ branch: dev settings: user_img_dir: user_imgs base_path: localhost:9080 tpl_dir: ./assets/t tpl_cache_dir: ./cache/t tpl_compile_dir: ./cache/t_c prod: host: 127.0.0.1:15022 stage: production … …
  • 17. Deployer: Plantilla settings Meetups <?php $settings = array(); $settings['user_img_dir'] = '{{user_img_dir}}'; $settings['base_path'] = '{{base_path}}'; $settings['tpl_dir'] = '{{tpl_dir}}'; $settings['tpl_cache_dir'] = '{{tpl_cache_dir}}'; $settings['tpl_compile_dir'] = '{{tpl_compile_dir}}';
  • 19. Otras funcionalidades Meetups ● Triggers: Podemos definir tareas que se ejecuten antes o después de otra tarea ● Tareas sólo en un entorno: Por ejemplo una tarea que solo se pueda ejecutar en dev ● Agrupación de servidores por Stage lo que permite múltiples despliegues simultáneos ● Ejecución remota: Por ejemplo lanzar composer en remoto
  • 20. Meetups @SergioCarracedoWeb developer at OPSOU Php Developer Drupal enthusiast @SergioCarracedo echo PHP_EOF; ¿Preguntas?