Desplegar tu proyecto web con PHPloy parte 3

Configuración avanzada

Cuando empezamos a desplegar, utilizando Phploy de manera básica en nuestro último post realizamos un despliegue tranquilo y permitiendo todos los archivos se carguen, ahora, ¿en producción es igual?. Bueno lamentablemente no, porque descartamos herramientas de desarrollo como paquetes del node_modules o vendors, por ser pesados y tardarían en cargarse, quizás tenemos archivos que son de configuraciones que tenemos una configuración development y en hosting van las de producción, tenemos que desplegar este proyecto en dos o mas servers a la vez.

Si bien, no todos estos items se aplican constantemente, explicaré las que realmente he utilizado; Por lo tanto veamos que tiene Phploy para ofrecernos en estas situaciones:

Preparando el phploy.ini (avanzado)

En el mismo archivo que tenemos, en el post anterior con las configuraciones básicas, tenemos más funcionalidades que te serán de utilidad, la documentación -aunque en ingles- esta completa para entenderlo, aun así mencionaré las que utilizo.

; This is a sample deploy.ini file. You can specify as many
; servers as you need and use normal or quickmode configuration.
;
; NOTE: If a value in the .ini file contains any non-alphanumeric
; characters it needs to be enclosed in double-quotes (").

[staging]
scheme = sftp
user = example
; When connecting via SFTP, you can opt for password-based authentication:
pass = password
; Or private key-based authentication:
privkey = 'path/to/or/contents/of/privatekey'
host = staging-example.com
path = /path/to/installation
port = 22
; You can specify a branch to deploy from
branch = develop
; File permission set on the uploaded files/directories
permissions = 0700
; File permissions set on newly created directories
directoryPerm = 0775
; Files that should be ignored and not uploaded to your server, but still tracked in your repository
exclude[] = 'src/*.scss'
exclude[] = '*.ini'
; Files that are ignored by Git, but you want to send the the server
include[] = 'js/scripts.min.js'
include[] = 'js/style.min.css'
include[] = 'directory-name/'
; Directories that should be copied after deploy, from->to
copy[] = 'public->www'
; Directories that should be purged after deploy
purge[] = "cache/"
; Pre- and Post-deploy hooks
pre-deploy[] = "wget http://staging-example.com/pre-deploy/test.php --spider --quiet"
post-deploy[] = "wget http://staging-example.com/post-deploy/test.php --spider --quiet"
; Works only via SSH2 connection
pre-deploy-remote[] = "touch .maintenance"
post-deploy-remote[] = "mv cache cache2"
post-deploy-remote[] = "rm .maintenance"

[production]
quickmode = ftp://example:password@production-example.com:21/path/to/installation
passive = true
ssl = false
; You can specify a branch to deploy from
branch = master
; File permission set on the uploaded files/directories
permissions = 0774
; File permissions set on newly created directories
directoryPerm = 0755
; Files that should be ignored and not uploaded to your server, but still tracked in your repository
exclude[] = 'libs/*'
exclude[] = 'config/*'
exclude[] = 'src/*.scss'
; Files that are ignored by Git, but you want to send the the server
include[] = 'js/scripts.min.js'
include[] = 'js/style.min.css'
include[] = 'directory-name/'
purge[] = "cache/"
pre-deploy[] = "wget http://staging-example.com/pre-deploy/test.php --spider --quiet"
post-deploy[] = "wget http://staging-example.com/post-deploy/test.php --spider --quiet"

branch: puedes especificar que rama del repositorio estuviste trabajando y esos cambios serán los que se cargaran al hosting, por lo regular tengo el server [staging] el branch develop y apuntando la ruta de development que yo defino path = /dev y en el server [production] tengo la branch master y la ruta hacia producción path = / o path = /public_html -esto varia dependiendo a tu hosting contratado-.

exclude[]: Esta opción lo que realizara es ignorar y no cargar a tu server los archivos que no deseas subir hacia el server por este medio, quizás por que es un folder de dependencias con muchos archivos o archivos que tienen configuraciones delicadas, que manualmente hay que cargar. muy parecido al .gitignore que utilizas en git. Por ejemplo en .gitignore, yo tengo ignorando las carpetas node_modules o bower_components que están en development. Y en phploy ignoro /resource que es un folder con assets de preprocesadores, javascipts, etc.

exclude[] = 'node_modules'
exclude[] = 'bower_component'
exclude[] = 'resource/assets'
exclude[] = '*.ini'

Multiples servers: Por default, al escribir phploy en la consola, todos los cambios se subirán en los servers configurados [staging], [production],[otherserver].

Sí escribes, phploy -s servername o phploy — server servername es para especificar que cambios serían cargados específicamente al hosting, por ejemplo phploy -s production.

La mejor practica de esta herramienta, es siempre ejecutes, phploy -l o phploy — list para tener el listado de tus cambios que se subirán.

Sí deseas tener un log de los cambios que haz realizado, agrega en tu archivo phploy.ini en los bloques de servers, logger = on, donde se salvara en el archivo phploy.log toda la info que necesites rastrear.

De memento, es todo lo más utilizado en mi experiencia al desarrollar, en caso de que desees que te explique alguna función, deja tus comentarios.

No olvides dejar tus comentarios y compartir, recuerda que estamos aquí para trabajar juntos. :)

Se la mejor versión de uno mismo.