Ghost

Base de connaissances

Ghost

in

Introduction

Ghost est une plateforme de blogging open-source ultra légère (~7.5MB) et facile d’utilisation. Ghost est entièrement personnalisable. Il existe de nombreux thèmes disponibles sur Internet, aussi bien gratuits que payants.

dans cet article, nous expliquerons l’installation pas à pas de Ghost sur un environnement Debian. Nous installerons également le proxy Nginx et forever, un module node, qui permet de d’exécuter Ghost en arrière-plan.

Pré-requis

Il n’y a pas de minimum d’espace pour un serveur pour exécuter Ghost. Prenez en considération le nom de visiteurs que votre blog pourra accueillir et le contenu que vous souhaitez diffuser pour avoir une idée des ressources à allouer. Nous recommandons un minimum de 2 Go de RAM et 25 Go de stockage sur un VPS avec 2 core pour des performances optimales.

Avant de commencer, assurez-vous de respecter ces conditions :

  • Debian/Ubuntu ou toute distribution compatible
  • Un nom de domaine enregistré pointant sur l’adresse IP de votre serveur
  • Un utilisateur non-root avec des privilèges sudo

Toutes the commandes de ce guide doivent être exécutées en utilisateur non-root. Si un accès root s’avère nécessaire pour une commande, il sera précédé par sudo. D’autres guides expliquent comment ajouter des utilisateurs et leur donner un accès sudo.

Etape 1 — Installer Node.js et Npm

Vous devez mettre à jour vos packets d’index locaux local package et installer les paquets zip et wget. Nous les utiliserons plus tard dans ce guide.

sudo apt-get update
sudo apt-get install zip wget

Ghost nécessite Node.js v0.10.x (dernière version stable). Les versions instables de Node, comme la version v0.12.x, ne sont PAS supportées. Node.js v0.10.36 et npm v2.5.0 sont recommandés par Ghost.org.

Installer Node.js par la méthode PPA depuis ce guide.

Une fois que Node.js est installé, vérifiez la version installée en exécutant :

node -v

La commande devrait retourner par exemple :

v0.10.38

Vérifier si npm installé:

npm -v

Cette commande devrait retourner la version installée de npm si elle est installée :

1.4.28

Si elle retourne une erreur indiquant que npm n’est pas installée, installez-le en exécutant la commande suivante :

sudo apt-get install npm

Mettre à jour npm à la version 2.5.0 en exécutant la commande suivante :

sudo npm install npm@2.5.0 -g

Vérifier la version installée de npm:

npm -v

La commande devrait retourner :

2.5.0

Etape 2 — Installer Ghost

Nous allons maintenant installer Ghost. Ghost.org recommande d’installer Ghost dans var/www/ghost, nous respecterons donc ici les recommandations.

Premièrement, nous allons créer un répertoire /var/www/ puis télécharger la dernière version de Ghost depuis le dépôt Ghost sur GitHub :

sudo mkdir -p /var/www/
cd /var/www/
sudo wget https://ghost.org/zip/ghost-latest.zip

Maintenant que nous avons obtenu la dernière version de Ghost, il faut la dézipper. Nous allons également changer de répertoire pour /var/www/ghost/:

sudo unzip -d ghost ghost-latest.zip
cd ghost/

Nous pouvons maintenant installer les dépendances de Ghost et les modules node modules (dépendances de production uniquement):

sudo npm install --production

Ghost est installé lorsque cette commande se termine. Nous devons ensuite le configurer avant de pouvoir le lancer.

Etape 3 — Configurer Ghost

Le fichier de configuration de Ghost devrait être localisé dans /var/www/ghost/config.js. Cependant, aucun fichier n’est installé avec Ghost. A la place, l’installation inclus config.example.js.

Copiez l’exemple de fichier de configuration à l’endroit indiqué. Assurez-vous de le copier plutôt que de le déplacer afin de conserver une version originale du fichier dans le cas où vous devriez revenir sur vos modifications.

sudo cp config.example.js config.js

Vos paramètres d’URL et d’email se trouvent dans la section production, sont les principales informations à changer. L’URL est nécessaire pour le fonctionnement. Autrement, les liens pointeront par défaut vers la page http://my-ghost-blog.com. Ghost peut fonctionner sans le réglage des paramètres de messagerie, mais il est recommandé d’en ajouter. Au moment où nous écrivons cet article, Ghost a uniquement besoin de la messagerie dans le cas de la récupération de mot de passe.

Ouvrez ce fichier pour l’éditer :

sudo vi config.js

Vous devez changer la valeur de url par celle de votre nom de domaine (vous pouvez également utiliser l’adresse IP de votre serveur). Cette valeur doit être uniquement au format d’une URL. Par exemple, http://navilog.io/ ou http://45.55.76.126/. Si cette valeur n’est pas correctement formaté, Ghost ne pourra démarrer.

Egalement, vous devez changer la valeur de host dans la section server pour votre adresse IP 0.0.0.0.

Ce qui suite vous montre les valeurs qui doivent être modifiées :

vi /var/www/ghost/config.js

 

var path = require('path'),
    config;

config = {
    // ### Production
    // When running Ghost in the wild, use the production environment
    // Configure your URL and mail settings here
    production: {
        url: 'http://mon-site.com',
        mail: {
            // Your mail settings
        },
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(__dirname, '/content/data/ghost.db')
            },
            debug: false
        },

        server: {
            // Host to be passed to node's `net.Server#listen()`
            host: '127.0.0.1',
            // Port to be passed to node's `net.Server#listen()`, for iisnode s$
            port: '2368'
        }
    },

(...)

Enregistrez le fichier et quittez l’éditeur vi en appuyant sur ESC puis wq et pour finir ENTER.

En restant dans le répertoire /var/www/ghost, démarrez Ghost avec la commande suivante :

sudo npm start --production

La sortie du terminale devrait ressembler à ce qui suit:

> ghost@0.6.4 start /var/www/ghost
> node index

Migrations: Database initialisation required for version 003
Migrations: Creating tables...
Migrations: Creating table: posts

[...]

Si tout s’est bien déroulé, vous devriez pouvoir accéder à votre blog en utilisant le port 2368: http://votre_nom_de_domaine:2368 (ou http://ip_de_votre_serveur:2368).

Appuyez sur CTRL+C dans votre terminal pour terminer votre instance Ghost.

Note: Ghost peut être personnalisé. Ghost.org explique chaque option de configuration en détail.

Etape 4 — Installer Nginx

La prochaine étape sera d’installer Nginx. Par défaut, il autorise les connexion sur le port 80 pour vous connecter sur le port utiliser par Ghost pour s’exécuter. Pour faire simple, vous aurez la possibilité d’accéder à votre blog Ghost sans avoir à ajouter le :2368.

Installez-le avec la commande suivante:

sudo apt-get install nginx

Ensuite, nous devrons configurer Nginx en changeant votre répertoire pour /etc/nginx et supprimer le fichier par défaut /etc/nginx/sites-enabled:

cd /etc/nginx/
sudo rm sites-enabled/default

Nous allons maintenant créer un nouveau fichier dans /etc/nginx/sites-available/ appelé ghost et l’ouvrir avec vi pour l’éditer:

sudo touch /etc/nginx/sites-available/ghost
sudo nano /etc/nginx/sites-available/ghost

Copiez le code suivant dans le fichier en changeant “votre_domaine.tld” par votre nom de domaine, ou l’adresse IP de votre serveur si vous n’avez pas de nom de domaine :

server {
    listen 80;
    server_name votre_domaine.tld;
    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

Nous allons maintenant créer un lien symbolique de notre configuration dans sites-enabled:

sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost

Redémmarage de Nginx:

sudo service nginx restart

Ensuite, nous allons devoir créer un nouvel utilisateur. Cet utilisateur aura uniquement les privilèges sur le répertoire /var/www/ghost. C’est une mesure de sécurité dans le cas ou l’instance Ghost serait compromise, afin de maintenir le système en sécurité. Cette action peut être réalisée en exécutant la commande suivante :

sudo adduser --shell /bin/bash --gecos 'Ghost application' ghost

Nous allons accordé les privilèges à l’utilisateur ghost:

sudo chown -R ghost:ghost /var/www/ghost/

Vous pouvez désormais vous connecter en utilisateur ghost:

su - ghost

Nous devons maintenant démarrer Ghost:

cd /var/www/ghost
npm start --production

Vous devriez pouvoir accéder à votre blog sur le port 80 tel que http://ip_de_votre_serveur/ ou http://votre_nom_de_domaine/.

Etape 5 — Maintenir le fonctionnement de Ghost

Méthode utilisant Forever

La prochaine étape sera de maintenir le fonctionnement de Ghost en arrière-plan. forever est un module node qui peut être utilisé pour démarrer Ghost en arrière-plan et le surveiller pour s’assurer de son fonctionnement. En cas de plantage de Ghost, forever démarrera automatiquement une autre instance de Ghost.

Installer forever avec la commande suivante depuis le répertoire de Ghost c’est à dire /var/www/ghost. Toutefois, avant de lancer la commande, déconnectez vous de la session utilisateur ghost et connectez-vous à un utilisateur non-root :

exit
sudo npm install -g forever

Démarrer Ghost en tant qu’utilisateur ghost. Il doit également être lancé depuis le répertoire Ghost:

su - ghost
cd /var/www/ghost
forever start index.js

Le contenu doit être similaire à ce qui suit :

warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: index.js

Par défaut, l’environnement de développement est chargé. Cela peut être modifié en exécutant la commande suivante :

NODE_ENV=production forever start index.js

forever peut être stoppé en lançant cette commande depuis le répertoire Ghost :

forever stop index.js

Erreurs possibles

Pour le message d’erreur suicant :

Error: SQLITE_READONLY: attempt to write a readonly database

Démarrer forever en utilisateur root (tapez exit pour vous déconnecter de l’utilisateur actuel):

sudo forever start index.js

Si la dernière commande ne peut pas trouver ‘forever’, utilisez le chemin complet vers la commande:

sudo /usr/local/bin/forever start index.js

Si vous constatez l’erreur suivante :

error:   Cannot start forever
error:   script /home/ghost/index.js does not exist.

Vous n’êtes pas dans le répertoire /var/www/ghost. Accédez à ce répertoire et exécutez la commande de nouveau.

Méthode par script Init

Le systèmes Linux utilisent des scripts init qui s’exécutent au démarrage du système. Ces scripts existent dans /etc/init.d. Pour permettre à Ghost d’être toujours exécuté y compris après un redémarrage il est possible d’utiliser un script init pour l’exécuter en tant que tâche. L’exemple suivant fonctionne sur Debian et Ubuntu ou tout autre distribution dérivée.

Il existe un script fonctionnel que vous pouvez utiliser pour configurer votre serveur. Le file existe dans le dépôt officiel GitHub de Ghost. Pour l’installer, suivez les étapes suivantes:

Créer le fichier /etc/init.d/ghost via la commande suivante:

$ sudo curl https://raw.githubusercontent.com/TryGhost/Ghost-Config/master/init.d/ghost \
  -o /etc/init.d/ghost

Ouvrez le fichier avec :

vi /etc/init.d/ghost

Puis vérifiez ce qui suit :

  • Changez la variable GHOST_ROOT par le chemin d’installation de votre instance Ghost
  • Vérifiez si la variable DAEMON est identique à la sortie de node

Le script Init s’exécute avec son propre utilisateur et groupe Ghost sur le système, pour des raisons de sécurité. Nous pouvons les créer avec les commandes suivantes :

$ sudo useradd -r ghost -U

Vérifions également que l’utilisateur Ghost peut accéder au répertoire d’installation:

$ sudo chown -R ghost:ghost /path/to/ghost

Changez les droits d’exécution du script init en tapant :

$ sudo chmod 755 /etc/init.d/ghost

Vous pouvez désormais contrôler Ghost avec les commandes suivantes :

$ sudo service ghost start
$ sudo service ghost stop
$ sudo service ghost restart
$ sudo service ghost status

Pour démarrer Ghost au démarrage du système, pour lancer le script init fraîchement créé, il doit être inscrit au démarrage. Saisissez les commandes suivantes pour procéder:

$ sudo update-rc.d ghost defaults
$ sudo update-rc.d ghost enable

Assurez-vous que votre utilisateur peut effectuer des changements sur les fichiers comme par exemple sur config.js ou le répertoire Ghost, en l’assignant au groupe Ghost :

$ sudo adduser USERNAME ghost

Si vous redémarrez maintenant votre serveur, Ghost devrait être disponible dès le redémarrage.

This entry was posted in . Bookmark the permalink.