Comment créer un blog avec Ghost et Nginx sur Ubuntu 14.04

introduction

Ghost est une plate-forme de blogging open source légère (~ 7,5 Mo) très facile à utiliser. Ghost est entièrement personnalisable. De nombreux thèmes disponibles pour Ghost sur Internet sont gratuits ou payants.

Dans ce didacticiel, nous allons suivre les étapes pour que Ghost soit installé et fonctionne sur votre système Ubuntu 14.04. Nous installerons également Nginx sur les ports proxy et installeronsforever, un package de nœuds, pour que Ghost continue de fonctionner en arrière-plan.

Conditions préalables

Aucune taille minimale n'est requise pour qu'un serveur puisse exécuter Ghost. Tenez compte du nombre de visiteurs de votre blog et de la quantité de contenu que vous prévoyez de partager lorsque vous décidez de la taille de Droplet à créer. Ce tutoriel a été testé sur la plus petite taille de gouttelettes DigitalOcean exécutant Ubuntu 14.04.

Avant de commencer, vous avez besoin des éléments suivants:

  • Ubuntu 14.04 Droplet

  • Le nom de domaine enregistré a indiqué l'adresse IP de votre Droplet

  • Un utilisateur non root avec les privilèges sudo

This tutorial vous aidera à configurer votre nom de domaine pour qu'il pointe vers votre Droplet.

Toutes les commandes de ce didacticiel doivent être exécutées en tant qu'utilisateur non root. Si un accès root est requis pour la commande, il sera précédé desudo. Initial Server Setup with Ubuntu 14.04 explique comment ajouter des utilisateurs et leur donner un accès sudo.

[[step-1 -—- install-node-js-and-npm]] == Étape 1 - Installer Node.js et Npm

Vous devez mettre à jour votre index de package local et installer les packageszip etwget. Nous les utiliserons plus tard dans ce tutoriel.

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 v0.12.x, sont prises en charge parnot. Node.js v0.10.36 and npm v2.5.0 are recommended by Ghost.org.

Installez Node.js avec la méthode PPA à partir dethis tutorial.

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

node -v

Le résultat devrait ressembler à ceci:

v0.10.38

Vérifiez sinpm est installé:

npm -v

Il devrait produire la version installée de npm si elle est installée:

1.4.28

S'il génère une erreur indiquant que npm n'est pas installé, installez-le avec cette commande:

sudo apt-get install npm

Mettez à journpm vers la version 2.5.0 en exécutant la commande suivante:

sudo npm install [email protected] -g

Vérifiez la version denpm installée:

npm -v

Le résultat devrait être:

2.5.0

[[step-2 -—- install-ghost]] == Étape 2 - Installer Ghost

Ensuite, nous devons installer Ghost. Ghost.org recommends to install Ghost in var/www/ghost, so that is where we will install it.

Tout d'abord, nous allons créer un répertoire/var/www/, puis télécharger la dernière version de Ghost à partir du dépôt GitHub de Ghost:

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, nous devons la décompresser. Nous allons également changer notre répertoire en/var/www/ghost/:

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

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

sudo npm install --production

Ghost est installé à la fin de l'opération. Nous devons configurer Ghost avant de pouvoir le démarrer.

[[step-3-— setting-up-ghost]] == Étape 3 - Configuration de Ghost

Le fichier de configuration de Ghost doit être situé à/var/www/ghost/config.js. Cependant, aucun fichier de ce type n'est installé avec Ghost. Au lieu de cela, l'installation inclutconfig.example.js.

Copiez l'exemple de fichier de configuration à l'emplacement approprié. Veillez à copier au lieu de déplacer afin de disposer d'une copie du fichier de configuration d'origine au cas où vous auriez besoin de revenir sur vos modifications.

sudo cp config.example.js config.js

Vos paramètres d'URL et de messagerie, qui se trouvent dans la sectionproduction, sont les principaux domaines d'information qui doivent être modifiés. L'URL est nécessaire. Sinon, les liens vous mèneront à la page par défaut dehttp://my-ghost-blog.com. Ghost peut fonctionner sans les paramètres de messagerie, mais il est recommandé de les ajouter. Au moment de la rédaction de cet article, Ghost n’exige que le courrier fonctionne si l’utilisateur oublie le mot de passe de son compte. Par conséquent, il ne serait pas très dommageable de ne pas configurer le courrier.

Ouvrez le fichier pour le modifier:

sudo nano config.js

Vous devez modifier la valeur deurl en fonction de votre domaine (ou vous pouvez utiliser l’adresse IP de votre serveur au cas où vous ne voudriez pas utiliser un domaine pour le moment). Cette valeur doit être sous la forme d'une URL. Par exemple,http://example.com/ ouhttp://45.55.76.126/. Si cette valeur n'est pas correctement formatée, Ghost ne démarrera pas.

Modifiez également la valeur dehost dans la sectionserver en0.0.0.0.

Ce qui suit montre les valeurs qui doivent être changées en rouge:

/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://my-ghost-blog.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 de texte nano en appuyant surCTRL+X puisY et enfinENTER.

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

sudo npm start --production

Le résultat devrait ressembler à ceci:

> [email protected] start /var/www/ghost
> node index

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

[...]

Si tout se passe bien, vous devriez pouvoir accéder à votre blog en utilisant le port 2368:http://your_domain._name:2368 (ouhttp://your_servers_ip:2368).

Appuyez surCTRL+C dans votre terminal pour arrêter l'instance Ghost.

[.note] #Note: Ghost peut être personnalisé davantage. Ghost.org explique chaque option de configuration en détail.
#

[[step-4-— install-nginx]] == Étape 4 - Installer Nginx

La prochaine étape consiste à installer Nginx. Fondamentalement, cela permettra aux connexions sur le port 80 de se connecter via le port sur lequel Ghost est exécuté. En termes simples, vous pourrez accéder à votre blog Ghost sans ajouter les:2368.

Installez-le avec la commande suivante:

sudo apt-get install nginx

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

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

Nous allons créer un nouveau fichier dans/etc/nginx/sites-available/ appeléghost et l'ouvrir avecnano pour le modifier:

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

Collez le code suivant dans le fichier et remplacez leshighlighted code in red par votre nom de domaine ou l'adresse IP de vos serveurs si vous ne souhaitez pas ajouter de domaine maintenant:

server {
    listen 80;
    server_name your_domain.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 sur notre configuration danssites-enabled:

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

Nous allons redémarrer Nginx:

sudo service nginx restart

Ensuite, nous allons créer un nouvel utilisateur. Cet utilisateur n'aurait que les privilèges pour faire des choses dans le répertoire/var/www/ghost. Ceci est une mesure de sécurité. Si Ghost est compromis, votre système sera en sécurité. Cela peut être fait en lançant cette commande:

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

Nous allons accorder des privilèges:

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

Vous pouvez maintenant vous connecter en tant qu'utilisateurghost:

su - ghost

Il nous faut maintenant démarrer Ghost:

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

Vous devriez pouvoir accéder à votre blog sur le port 80 en tant quehttp://<your_server_ip>/ ouhttp://<your_domain_name>/.

[[step-5 -—- keep-ghost-running-with-forever]] == Étape 5 - Keep Ghost Running withforever

La prochaine étape consiste à maintenir Ghost en arrière-plan. forever est un module de nœud qui peut être utilisé pour démarrer Ghost en arrière-plan et surveiller pour s'assurer qu'il reste actif. Si Ghost se bloque, toujours démarrera automatiquement une autre instance de Ghost.

Installezforever avec la commande suivante depuis votre répertoire Ghost, c'est-à-dire /var/www/ghost. Mais avant d'exécuter la commande, déconnectez-vous de l'utilisateurghostet connectez-vous à votre utilisateur non root:

exit
sudo npm install -g forever

Démarrez Ghost en tant qu'utilisateurghost. Il doit également être exécuté à partir du répertoire Ghost:

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

Le résultat devrait ressembler à ceci:

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, il se charge dans l'environnement de développement. Cela peut être changé en exécutant la commande suivante:

NODE_ENV=production forever start index.js

forever peut être arrêté en exécutant ceci à partir du répertoire Ghost:

forever stop index.js

Erreurs possibles

Pour le message d'erreur suivant:

Error: SQLITE_READONLY: attempt to write a readonly database

Démarrezforever en tant qu'utilisateurroot (tapezexit pour déconnecter l'utilisateur actuel):

sudo forever start index.js

Si la dernière commande indique qu’elle ne peut pas trouver «pour toujours», utilisez le chemin complet de la commande:

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

Si vous voyez 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. Allez dans ce répertoire et exécutez la commande à nouveau.

Conclusion

Toutes nos félicitations! Vous avez installé Ghost et appris à utiliser des ports proxy avec Nginx. Vous avez également appris à maintenir l'exécution des tâches avec le package de nœudsforever.

Vous pouvez faire beaucoup plus avec Ghost. Par exemple, un blog protégé par mot de passe est l’une des dernières fonctionnalités.

Découvrez les autres tutoriels DigitalOcean sur Ghost:

Visitez également les sites suivants pour en savoir plus:

Related