Tuto Linux – Déployer un site en KeystoneJS

Allez c’est partie j’essai de déployer un vrai site en KeystoneJS.

étape zéro

(Note: jusqu’à ce que j’indique le contraire toute cette partie se fait en root)
On réfléchi pas avant de commencer :

apt-get update
apt-get upgrade

Ensuite je me suis basé sur le tuto du site du projet, ici :

http://keystonejs.com/getting-started/

Notez quand même que pour ceux qui n’y connaissent rien, Ça à l’air un peu plus complexe que pour Ghost.

Notez également que je teste ça sur une 7.5 et pas la dernière 8 de debian

Prérequis

On va commencer par installer ce qu’ils demandent

Node.js

En rebondissant du site de keystonejs vers celui de node.js, on fini par tomber sur le tutoriel Installing Node.js via package manager sur le GitHub. Qu’on suit donc bêtement pour la partie debian :

apt-get install curl
curl -sL https://deb.nodesource.com/setup | bash -

Pour ceux qui se demande c’est quoi cURL] : C’est un wget amélioré en gros

Puis assez logiquement ensuite :

apt-get install -y nodejs

(pour le coup cette partie là, c’est la même que pour Ghost, du coup, pour moi, il n’y avait rien à faire)

Et s’ils ne sont pas déjà installé :

apt-get install -y build-essential

MongoDB

Idem on suit les précos du projet ici :  Install MongoDB on Debian

1ère étape : importer la clé publique du projet pour que le gestionnaire de paquet fasse confiance à ce qu’on va importer :

apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

2sd étape, maintenant qu’on fait confiance à ces sources, ajouter la liste des sources (logique)…

echo "deb http://repo.mongodb.org/apt/debian "$(lsb_release -sc)"/mongodb-org/3.0 main" | tee /etc/apt/sources.list.d/mongodb-org-3.0.list

Du coup, on met à jour la base pour prendre en comptes les nouvelles sources:

apt-get update

Et on installe enfin MongoDb :

apt-get install -y mongodb-org

Tada…

KeystoneJS

Préparation

On va utiliser le générateur recommandé par le tuto :

npm install -g generator-keystone

Ça mouline un peu, éventuellement un petit warning sur la version de npm mais rien d’alarmant.
Puis on va créer notre dossier pour le site :

cd /var/www/
mkdir keystoneJS
cd keystoneJS

On va créer l’utilisateur qui va faire tourner le site :

adduser keystone

et lui donner les droits sur son dossier :

chown -R keystone:keystone /var/www/keystoneJS/

A partir de là, on va continuer en tant que utilisateur keystone

su - keystone
cd /var/www/keystoneJS

Installation

Puis dans ce dossier on lance le générateur :

yo keystone

(Et, sauf si vous avez très envi, refuser d’envoyer des statistiques anonymes au projet)

Ensuite on est sur des rails, le programme vous demande les infos nécessaire :

Welcome to KeystoneJS.

? What is the name of your project? G33keries.org

Pour les templates je n’ai trouvé absolument aucune info donc j’ai laissé par défaut :

? Would you like to use Jade, Swig, Nunjucks or Handlebars for templates? [jade | swig | nunjucks | hbs] (jade) jade

Pour la syntaxe des feuilles de style, j’ai pris less par défaut aussi.

? Would you like to use LESS or SASS for stylesheets? [less | sass] less

Pour le blog, la galerie photo et le contact form : à vous de voir, moi c’est oui partout.

 ? Would you like to include a Blog? Yes
 ? Would you like to include an Image Gallery? Yes
 ? Would you like to include a Contact Form? Yes

Après les information d’administration :

? What would you like to call the User model? User
# pour info ca c'est le nom de vs utilisateur genre utilisateur, korbenautes, internautes, blogguers
? Enter an email address for the first Admin user: admin@monsite.com
? Enter a password for the first Admin user: P@ssw0rd!
? Would you like to include gulp or grunt? [gulp | grunt] gulp
? Would you like to create a new directory for your project? Yes

Optionnel : Mandrill

Pour la partie mail, j’ai découvert ça en installant, on a la possibilité de passer par Mandrill. Ce qui évite de vous payez l’installation d’un serveur mail pour les plus préssés. Il suffit de s’inscrire pour avoir une clé d’API pour 12Kmails/mois, ca laisse de quoi spammer, mais pas trop.

? ------------------------------------------------
 KeystoneJS integrates with Mandrill (from Mailchimp) for email sending.
 Mandrill accounts are free for up to 12k emails per month.
 Would you like to include Email configuration in your project? Yes
 ? ------------------------------------------------
 Please enter your Mandrill API Key (optional).
 See http://keystonejs.com/guide/config/#mandrill for more info.

You can skip this for now (we'll include a test key instead)

Your Mandrill API Key: Ttxt1KFg5...

Optionnel : Cloudinary

Ici idem que pour Mandrill, mais pour les images, et pour le coup : la limitation en volume est beaucoup plus basse : 500MB avec une limitation de bande passante en plus. Mais bon j’ai voulu tester quand même.

 ? ------------------------------------------------
 KeystoneJS integrates with Cloudinary for image upload, resizing and
 hosting. See http://keystonejs.com/docs/configuration/#services-cloudinary for more info.

CloudinaryImage fields are used by the blog and gallery templates.

You can skip this for now (we'll include demo account details)

Please enter your Cloudinary URL: cloudinary://identifiant:<Secret!!!>@geekeries-org
? ------------------------------------------------

Fin de l’installation

Finally, would you like to include extra code comments in
your project? If you're new to Keystone, these may be helpful. Yes

La ça mouline un peu, éventuellement quelques warning mais rien d’inquiétant normalement. Et une erreur que j’ai lachement ignoré sur le moment car le message à la fin a dit tout va bien : (Mais je l’ai payé après, vous inquiétez pas…)

 npm ERR! EEXIST, open '/home/keystone/.npm/78358e68-tone-npm-acorn-1-1-0-package-tgz.lock'
 File exists: /home/keystone/.npm/78358e68-tone-npm-acorn-1-1-0-package-tgz.lock
 Move it away, and try again.

npm ERR! System Linux 3.10.23-xxxx-std-ipv6-64
 npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install"
 npm ERR! cwd /var/www/keystoneJS/g33keriesorg
 npm ERR! node -v v0.10.38
 npm ERR! npm -v 1.4.28
 npm ERR! path /home/keystone/.npm/78358e68-tone-npm-acorn-1-1-0-package-tgz.lock
 npm ERR! code EEXIST
 npm ERR! errno 47
 npm ERR! not ok code 0

------------------------------------------------
Your KeystoneJS project is ready to go!
For help getting started, visit http://keystonejs.com/guide
To start your new website, run "cd g33keriesorg" then "node keystone".

J’avoue c’est assez simple en dehors de ce petit message inquiétant.

Lancement

Si vous êtes en local, il faudra vous connecter sur le port 3000 par défaut après le lancement. Si vous êtes en distant sur internet comme moi, il faudra surement ouvrir le port 3000 sur votre firewall ou faire un proxy de redirection avec apache pour pouvoir accéder au site

Redirection proxy apache

Commencer dans votre firewall par accepter les flux depuis local host sur le port 3000.

#port keystoneJS 
iptables -A INPUT -p tcp -s localhost --dport 3000 -j ACCEPT
iptables -A INPUT -p tcp --dport 3000 -j DROP

Note : moi je mets les règles dans un fichier dans /etc/init.d pour qu’elles soient systématiquement appliquée au démarrage. A vous de voir…

Puis côté Apache :

a2enmod proxy proxy_http
service Apache2 restart
cd /etc/apache2/sites-available
touch keystoneJS
vim keystoneJS

Voilà a quoi le fichier devrait ressembler :

<VirtualHost *:80>
 ServerAdmin admin@geekeries.org
 ServerName geekeries.org
 ServerAlias geekeries.org
 DocumentRoot /var/www/keystoneJS/g33keriesorg/

ProxyRequests Off
 ProxyPass / http://127.0.0.1:3000/
 ProxyPassReverse / http://127.0.0.1:3000/
 ProxyPreserveHost On
 <Proxy *>
 Order deny,allow
 Allow from 127.0.0.1
 </Proxy>

<Directory />
 AllowOverride FileInfo None
 Options FollowSymLinks -Indexes
 </Directory>

LogLevel warn

</VirtualHost>

Dans ce fichier de conf on a simplement dit de rediriger les requêtes pour geekeries.org:80 vers 127.0.0.1:3000, chemin qu’on a autorisé sur le firewall juste avant.
Pour finir on active le site :

a2ensite keystoneJS

Et pour ceux qui ont fait le bloc ci dessus en root, ici repasser en user keystone

su - keystone

Décollage du site

En mode en ligne :

cd /var/www/keystoneJS/g33keriesorg/
 node keystone

Ici moi ça a planté au 1er essai :

module.js:340
 throw err;
 ^
 Error: Cannot find module '/home/keystone/keystone'
 at Function.Module._resolveFilename (module.js:338:15)
 at Function.Module._load (module.js:280:25)
 at Function.Module.runMain (module.js:497:10)
 at startup (node.js:119:16)
 at node.js:935:3

il a fallu relancer un

npm install

Pour que ça veuille bien se lancer, car visiblement il avait pas été jusqu’au bout la 1ère fois. Donc je reprend :

cd /var/www/keystoneJS/g33keriesorg/
 node keystone
 ------------------------------------------------
 Applying update 0.0.1-admins...
 ------------------------------------------------
 G33keries.org: Successfully applied update 0.0.1-admins.
 Successfully created:
 *   1 User
 ------------------------------------------------
 Successfully applied 1 update.
 ------------------------------------------------
 ------------------------------------------------
 KeystoneJS Started:
 G33keries.org is ready on port 3000
 ------------------------------------------------

Ça à l’air plutôt cool…
ET si vous avez rien raté, ça devrait fonctionner sur http://geekeries.org/

et Mise en orbite du site

Vous avez remarquer que le site tourne dans la console, ce qui oblige à garder la session ouverte, pour parer à cela on va utiliser forever un petit module qui permet de faire tourner un script « ad’vitam », très compliqué :

npm install forever -g
cd /var/www/keystoneJS/g33keriesorg
forever start keystone.js

Je vous laisse deviner comment arrêter le site.

Conclusion

Finalement en comparant à Ghost que j’avais avant ce wordpress,si on fait un petit récap’ par rapport à KeystoneJS :

Ghost est beaucoup simple que keystone, à déployer comme à utiliser, je suis un grand, grand fan de Ghost au passage. Par contre Ghost est plus limité, pas de module galerie photo, la page informations de contact n’existe pas, les commentaires sur les articles non plus.
Bref, Ghost c’est simple, clair, et efficace, mais ça a peu de fonctionnalité

Keystone est plus complexe à installer plus complexe à utiliser, mais il est plus complet. Si vous êtes bricoleur, je pense que ça a énormément de potentiel, et le combo MongoDB/NodeJS parait prometteur même si ça reste à optimiser.
Bref, c’est plus ambitieux, mais moins abouti que ghost pour l’instant aussi.

Et puis l’éternel WordPress, c’est complet, efficace propre sur soit. Ca manque un peu d’âme quand même. Mais à la fin ça fait le boulot, mieux que les 2 autres pour le coup, et c’est ça qu’on veut je pense.

Byzouxxx @ tous.

No match found on fr.wikipedia.org

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.