Installation de Ghost sur une instance Gandi

Node.js devient de plus en plus populaire, et la plateforme de blog Ghost vient de sortir sa première version public. De son côté, Gandi sort une nouvelle instance en node.js. Il y a tout ce qu'il faut pour s'amuser. Voici comment s'est déroulée l'installation.

Instance

La première étape, c'est déjà de choisir la bonne instance Gandi.
Ne pouvant pas utiliser sqlite sur les instances, il faut choisir une instance node.js + mysql.
Ensuite, on peut se connecter en ssh et sftp sur la machine. Il faut récupérer le login sur la page de l'instance, le mot de passe a été défini pour de la création de l'instance.

  • SSH : console.dc0.gpaas.net
  • SFTP : sftp.dc0.gpaas.net

Installation

The place to be

Après s'être connecté en SSH, il faut se placer dans le dossier où node.js va être exécuté automatiquement par l'instance :

cd web/vhosts/default/

Dans ce dossier se trouve un fichier server.js, c'est le fichier qui sera exécuté. Les sources de Ghost vont être ici.

Sources

Pour récupérer les sources, c'est facile !
On commence par une petite commande wget :

wget --no-check-certificate http://ghost.org/zip/ghost-latest.zip

Lors de l'installation, le certificat n'était pas à jour sur le serveur, j'ai du ignorer le certificat.

Puis, on dézippe l'archive :

unzip ghost-latest.zip

Ensuite, on peut la supprimer :

rm ghost-latest.zip

Enfin, si vous voulez connaître la version de Ghost :

cat package.json | grep version

On peut maintenant passer à la configuration de Ghost.

Dépendances

Enfin, il faut intaller les dépendances de Ghost via npm (seulement celles utiles pour la prodution) :

npm install --production

Configuration

Pour configurer Ghost, il faut créer un fichier config.js. S'il n'est pas créé avant le premier lancement, une copie de config.example.js sera faite. Si vous êtes curieux et que vous ouvrez ce fichier, vous ferez qu'il y a quatre sections :

  • developpement,
  • prodution,
  • testing,
  • travis.

Sur le serveur, il n'y a besoin que de la production.

À l'intérieur de cet objet, il faut définir quatre paramètres :

  • l'URL du site,
  • le serveur mail,
  • la connexion à la base de données mySQL,
  • la configuration du serveur.

URL

Ce paramètre définit l'URL de bas utilisé pour générer les liens du site. Si vous avez un nom de domaine, c'est ici qu'il faut le renseigner. Si vous n'en avez pas, Gandi propose un nom de domaine temporaire.

000000.url-de-test.fr

Mail

Pour configurer le serveur mail, il faut que vous ayez un nom de domaine chez Gandi, puis à partir de là, on peut créer une adresse.
Gandi n'est pas un service reconnu par Nodemailer, il faut le configurer à la main.
Le transport se fait SMTP.
Pour les options, toutes les informations se trouvent sur cette page de Gandi (et se trouvent dans le résumé).
Enfin pour l'authentification, c'est celle de la boîte mail que vous avez configurée précédemment.

Database

Connexion à la base de données mySQL. (par défaut, il n'y a pas de mot de passe).

mysql -u root

Si vous avez mis un mot de passe :

mysql -u root -p

Création de la base de données (paramètre database) :

create database ghostdb;

Création d'un utilisateur (paramètres user et password)

grant all on ghostdb.* to ghostusr@localhost identified by 'ghostpwd';

Chemin vers le fichier de socket (paramètre socketPath)

 cat /etc/mysql/my.cnf | grep socket

Server

Enfin, il faut définir:

  • host : 127.0.0.1 ou localhost
  • port : 8080

Ce sont les valeurs par défaut du fichier config.example.js.

Résumé

production:{
    url: '000000.url-de-test.fr',
    mail:{
        transport: 'SMTP',
        options: {
            host: "mail.gandi.net", // hostname
            secureConnection: true, // use SSL
            port: 465, // port for secure SMTP
            auth: {
                user: 'admin@mondomain.tld'
                pass: 'adminPass.'
            }
        }
    },
    database: {
        client: 'mysql',
        connection: {
            database:   'ghostdb',
            user:       'ghostusr',
            password:   'ghostpwd',
            socketPath: '/var/run/mysqld/mysqld.sock',
            charset:    'utf8',
        }
    },
    server: {
        host:'localhost',
        port: '8080'
    }
}

Ajustement pour Gandi

Production

Avec l'instance Gandi, on ne peut pas choisir la ligne de commande pour démarrer Ghost.
Il faut donc changer l'environnement par défaut de development à production, dans le fichier index.js

edit v0.4:

[...] dans le fichier core/index.js

Lien

Gandi exécute un fichier server.js dans le dossier default. Il faut alors créer un lien vers le fichier index.js

ln -s index.js server.js

Conclusion

Maintenant que tout est prêt, vous pouvez recharger l'application, via le panneau d'administration de Gandi, et c'est parti pour l'aventure !!