Deploy heroku-style di un child theme WordPress su VPS via GIT

Ecco come effettuare in pochi passaggi un deploy heroku-style via GIT su un server dedicato oppure VPS.

Come primo passaggio è indispensabile poter fare il login sul server remoto senza dover inserire username e password.

In gergo si deve avere la possibilità di connettersi via SSH attraverso lo scambio di una chiave.

Quindi generiamo la chiave e la carichiamo sul server remoto con i seguenti comandi, digitando la password quando richiesta:

utentelocale$ ssh-keygen
utentelocale$ ssh-copy-id [email protected]

Ci loggiamo sul server remoto e creiamo due repository git, uno per il deploy e l'altro nella cartella di destinazione sul server Web.

SERVER REMOTO:

Repository #1

$ mkdir /home/admin/deploy
$ cd /home/admin/deploy
$ mkdir oceanwp-child
$ cd oceanwp-child
$ git init --bare

Repository #2

$ cd /home/admin/web/sitoweb.it/public_html/wp-content/themes
$ git clone file:///home/admin/deploy/oceanwp-child

Sul nostro server locale quindi creiamo un repository avente come origin il server remoto appena creato.

SERVER LOCALE:

$ mkdir ~/deploy
$ cd ~/deploy
$ mkdir oceanwp-child
$ cd oceanwp-child
$ git init
$ git remote add origin [email protected]:/home/admin/deploy/oceanwp-child
$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master
$ git pull
$ git push origin master

I passaggi precedenti possono essere ripetuti su tutti i server locali che si desidera, dando la possibilità a più sviluppatori di poter collaborare allo stesso progetto.

A questo punto quello che manca è uno script bash che sia in grado di copiare l'ultima versione del codice, quella appena caricata su “origin master”, dal repository GIT sul server remoto alla cartella servita da Apache/Nginx dello stesso server.

In particolare bisognerà creare lo script post-receive all'interno della cartella hooks “hooks/post-receive” del repository "deploy" sul server remoto. Lo script nel nostro caso somiglierà a qualcosa di questo tipo:

SERVER REMOTO:

$ cd ~/deploy/oceanwp-child/hooks
$ nano post-receive
#!/bin/bash

#CONFIGURAZIONE
DESTINAZIONE="/home/admin/web/sitoweb.it/public_html/wp-content/themes/oceanwp-child/"
read oldrev newrev refname
if [ $refname = "refs/heads/master" ]; then
echo "===== deploy del nuovo sito in corso ====="
unset GIT_DIR
cd $DESTINAZIONE
git pull origin master
echo "===== tutto fatto ====="
fi
$ chmod +x post-receive

Grazie a ciò lo script bash remoto ad ogni push effettuato localmente verso il server remoto ci segnalerà tra l'altro se l'aggiornamento è stato eseguito con successo o meno.

Condividi l'articolo...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Aricoli correlati

Emilio Petrozzi  P. I.V.A. IT03080230604 - Professionista ai sensi della Legge 4/2013
twitter-squarelinkedin-squaregithub-altwordpressfacebook-officialgitlab