Comment installer et configurer Ghost sur CentOS 7

introduction

Ghost est une plate-forme de blogging open-source légère et facile à utiliser. Ghost est entièrement personnalisable, avec de nombreux thèmes disponibles.

Dans ce didacticiel, vous allez configurer Ghost sur CentOS 7. Vous allez également configurer Nginx pour envoyer des requêtes proxy à Ghost et le laisser fonctionner en arrière-plan en tant que service système.

Conditions préalables

Pour compléter ce tutoriel, vous aurez besoin de:

Étape 1 - Installation de Ghost

Premièrement, nous devons installer Ghost. Nous allons placer Ghost dans le répertoire + / var / www / ghost +, qui est l’emplacement d’installation recommandé.

Téléchargez la dernière version de Ghost à partir du référentiel GostHub de Ghost en utilisant + wget +:

wget https://ghost.org/zip/ghost-latest.zip

Pour décompresser l’archive, installez d’abord le programme + unzip + avec le gestionnaire de paquets. Il est toujours bon de s’assurer que le système est à jour avant d’installer un nouveau programme. Mettez à jour les paquetages, puis installez + unzip + avec les commandes suivantes:

sudo yum update -y
sudo yum install unzip -y

L’indicateur + -y + dans les commandes précédentes met à jour et installe automatiquement les paquetages sans demander de confirmation à l’utilisateur.

Une fois que + unzip + est installé, décompressez le package téléchargé dans le répertoire + / var / www / ghost +. Commencez par créer le dossier + / var / www +, puis décompressez le fichier:

sudo mkdir /var/www
sudo unzip -d /var/www/ghost ghost-latest.zip

Passez dans le répertoire + / var / www / ghost / +:

cd /var/www/ghost/

Installez ensuite les dépendances Ghost, mais uniquement celles nécessaires à la production. Cela évite les dépendances dont ont besoin uniquement les personnes qui développent Ghost.

sudo npm install --production

Ghost est installé une fois ce processus terminé, mais nous devons le configurer avant de pouvoir le démarrer.

Étape 2 - Configuration de Ghost

Ghost utilise un fichier de configuration situé dans + / var / www / ghost / config.js. Ce fichier n’existe pas d’emblée, mais l’installation de Ghost inclut le fichier + config.example.js +, que nous utiliserons comme point de départ.

Copiez l’exemple de fichier de configuration dans + / var / www / ghost / config.js. Nous allons copier le fichier au lieu de le déplacer afin de disposer d’une copie du fichier de configuration original au cas où nous aurions besoin de revenir sur vos modifications.

sudo cp config.example.js config.js

Ouvrez le fichier pour le modifier:

sudo vi config.js

Nous devons changer l’URL utilisée par Ghost. Sinon, les liens sur le blog amèneront les visiteurs à http://my-ghost-blog.com [my-ghost-blog.com]. Remplacez la valeur du champ + url + par votre nom de domaine ou par l’adresse IP de votre serveur si vous ne souhaitez pas utiliser de domaine pour le moment.

/var/www/ghost/config.js

...

config = {
   // ### Production
   // When running Ghost in the wild, use the production environment
   // Configure your URL and mail settings here
   production: {
       url: 'http://',
       mail: {},
...

La valeur + url + doit être sous la forme d’une URL, comme + http: // + ou + http: // +. Si cette valeur n’est pas correctement formatée, Ghost ne démarrera pas.

Ghost peut fonctionner sans les paramètres de messagerie. ils ne sont nécessaires que si vous devez prendre en charge la récupération de mot de passe pour les utilisateurs Ghost. Nous allons ignorer la configuration de ce paramètre dans ce tutoriel.

Vous pouvez personnaliser Ghost davantage en suivant les détails de configuration sur http://ghost.org [le site officiel].

Enregistrez le fichier et quittez l’éditeur.

Dans le répertoire + / var / www / ghost +, démarrez Ghost avec la commande suivante:

sudo npm start --production

La sortie devrait ressembler à ceci:

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

WARNING: Ghost is attempting to use a direct method to send email.
It is recommended that you explicitly configure an email service.
Help and documentation can be found at http://support.ghost.org/mail.

Migrations: Creating tables...
...

Ghost is running in production...
Your blog is now available on http://
Ctrl+C to shut down

Ghost écoute sur le port + 2368 +, et n’écoute pas sur l’interface de réseau public. Vous ne pourrez donc pas y accéder directement. Mettons Nginx devant Ghost.

Étape 3 - Configuration de Nginx sur des requêtes proxy pour Ghost

La prochaine étape consiste à configurer Nginx pour servir notre blog Ghost. Cela permettra aux connexions sur le port + 80 + de se connecter via le port sur lequel Ghost est exécuté, afin que les gens puissent accéder à votre blog Ghost sans ajouter le signe +: 2368 + à la fin de l’adresse. Il ajoute également une couche d’indirection et vous permet d’évoluer sur votre blog s’il se développe.

Si Ghost est toujours en cours d’exécution sur votre terminal, appuyez sur + CTRL + C + pour fermer l’instance Ghost avant de continuer.

Maintenant, configurons Nginx. Commencez par passer au répertoire + / etc / nginx +:

cd /etc/nginx/

Si vous avez installé Nginx à partir du référentiel EPEL CentOS comme indiqué dans le didacticiel préalable, vous ne disposerez pas des répertoires + sites-available + et + +-sites-enabled + `, qui sont utilisés pour gérer les configurations de sites Web. Créons-les:

sudo mkdir sites-available
sudo mkdir sites-enabled

Ensuite, créez un nouveau fichier dans + / etc / nginx / sites-available / + appelé + ghost +:

sudo vi /etc/nginx/sites-available/ghost

Placez la configuration suivante dans le fichier et remplacez ++ par votre nom de domaine ou l’adresse IP de vos serveurs si vous n’avez pas de domaine:

/ etc / nginx / sites-available / ghost

server {
   listen 80;
   server_name ;
   location / {
   proxy_set_header HOST $host;
   proxy_set_header X-Forwarded-Proto $scheme;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_pass         ;
   }
}

Cette configuration de base envoie toutes les demandes de ce serveur vers le blog Ghost qui s’exécute sur le port + 2368 +, et définit les en-têtes HTTP appropriés pour que, lorsque vous consultez vos journaux Ghost, l’adresse IP d’origine de vos visiteurs s’affiche. . Pour en savoir plus sur cette configuration, consultez la page Compréhension du proxy HTTP Nginx, équilibrage de charge, mise en tampon, et mise en cache.

Enregistrez le fichier, quittez l’éditeur et activez cette configuration en créant un lien symbolique pour ce fichier dans le répertoire + / etc / nginx / sites-enabled +:

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

Nginx n’utilisera pas cette nouvelle configuration tant que nous n’aurons pas modifié le fichier de configuration par défaut de Nginx et ne lui aurons demandé d’inclure les fichiers de configuration dans le dossier + sites-enabled +. De plus, nous devons désactiver le site par défaut. Ouvrez le fichier + nginx.conf dans votre éditeur:

sudo vi nginx.conf

Incluez la ligne suivante dans le bloc + http + pour inclure les fichiers de configuration dans le dossier + sites-enabled +:

/etc/nginx/nginx.conf

http {
...
   # Load modular configuration files from the /etc/nginx/conf.d directory.
   # See http://nginx.org/en/docs/ngx_core_module.html#include
   # for more information.
   include /etc/nginx/conf.d/*.conf;

Puis commentez complètement le bloc + serveur + trouvé à l’intérieur du bloc + http +:

/etc/nginx/nginx.conf

...

   # Load modular configuration files from the /etc/nginx/conf.d directory.
   # See http://nginx.org/en/docs/ngx_core_module.html#include
   # for more information.
   include /etc/nginx/conf.d/*.conf;



   server {
      listen       80 default_server;
      listen       [::]:80 default_server;
      server_name  _;
      root         /usr/share/nginx/html;

      # Load configuration files for the default server block.
      include /etc/nginx/default.d/*.conf;

      location / {
      }

      error_page 404 /404.html;
          location = /40x.html {
      }

      error_page 500 502 503 504 /50x.html;
          location = /50x.html {
      }
...
...

Enregistrez le fichier et quittez l’éditeur. Testez la configuration pour vous assurer qu’il n’y a pas de problèmes:

sudo nginx -t

Vous verrez la sortie suivante si tout est correct:

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Si vous voyez des erreurs, corrigez-les et testez à nouveau la configuration.

Avec un fichier de configuration opérationnel, redémarrez Nginx pour appliquer les modifications:

sudo systemctl restart nginx

Avant de redémarrer Ghost, créons un nouveau compte utilisateur pour l’exécuter.

Étape 4 - Exécution de Ghost en tant qu’utilisateur distinct

Pour améliorer la sécurité, nous allons exécuter Ghost sous un compte utilisateur distinct. Cet utilisateur n’aura accès qu’au répertoire + / var / www / ghost + et à son dossier personnel. De cette manière, si Ghost est compromis, vous minimisez les dommages potentiels causés à votre système.

Créez un nouvel utilisateur + ghost + avec la commande suivante:

sudo adduser --shell /bin/bash

Faites ensuite de ce nouvel utilisateur le propriétaire du répertoire + / var / www / ghost +:

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

Maintenant, assurons-nous que cet utilisateur peut exécuter Ghost. Connectez-vous en tant qu’utilisateur + ghost +:

sudo su - ghost

Maintenant, démarrez Ghost sous cet utilisateur et assurez-vous qu’il fonctionne:

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

Vous devriez pouvoir accéder à votre blog à + ​​http: // +. Nginx enverra des demandes à votre instance Ghost.

Les choses marchent bien, mais assurons-nous que Ghost continuera à bien se projeter dans le futur.

Étape 5 - Exécution de Ghost en tant que service système

Actuellement, Ghost fonctionne dans notre terminal. Si nous nous déconnectons, notre blog va fermer. Laissez Ghost s’exécuter en arrière-plan et assurez-vous qu’il redémarre au redémarrage du système. Pour ce faire, nous allons créer un fichier unité "+ systemd " qui spécifie comment " systemd " doit gérer Ghost. Appuyez sur ` CTRL + C ` pour arrêter Ghost et déconnectez-vous du compte d'utilisateur ` ghost ` en appuyant sur ` CTRL + D +`.

Créez un nouveau fichier contenant la définition du fichier unité + systemd +:

sudo vi /etc/systemd/system/ghost.service

Ajoutez la configuration suivante au fichier, qui définit le nom du service, le groupe et l’utilisateur du service, ainsi que des informations sur son démarrage.

/etc/systemd/system/ghost.service

[Unit]
Description=
After=network.target

[Service]
Type=simple

WorkingDirectory=
User=
Group=

ExecStart=/usr/bin/npm start --production
ExecStop=/usr/bin/npm stop --production
Restart=always
SyslogIdentifier=Ghost

[Install]
WantedBy=multi-user.target

Si vous n’êtes pas familier avec les fichiers d’unité + systemd +, consultez le didacticiel Comprendre les unités Systemd Unit Files qui devrait vous permettre de vous familiariser rapidement.

Enregistrez le fichier et quittez l’éditeur. Puis activez et démarrez le service:

sudo systemctl enable ghost.service
sudo sytemctl start ghost.service

Encore une fois, visitez + http: // + et vous verrez votre blog.

Conclusion

Dans ce didacticiel, vous avez installé Ghost, configuré Nginx pour envoyer des requêtes proxy à Ghost et vous êtes assuré que Ghost s’exécute en tant que service système. Ghost vous permet toutefois de faire beaucoup plus. Jetez un coup d’œil à ces tutoriels pour en savoir plus sur l’utilisation de votre nouveau blog: