Photo by Tandem X Visuals / Unsplash

Installation et sauvegarde de ghost CMS

🌐 sysadmin 11 nov. 2021

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):

# exemple ghostuser
adduser ghostuser
# ajouter au super user
usermod -aG sudo ghostuser
# Then log in as the new user
su - ghostuser

Installation Nginx :

sudo apt install nginx

Installation de Mysql :

sudo apt install mariadb-server

Connexion à Mysql :

sudo mysql

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

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 :

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) :

sudo npm install ghost-cli@latest -g

Création du dossier du site internet :

# 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) :

ghost install

En cas de second site ?

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

CREATE DATABASE mondeuxiemesite;
GRANT ALL privileges ON `mondeuxiemesite`.* TO 'ghostuser'@localhost;

Refaire une installation avec :

ghost install

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

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 :

vi ~/.my.cnf
[client]
user=backup
password="###"

Changement des droits sur le fichier :

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 :

crontab -e

Activation tous les jours :

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 :

ghost update # mettre à jour ghost
ghost restart # redemarer ghost 

Mots clés

Antoine CALLOT

J'aime découvrir des nouvelles techno et outils par la veille, toujours dans l'objectif dans faire moins mais mieux.