Configurer & sauvegarder un serveur web GHOST Debian 9

Suite à la mésaventure du kernel panic, j'ai décidé d'ouvrir un billet sur l'installation de ghost CMS sur un serveur debian 9 et la sauvegarde/restauration de celui-ci pour faire le plein de bonne pratique.

Installer le CMS

Installer les paquets nécessaires

apt-get update && apt-get install build-essential sudo mysql-server nginx unzip curl

Créer l'utilisateur dédié à ghost

adduser ghostcli
usermod -aG sudo ghostcli

Installer nodejs & npm

su ghostcli
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash #Veillez à utiliser la derniere verison
sudo apt-get install -y nodejs
sudo npm install ghost-cli@latest -g

Sécurisez MySQL

#en root
mysql_secure_installation

#répondez aux questions

#Se connecter en root pour la suite
mysql -u root -p

Créer & configurer la base de donnée ghost

create database ghost;
create user 'ghostcli'@'localhost' identified by 'VOTREPASSWORD';
grant all privileges on ghost.* to 'ghostcli'@'localhost';
flush privileges;
sudo mkdir -p /var/www/ghost
sudo chown ghostcli:ghostcli /var/www/ghost
sudo chmod 775 /var/www/ghost
su ghostcli
cd /var/www/ghost
ghost install

#Répondez aux questions

# Attention au nom de la base de donnée il s'agit de la base ghost
# et non ghost_prod

BONUS : Fonctionnalité de colorie syntaxique

Rendez vous sur prismjs.com, choisissez les langages (perso je prend tout) et générez la conf de votre rêve

https://prismjs.com/download.html#themes=prism-dark&languages=markup+css+clike+javascript

Copiez les fichiers dans ghost

cp prism.css /var/www/ghost/content/themes/$votretheme/assets/css/prism.css
cp prism.js /var/www/ghost/content/themes/$votretheme/assets/js/prism.css

chown ghost.ghost /var/www/ghost/content/themes/$votretheme/assets/css/prism.css
chown ghost.ghost /var/www/ghost/content/themes/$votretheme/assets/js/prism.css

chmod 644 /var/www/ghost/content/themes/$votretheme/assets/js/prism.css
chmod 644 /var/www/ghost/content/themes/$votretheme/assets/js/prism.css

Intégrez la fonctionnalité dans le CMS

#Copiez le fichier avant /!\ (Au cas ou)
/var/www/ghost/content/themes/casper-custom/default.hbs /root/
vim /var/www/ghost/content/themes/casper-custom/default.hbs

#Dans la balise <head>
#Ajoutez les lignes suivantes sous {{!-- Styles'n'Scripts --}}

<link rel="stylesheet" type="text/css" href="{{asset "css/prism.css"}}" />

#A la fin du fichier avant </body>
#Ajouter la ligne suivante sous la balise {{{block "scripts"}}}

<script type="text/javascript" src="{{asset "js/prism.js"}}"></script>

Sauvegarder le CMS

Sauvegarder la base SQL

mysqldump -u root -p ghost > /root/GhostBackup.sql #Adaptez avec le nom de votre base

Sauvegardez l'application Ghost

cp -a /var/www/ghost /root/ghostbakup

#vous pouvez accessoirement créer une archive

tar czf /root/Backup.tar.gz /root/ghostbackup

J'ai fais un script pour automatiser le process, vous pouvez le scheduler via cron si besoin (N'oubliez pas d'externaliser les sauvegardes sinon aucun intérêt)

A consommer sans modération

https://github.com/k-lfa/Backup-Ghost

Restaurer le CMS

Réinstallez le CMS ghost (Comme plus haut)

Supprimez le dossier /var/www/ghost (De la fresh install)

rm -rf /var/www/ghost

Récupérez votre archive de backup et copiez le dossier ghost sauvegardé dans le dossier web

cp -a ghost /var/www/ghost

Supprimez la base de donnée fresh install et créez la nouvelle

mysql -u root -p
drop database ghost;
create database ghost;

Restaurez la base sauvegardée

mysql -u root -p --database=ghost < GhostBackup.sql

Reconfigurez ghost

su ghostcli
cd /var/www/ghost
ghost setup

#Repondez aux questions 
#Attention au nom de la base de donnée 
#ghost au lieu de ghost_prod

Mettre à jours le CMS

Sauvegardez avant toute chose !

Procédure ci-haute ou utilisez mon script :)

Snapshot du serveur (si vous le pouvez)

Updatez Ghost

sudo -u ghostcli ghost update -d /var/www/ghost

Updatez le serveur

systemctl stop ghost_k-lfa.info #Adaptez selon le nom de votre service
systemctl stop nginx
systemctl stop mariadb

apt-get update && apt-get upgrade #Un conseil : Rebooter le serveur

#Commande à entrer en cas de non redémarrage
systemctl start nginx
systemctl start mariadb
systemctl start ghost_k-lfa.info #Adaptez selon le nom de votre service