Skip to content

Instantly share code, notes, and snippets.

@inerba
Last active October 12, 2020 09:07
Show Gist options
  • Save inerba/ad7da420290e2b53f64414cf8e3bc01a to your computer and use it in GitHub Desktop.
Save inerba/ad7da420290e2b53f64414cf8e3bc01a to your computer and use it in GitHub Desktop.
deploy con git #git

Pubblicazione del sito sul VPS

Directory del sito: /var/www/domain.com
Repository: /var/www/domain.com

Ora vediamo come pubblicare automaticamente sul sito dopo aver fatto push

Creiamo un repository vuoto sul VPS

cd /var
mkdir repo && cd repo
mkdir site.git && cd site.git
git init --bare

--bare significa che la nostra cartella non avrà file sorgenti, ma solo il controllo di versione.

Hooks

I repository Git hanno una cartella chiamata "hooks". Questa cartella contiene alcuni file di esempio per le possibili azioni che è possibile agganciare per eseguire azioni automatiche personalizzate.

Git definisce tre possibili hooks: 'pre-receive', 'post-receive' e 'update':

  • pre-receive viene eseguito non appena il server riceve una 'push';
  • update è simile, ma viene eseguito una volta per ogni ramo;
  • post-receive viene eseguito quando un 'push' è completamente finito ed è quello che fa al caso nostro!

Entriamo nella cartella hooks del repository e creiamo il file post-receive

cd hooks
cat > post-receive

Quando eseguiamo il comando cattutto quello che scriviamo verrà salvato nel file, scriviamo:

#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f

Una volta finito, premiamo control + d per salvare. Per eseguire il file però dobbiamo prima renderlo eseguibile, facciamolo con questo comando:

chmod +x post-receive

il file post-receive verrà eseguito ogni volta che facciamo un push.

Macchina locale

Creiamo un repository

cd /my/workspace
mkdir project && cd project
git init

Poi abbiamo bisogno di configurare il percorso remoto del nostro repository appena configurato sul VPS. In questo esempio abbiamo deciso che il suo nome sarà live

git remote add live ssh://user@mydomain.com/var/repo/site.git

A questo punto per pubblicare la tua completissima versione stratestata :) ti basterà dare un bel:

git push live master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment