SlideShare una empresa de Scribd logo
Drupal 8:
Deploy con capistrano
¿Qué es Capistrano?
Capistrano (http://capistranorb.com/) es una herramienta escrita en ruby para la
automatización de tareas en servidores remotos y realizar despliegues en
estructuras complejas.
Capistrano NO se instala en la(s) máquina(s) de destino, el único requisito en los
entornos es ssh. Podemos centralizar los despliegues en una máquina con
acceso ssh a todas las demás (maquina de deploy) y realizar las diferentes tareas
(backups, tags de git, despliegues) con total seguridad y de una manera
controlada.
Requisitos
En la(s) máquina(s) de destino tenemos que tener acceso vía ssh, nada más!
para todo lo demás capistrano se apaña.
En la máquina de deploy tenemos que tener instalado… Capistrano, y por lo tanto
ruby 2.0 o superior.
Hemos preparado una plantilla para los entornos de deploy que simplifica la
configuración:
https://github.com/davidgallego/drupal8_capistrano
Qué hace Capistrano
- Tareas básicas de deploy:
- Sube tu código al/los servidor(es) en
releases.
- Tiene directorios y archivos
compartidos entre releases.
- Puedes hacer rollback en cualquier
momento.
- Custom Task.
- Creación de copias de seguridad DB
- Ejecución de comandos drush en
Estructura:
├── current ->
/var/www/my_app_name/releases/20150
120114500/
├── releases
│ ├── 20150080072500
│ ├── 20150090083000
│ ├── 20150100093500
│ ├── 20150110104000
│ └── 20150120114500
├── repo
│ └── <VCS related data>
├── revisions.log
└── shared
└── <linked_files and linked_dirs>
Desarrollo
Instalamos drupal desde https://github.com/drupal-composer/drupal-project/, el
core, los themes contribuidos y los módulos contribuidos se instalan desde
composer, por lo tanto no están en el repositorio.
Los módulos se instalan y actualizan con composer:
composer require drupal/redirect ~8.1
composer update drupal/core
La configuración va en /sites/default/settings.local.php fuera del repo.
Configuración de Capistrano
Genérica (capistrano/config/deploy.rb)
- Configuramos el repo: set :repo_url, 'git@example.com:path/to/repo/reponame.git'
- Configuramos la ruta de drupal (normalmente /web): set :app_path, "path/to/drupal/dir"
Entornos (capistrano/config/deploy/{NOMBRE_ENTORNO}.rb)
- Configuramos la rama que se tiene que desplegar: set :branch, 'dev'
- Configuramos el directorio en el que se tiene que desplegar: set :deploy_to, 'path_in_the/server'
- Configuramos el/los servidores: server 'ip_or_domain.es', port: 22, user: 'deploy_user', roles:
%w{app db web}
Deploy
Ya estamos preparados para hacer deploy:
cap {entorno} deploy
Listo!
(bueno en realidad no….) la primera vez que hagamos el deploy será un FAIL, tenemos que crear el
archivo shared/web/sites/default/settings.local.php con la configuración del servidor.
cap {entorno} deploy y Ahora si!.. Listo!
Para rollback (despues de hacer mas de dos deploys)
cap {entorno} deploy:rollback (nos preguntará si queremos restaurar alguna copia de db)
Drupal 8:
Gestión de la configuración
Configuration Management Initiative
Por fin todo lo que sea configuración es exportable e importable a través de
archivos yml, pero…
¿CÓMO GESTIONAMOS ESTO?
Si sólo hay un desarrollador no hay ningún problema, haces los cambios que
haya que hacer, los exportas en desarrollo y los importas en el entorno que toque,
mola!
Si el proyecto es multi-developer XD … puede que haya algún problema
Problemas
Mike exporta su configuración y la sube al repositorio.
Bob crea un nuevo tipo contenido...
Bob recoge la configuración del repo y se la importa, (o dios!!!!, todos los cambios
de configuración que había realizado, no están….)
Bob, eres mu tonto
Problemas
Mike exporta su configuración y la sube al repositorio.
Bob actualiza su repo, exporta su configuración y la sube al repositorio.
Mike actualiza su repo e importa la configuración
O dios!!!!, todos los cambios de configuración que había realizado, no están….
Bob, eres mu tonto
Flow
Bueno entonces cómo!!!!
Una posible solución: http://nuvole.org/blog/2014/aug/20/git-workflow-managing-
drupal-8-configuration
Mike, si ha realizado cambios de configuración, antes de hacer un pull siempre
hace una exportación de su configuración, luego hace el pull, si tiene conflictos
los corrige y luego realiza un import de la configuración para incorporar los
cambios de sus compañeros.
En los entornos (dev|pre|pro) nunca se realizan cambios de configuración.
PROCESO
drush config-export
git add --all
git commit -m “Cambios en config”
git pull origin master
(Arreglamos posibles conflictos si fuera necesario)
drush config-import
git push origin master
¿¿¿CUAL ES TU SOLUCIÓN????

Más contenido relacionado

PPTX
Composer & SemVer
PDF
Anatomia de un módulo en drupal 8
PDF
Migrando data - DRUPAL
PPTX
Debian hecho david g.s.n
PPTX
Introducción a Laravel 5 - Un Framework para Artesanos Web
PPTX
02 instalacion eclipse y wamp server
ODP
Herramientas básicas de configuración.
Composer & SemVer
Anatomia de un módulo en drupal 8
Migrando data - DRUPAL
Debian hecho david g.s.n
Introducción a Laravel 5 - Un Framework para Artesanos Web
02 instalacion eclipse y wamp server
Herramientas básicas de configuración.

La actualidad más candente (18)

DOCX
Guía instalación koha por paquetes en ubuntu 16.04 lts actualizada
PDF
0 entorno php
PDF
Provisión Automática de máquinas con Ansible
PDF
Entorno PHP
PPTX
Mis comandos favoritos en linux parte 3
PDF
Crear servidor local de repositorios de paquetes DEB para Ubuntu
PDF
94 Php. Instalacion De Apache 2.0.58
PPTX
DOC
Instalación de apache en linux
PDF
Drupal 8, de cero a producción en minutos.
PDF
Introducción a Ansible
PPTX
Introduccion a Ansible
PDF
Lenguajes del lado del servidor y del lado del usuario
PPT
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...
PPTX
Aplicaciones web con php y my sql
Guía instalación koha por paquetes en ubuntu 16.04 lts actualizada
0 entorno php
Provisión Automática de máquinas con Ansible
Entorno PHP
Mis comandos favoritos en linux parte 3
Crear servidor local de repositorios de paquetes DEB para Ubuntu
94 Php. Instalacion De Apache 2.0.58
Instalación de apache en linux
Drupal 8, de cero a producción en minutos.
Introducción a Ansible
Introduccion a Ansible
Lenguajes del lado del servidor y del lado del usuario
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...
Aplicaciones web con php y my sql
Publicidad

Destacado (8)

PDF
תעודה השתתפות בסמינר מסע הגיבור דר סטיבן גיליגן
PPTX
Karisma master class veso2016 2016 10-01 v2
PDF
Die Geschäftsberichtssaison steht vor der Tür
PPTX
Sesntmedeknem
PPTX
Packaging cluster
PPTX
Täydellisen myyjän profiili - Haaga-Helia, myynnin koulutusohjelma
PDF
Capistrano
תעודה השתתפות בסמינר מסע הגיבור דר סטיבן גיליגן
Karisma master class veso2016 2016 10-01 v2
Die Geschäftsberichtssaison steht vor der Tür
Sesntmedeknem
Packaging cluster
Täydellisen myyjän profiili - Haaga-Helia, myynnin koulutusohjelma
Capistrano
Publicidad

Similar a Drupal 8: deploy capistrano y gestión de la configuración (20)

PDF
Capistrano drupalcamp-jerez-2015
PDF
Desplegando Drupal con Capistrano
PPTX
Cmi en drupal 8
PPTX
Presentación Jornada Drupal Sevilla Febrero 2015
PPT
Drupal workflow
PDF
Todo lo que necesitas saber sobre Drupal 8
PDF
Despliegue de aplicaciones PHP
ODP
Taller de Capistrano
PDF
Arquitectura de proyectos Drupal
ODP
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
PDF
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
PDF
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
PDF
Deployer Despliegue rápido de apps
PDF
Deployer - despliegue rápido de apps
PPTX
BancaCivica.es: Un caso de éxito Drupal en el sector bancario
PDF
Herramientas de trabajo para entorno LAMP
PDF
Deployer PHP. Presentación para #PHPSevilla
PDF
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
PDF
Innovando en el proceso de build y deploy
PPTX
Innovando en el proceso de build y deploy de aplicaciones GeneXus #GX24
Capistrano drupalcamp-jerez-2015
Desplegando Drupal con Capistrano
Cmi en drupal 8
Presentación Jornada Drupal Sevilla Febrero 2015
Drupal workflow
Todo lo que necesitas saber sobre Drupal 8
Despliegue de aplicaciones PHP
Taller de Capistrano
Arquitectura de proyectos Drupal
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
Deployer Despliegue rápido de apps
Deployer - despliegue rápido de apps
BancaCivica.es: Un caso de éxito Drupal en el sector bancario
Herramientas de trabajo para entorno LAMP
Deployer PHP. Presentación para #PHPSevilla
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
Innovando en el proceso de build y deploy
Innovando en el proceso de build y deploy de aplicaciones GeneXus #GX24

Más de Biko (20)

PDF
Guia Rapida Para Entender A La Generacion Z
PPTX
De maquetador a componentizador React, ¿qué ha cambiado?
PDF
Narrativas Metafóricas
PDF
¿Son los micropagos el nuevo mal?
PDF
Tendencias para la venta experiencial 2017
PDF
Triplica la conversión de tu landing page
PDF
Progressive web apps
PDF
¡Hola flexbox! Adiós float...
PDF
Working effectively with legacy code
PDF
Contribuir a drupal
PPTX
Apis killed the website star.pptx
PPTX
Introducción a Tag Manager
PPT
Fields en drupal 8
PPTX
Amp - contenido instantáneo en móvil
PPTX
Sesión de narrativa digital y proceso de descubrimiento en proyectos
PDF
Tendencias web en el sector agroalimentario
PDF
Realidad aumentada y Movilidad
PDF
Movilidad - Tendencias que cambiarán nuestras vidas
PDF
Webinar: Aterrizaje de proyectos digitales
PDF
Aplicar Agile/Lean UX …y no morir en el intento
Guia Rapida Para Entender A La Generacion Z
De maquetador a componentizador React, ¿qué ha cambiado?
Narrativas Metafóricas
¿Son los micropagos el nuevo mal?
Tendencias para la venta experiencial 2017
Triplica la conversión de tu landing page
Progressive web apps
¡Hola flexbox! Adiós float...
Working effectively with legacy code
Contribuir a drupal
Apis killed the website star.pptx
Introducción a Tag Manager
Fields en drupal 8
Amp - contenido instantáneo en móvil
Sesión de narrativa digital y proceso de descubrimiento en proyectos
Tendencias web en el sector agroalimentario
Realidad aumentada y Movilidad
Movilidad - Tendencias que cambiarán nuestras vidas
Webinar: Aterrizaje de proyectos digitales
Aplicar Agile/Lean UX …y no morir en el intento

Último (20)

PDF
MU_Gestion_Internacional_Edificacion_Construccion_MBA.pdf
PPTX
presentacion_energias_renovables_renovable_.pptx
PDF
Webinar Jscrambler & Integrity360 Update
PPTX
jajajajajajajajajajjajajajajjajajajahdegdhwgfedhgfdhdfe
PPT
redes.ppt unidad 2 perteneciente a la ing de software
PPTX
Charla 3 - La gestión de servicios de TI.pptx
PPTX
PARTE DE UNA PC _ SEIRY.pptx.........................
PPTX
PRESENTACION NIA 220 idhsahdjhJKSDHJKSHDJSHDJKHDJHSAJDHJKSAHDJkhjskdhasjdhasj...
PPTX
presentación sobre Programación SQL.pptx
PDF
[Ebook gratuito] Introducción a la IA Generativa, Instalación y Configuración...
DOCX
TRABAJO DE ESTRATEGIA MAXIMILIANO ELIZARRARAS.docx
PDF
Libro de Oraciones guia virgen peregrina
PDF
CAPACITACIÓN MIPIG - MODELO INTEGRADO DE PLANEACIÓN Y GESTIÓN
PPTX
Informática e inteligencia artificial (2).pptx
PPTX
Plantilla-Hardware-Informático-oficce.pptx
PDF
ACCESORIOS Y ATAJOS WINDOWS empleados en Windows
PDF
como me enamore de ti (1).pdf.pdf_20250813_191720_0000.pdf
PPTX
Qué es Google Classroom Insertar SlideShare U 6.pptx
PDF
.GUIA DE GUIA DE TRABAJO NUEVO TESTAMENTO.pdf
PDF
aguntenlos femboysssssssssssssssssssssssssssssss
MU_Gestion_Internacional_Edificacion_Construccion_MBA.pdf
presentacion_energias_renovables_renovable_.pptx
Webinar Jscrambler & Integrity360 Update
jajajajajajajajajajjajajajajjajajajahdegdhwgfedhgfdhdfe
redes.ppt unidad 2 perteneciente a la ing de software
Charla 3 - La gestión de servicios de TI.pptx
PARTE DE UNA PC _ SEIRY.pptx.........................
PRESENTACION NIA 220 idhsahdjhJKSDHJKSHDJSHDJKHDJHSAJDHJKSAHDJkhjskdhasjdhasj...
presentación sobre Programación SQL.pptx
[Ebook gratuito] Introducción a la IA Generativa, Instalación y Configuración...
TRABAJO DE ESTRATEGIA MAXIMILIANO ELIZARRARAS.docx
Libro de Oraciones guia virgen peregrina
CAPACITACIÓN MIPIG - MODELO INTEGRADO DE PLANEACIÓN Y GESTIÓN
Informática e inteligencia artificial (2).pptx
Plantilla-Hardware-Informático-oficce.pptx
ACCESORIOS Y ATAJOS WINDOWS empleados en Windows
como me enamore de ti (1).pdf.pdf_20250813_191720_0000.pdf
Qué es Google Classroom Insertar SlideShare U 6.pptx
.GUIA DE GUIA DE TRABAJO NUEVO TESTAMENTO.pdf
aguntenlos femboysssssssssssssssssssssssssssssss

Drupal 8: deploy capistrano y gestión de la configuración

  • 1. Drupal 8: Deploy con capistrano
  • 2. ¿Qué es Capistrano? Capistrano (http://capistranorb.com/) es una herramienta escrita en ruby para la automatización de tareas en servidores remotos y realizar despliegues en estructuras complejas. Capistrano NO se instala en la(s) máquina(s) de destino, el único requisito en los entornos es ssh. Podemos centralizar los despliegues en una máquina con acceso ssh a todas las demás (maquina de deploy) y realizar las diferentes tareas (backups, tags de git, despliegues) con total seguridad y de una manera controlada.
  • 3. Requisitos En la(s) máquina(s) de destino tenemos que tener acceso vía ssh, nada más! para todo lo demás capistrano se apaña. En la máquina de deploy tenemos que tener instalado… Capistrano, y por lo tanto ruby 2.0 o superior. Hemos preparado una plantilla para los entornos de deploy que simplifica la configuración: https://github.com/davidgallego/drupal8_capistrano
  • 4. Qué hace Capistrano - Tareas básicas de deploy: - Sube tu código al/los servidor(es) en releases. - Tiene directorios y archivos compartidos entre releases. - Puedes hacer rollback en cualquier momento. - Custom Task. - Creación de copias de seguridad DB - Ejecución de comandos drush en Estructura: ├── current -> /var/www/my_app_name/releases/20150 120114500/ ├── releases │ ├── 20150080072500 │ ├── 20150090083000 │ ├── 20150100093500 │ ├── 20150110104000 │ └── 20150120114500 ├── repo │ └── <VCS related data> ├── revisions.log └── shared └── <linked_files and linked_dirs>
  • 5. Desarrollo Instalamos drupal desde https://github.com/drupal-composer/drupal-project/, el core, los themes contribuidos y los módulos contribuidos se instalan desde composer, por lo tanto no están en el repositorio. Los módulos se instalan y actualizan con composer: composer require drupal/redirect ~8.1 composer update drupal/core La configuración va en /sites/default/settings.local.php fuera del repo.
  • 6. Configuración de Capistrano Genérica (capistrano/config/deploy.rb) - Configuramos el repo: set :repo_url, '[email protected]:path/to/repo/reponame.git' - Configuramos la ruta de drupal (normalmente /web): set :app_path, "path/to/drupal/dir" Entornos (capistrano/config/deploy/{NOMBRE_ENTORNO}.rb) - Configuramos la rama que se tiene que desplegar: set :branch, 'dev' - Configuramos el directorio en el que se tiene que desplegar: set :deploy_to, 'path_in_the/server' - Configuramos el/los servidores: server 'ip_or_domain.es', port: 22, user: 'deploy_user', roles: %w{app db web}
  • 7. Deploy Ya estamos preparados para hacer deploy: cap {entorno} deploy Listo! (bueno en realidad no….) la primera vez que hagamos el deploy será un FAIL, tenemos que crear el archivo shared/web/sites/default/settings.local.php con la configuración del servidor. cap {entorno} deploy y Ahora si!.. Listo! Para rollback (despues de hacer mas de dos deploys) cap {entorno} deploy:rollback (nos preguntará si queremos restaurar alguna copia de db)
  • 8. Drupal 8: Gestión de la configuración
  • 9. Configuration Management Initiative Por fin todo lo que sea configuración es exportable e importable a través de archivos yml, pero… ¿CÓMO GESTIONAMOS ESTO? Si sólo hay un desarrollador no hay ningún problema, haces los cambios que haya que hacer, los exportas en desarrollo y los importas en el entorno que toque, mola! Si el proyecto es multi-developer XD … puede que haya algún problema
  • 10. Problemas Mike exporta su configuración y la sube al repositorio. Bob crea un nuevo tipo contenido... Bob recoge la configuración del repo y se la importa, (o dios!!!!, todos los cambios de configuración que había realizado, no están….) Bob, eres mu tonto
  • 11. Problemas Mike exporta su configuración y la sube al repositorio. Bob actualiza su repo, exporta su configuración y la sube al repositorio. Mike actualiza su repo e importa la configuración O dios!!!!, todos los cambios de configuración que había realizado, no están…. Bob, eres mu tonto
  • 12. Flow Bueno entonces cómo!!!! Una posible solución: http://nuvole.org/blog/2014/aug/20/git-workflow-managing- drupal-8-configuration Mike, si ha realizado cambios de configuración, antes de hacer un pull siempre hace una exportación de su configuración, luego hace el pull, si tiene conflictos los corrige y luego realiza un import de la configuración para incorporar los cambios de sus compañeros. En los entornos (dev|pre|pro) nunca se realizan cambios de configuración.
  • 13. PROCESO drush config-export git add --all git commit -m “Cambios en config” git pull origin master (Arreglamos posibles conflictos si fuera necesario) drush config-import git push origin master
  • 14. ¿¿¿CUAL ES TU SOLUCIÓN????