Ghost è una piattaforma di blogging che mi ha preso veramente molto. Potete trovare tutto quello che penso su questo prodotto cercando il tag Ghost.
Personalmente utilizzo un'installazione self-hosted di Ghost sotto VPS DigitalOcean ed ovviamente le operazioni di manutenzione e aggiornamento sono delegate all'utente. L'operazione di aggiornamento di Ghost non è complicata, e porta via in generale 10-15 minuti per ogni nuova release. Da bravo sistemista però bisogna cercare di automatizzare il più possibile tutte le operazioni ripetitive.
Uno dei primi problemi da risolvere in un'installazione self-hosted di Ghost è il problema dell'autostart. Quale metodo utilizzare per far in modo che node avvii l'applicazione. Ce ne sono tanti, io personalmente ho preferito utilizzare uno startup scrip. Lo ho trovato cercando su Google "startup script for ghost". Non sarà una soluzione molto elegante ma funziona!
Lo script va inserito nella cartella /etc/init:
#/etc/init/ghost.conf description "blog.virho.it" author "Andrea Giacomin" start on runlevel [2345] stop on shutdown respawn script export HOME="/root" echo $$ > /var/run/ghost.pid cdexec /usr/bin/node /usr/bin/npm start --production >> /dev/null 2>&1 #for logging var/log/testjs.log 2>&1 end script pre-start script # Date format same as (new Date()).toISOString() for consistency #echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/log/testjs.log end script pre-stop script rm /var/run/ghost.pid #echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/log/testjs.log end script
NOTA: bisogna editare il parametro
Possiamo usare i comandi initctl start/stop ghost per avviare il servizio o meno. Se qualcuno ha uno script più decente lo posti tranquillamente, almeno togliamo questo obbrobrio!
Per lo script di aggiornamento sono partito come base da quello sviluppato da Andy Boutte e David Balderston per l'installazione one-click di Ghost su DigitalOcean. Lo ho adattato e ampliato a seconda delle mie esigenze! Nel mio caso l'OS è CentOs 6.5 e il webserver nginx.
Come dipendenze sono necessari git e wget! Nella parte iniziale dello script ci sono alcune variabili che vanno completate in modo da poterlo eseguire nel modo corretto. Prima di effettuare l'upgrade lo script esegue un backup completo della cartella di Ghost.
#!/bin/bash ### # # Written by Andy Boutte and David Balderston of howtoinstallghost.com and allaboutghost.com # updateghost_digitalocean.sh will update your current Digital Ocean Ghost install to the latest version without you losing any content # # modified by Andrea Giacomin of badalis.it # # This script update a self-hosted installation of Ghost on CentOS. The manual procedure can be found here: http://docs.ghost.org/installation/upgrading/ # Run this script as root. Example: # sudo bash ghost-update-script.sh # # The init script is available here: http://www.badalis.it/2014/04/05/script-di-aggiornamento-per-ghost-su-centos/ # ### ### # START EDIT # Edit this according your needs ### GIT_INSTALLED=1 ## 0 = git NOT installed 1 = git installed GHOST_DIR="/var/www/blog" GHOST_BK_DIR="/home/ciccio.pasticcio/blog.virho.it-bk-$(date +"%Y%m%d")" GHOST_STARTUP_SCRIPT_NAME="ghost" GHOST_DOWNLOAD_URL="https://ghost.org/zip/ghost-latest.zip" GHOST_DIR_OWNER="nginx" ### # STOP EDIT ### if [[ `whoami` != root ]]; then echo "This script must be run as root" exit 1 fi ## install git and wget if not present if [ $GIT_INSTALLED == "0"]; then yum update yum install -y git wget echo "###### Git Installed ######" fi ## make temp dir and download ghost cd $GHOST_DIR mkdir temp cd temp wget $GHOST_DOWNLOAD_URL unzip *.zip cd .. # stopping ghost initctl stop $GHOST_STARTUP_SCRIPT_NAME # backup ghost db # cp content/data/ghost.db content/data/ghost_backup.db test -d "$GHOST_BK_DIR" || mkdir -p "$GHOST_BK_DIR" && cp -r $GHOST_DIR/. $GHOST_BK_DIR echo "###### Data Backed Up ######" # copy the new files over yes | cp temp/*.md temp/*.js temp/*.json . rm -R core yes | cp -R temp/core . yes | cp -R temp/content/themes/casper content/themes npm install --production echo "###### NPM Installed ######" # delete temp folder rm -R temp # chande folder ownership chown -R $GHOST_DIR_OWNER:$GHOST_DIR_OWNER $GHOST_DIR # starting ghost initctl start $GHOST_STARTUP_SCRIPT_NAME echo "###### Ghost Started ######"
Per i più "fannulloni" =) o meno esperti Ghost mette a disposizione un piano di hosting a partire da 5$ al mese. In questo caso tutte le operazioni di manutenzione e aggiornamento sono delegate al team Ghost!
Recentemente ho convinto mio cugino ad aprire un blog, e più precisamente, ad usare come piattaforma Ghost. Lui ha scelto il piano di hosting più economico, ed ecco il risultato!