Aller au contenu

Installation et sauvegarde de ghost CMS

Commençons par le début : Ghost est un CMS dédié au blog. Il est open source, trés simple d’utilisation et dispose de plein de fonction sympa. C’est ce que j’utilise pour ce blog. Je vais reprendre une parti de la documentation sur le sujet très bien faite.

Installation

Crée un utilisateur dédié (ne pas utiliser l’utilisateur ghost):

Fenêtre de terminal
# exemple ghostuser
adduser ghostuser
# ajouter au super user
usermod -aG sudo ghostuser
# Then log in as the new user
su - ghostuser

Installation Nginx :

Fenêtre de terminal
sudo apt install nginx

Installation de Mysql :

Fenêtre de terminal
sudo apt install mariadb-server

Connexion à Mysql :

Fenêtre de terminal
sudo mysql

Changer le mot de passe root de mysql en vous connectant à mysql :

Fenêtre de terminal
mysql -u root
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NouveauMotDePasse');

Créer un utilisateur ghostuser et une BDD dédié au site, ici appellé ghost pour l’exemple. Ensuite lui donner les droits sur la BDD.

GRANT USAGE ON *.* TO 'ghostuser'@localhost IDENTIFIED BY 'mypassword';
CREATE DATABASE ghost;
GRANT ALL privileges ON `ghost`.* TO 'ghostuser'@localhost;

Installer NodeJS :

Fenêtre de terminal
curl -sL <https://deb.nodesource.com/setup_14.x> | sudo -E bash
sudo apt-get install -y nodejs

Installation de Ghost CLI (ghost CLI va permettre de simplifier l’installation) :

Fenêtre de terminal
sudo npm install ghost-cli@latest -g

Création du dossier du site internet :

Fenêtre de terminal
# creation du dossier pour le site
sudo mkdir -p /var/www/sitename
# on donne les doits a l'utilsateur ghost
sudo chown ghostuser:ghostuser /var/www/sitename
# les permissions
sudo chmod 775 /var/www/sitename
# on va dans le dossier
cd /var/www/sitename

L’avantage est que ghost-cli simplifie bien le processus.

Lancer le processus de lancement automatisé de ghost (avec l’utilisateur ghost) :

Fenêtre de terminal
ghost install

En cas de second site ?

Se connecter à mariadb puis refaire une base de donnée :

Fenêtre de terminal
CREATE DATABASE mondeuxiemesite;
GRANT ALL privileges ON `mondeuxiemesite`.* TO 'ghostuser'@localhost;

Refaire une installation avec :

Fenêtre de terminal
ghost install

Suivre les étapes, mais ne pas lancer tout de suite ghost, il faut modifier la conf nginx et modifier les ports :

Fenêtre de terminal
sudo vim /etc/nginx/sites-available/mon-deuxième-site.fr.conf
sudo vim /etc/nginx/sites-available/la-migraine-et-moi.fr-ssl.conf

Toujours une sauvegarde

Création de l’utilisateur de backup :

GRANT USAGE ON *.* TO 'backup'@localhost IDENTIFIED BY 'mypassword';
GRANT ALL privileges ON `backup`.* TO 'ghost'@localhost;
FLUSH PRIVILEGES;

Création du fichier .cnf avec les logins de l’utilisateur :

Fenêtre de terminal
vi ~/.my.cnf
Fenêtre de terminal
[client]
user=backup
password="###"

Changement des droits sur le fichier :

Fenêtre de terminal
chmod 600 ~/.my.cnf
#!/bin/bash
now=$(date +'%Y-%m-%d_%H-%M')
echo "Making backup folder for $now"
mkdir "/home/mon_utilisateur/Backups/ghost/$now"
echo "Saving ghost_prod Database Backup $now"
mysqldump ghost | gzip > "/home/mon_utilisateur/Backups/ghost/$now/ghost_prod.sql.gz"
echo "Compressing content folder"
tar -zcvf "/home/mon_utilisateur/Backups/ghost/$now/content.tar.gz" --absolute-names /var/www/mon_blog/content/ > /dev/null
# supprimer les backups au dela de 7 jours
find /home/mon_utilisateur/Backups/ghost -mtime +6 -exec rm -r "{}" \\;

Ajout du cronjob :

Fenêtre de terminal
crontab -e

Activation tous les jours :

Fenêtre de terminal
0 0 * * * /home/(USER)/Backups/backup.sh

Ensuite il suffit de récupérer le dossier de backup avec un rsync ou un scp.

La cli de ghost permet également d’autres chose comme :

Fenêtre de terminal
ghost update # mettre à jour ghost
ghost restart # redemarer ghost