PHPloy

Desplegar tu proyecto web con PHPloy —  parte 3

Configuración avanzada de PHPloy

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 más 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 inglés— está 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 varía 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 porque 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 has 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. 🙂

Sé la mejor versión de uno mismo.

Alejandro Facio

Posted

in

, , ,

by

Tags:

Comments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *