Locomotive CMS sur Simple Hosting

Locomotive est un CMS (Content Management System) fait avec Ruby on Rails qui rencontre un certain succès auprès des créateurs de sites web professionnels.

Ce tutoriel explique comment configurer et utiliser votre instance Simple Hosting pour servir de Engine, dans lequel vous pourrez construire et déployer un ou plusieurs sites (ou Wagons).

Locomotive CMS requiert donc une instance Ruby + MongoDB de taille “M” ou supérieure.

La documentation fournie par les créateurs de Locomotive CMS est très complète, et nous vous recommandons de la consulter pour mieux comprendre les concepts de Engine (moteur/conteneur de sites ou projets) et Wagon (site ou projet) .

Consultez la documentation officielle de Locomotive CMS à l'adresse suivante : http://doc.locomotivecms.com/get-started

Installation sur votre machine

Suivez les instructions fournies par LocomotiveCMS pour installer les dépendances nécessaires à son fonctionnement, puis assurez-vous que vous disposez des outils requis pour déployer votre code avec Git.

En tout, vous avez besoin des logiciels suivants pour faire fonctionner l'outil localement:

  • Git
  • MongoDB
  • ImageMagick
  • Ruby 1.9.3
  • Bundler et Rake
  • Rails ~> 3.2.16

Une fois ces dépendances assurées, vous pouvez installer la gem Wagon

$ gem install locomotivecms_wagon

Pour générer le Engine local, commencez par créer une application Rails avec quelques options

$ rails new example_cms --skip-active-record --skip-test-unit --skip-javascript --skip-bundle 

Dans le Gemfile, assurez-vous de préciser la version de Rails suivante pour éviter des erreurs de gestion dépendances; cela installera la version de 3.2.X de Rails la plus récente quand-même:

---
file: Gemfile
---
source 'https://rubygems.org'

gem 'rails', '~>3.2.16'

gem 'locomotive_cms', '~> 2.4.1', :require => 'locomotive/engine'

gem 'execjs'
gem 'therubyracer', :platforms => :ruby

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'compass-rails',  '~> 1.1.3'
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

# Use unicorn as the app server
gem 'unicorn'

Maintenant vous pouvez installer les dépendances avec Bundle.

$ bundle install

Avec cela, l'application Ruby on Rails de base est prête. Maintenant nous allons y installer l'Engine de LocomotiveCMS, nous servant de son générateur.

$ bundle exec rails generate locomotive:install

Configuration pour Simple Hosting

À sa conclusion, ce script d'installation vous proposera d'éditer quelques fichiers, dont le fichier de configuration de votre Engine, où vous pouvez notamment préciser si votre installation est single- ou multi-sites, les addresses email par défaut, etc.

---
file: config/initializers/locomotive.rb
---

# Modifiez ce fichier selon vos besoins

Il est très important de modifier le fichier Carrierwave pour faire fonctionner l'upload de fichiers avec votre instance Simple Hosting. Vous pouvez copier-coller le bout de code suivant et remplacer les contenus par défault.

---
file: config/initializers/carrierwave.rb
---

CarrierWave.configure do |config|

  config.cache_dir = File.join(Rails.root, 'tmp', 'uploads')

  config.storage = :file
  config.root = File.join(Rails.root, 'public', 'uploads')

end

Ensuite, ajoutez cette ligne au fichier .gitignore si vous voulez ignorer et ne pas synchroniser les fichiers uploadés

---
file: .gitignore
—
[...]
public/uploads
[…]

La prochaine étape est de configurer `config/mongoid.yml` pour se servir de MongoDB, tant localement que sur Simple Hosting:

—
file: config/mongoid.yml
---

development:
  sessions:
    default:
      database: mon_cms_development
      hosts:
        - localhost:27017
  options:
    identity_map_enabled: true

test:
  sessions:
    default:
      database: mon_cms_test
      hosts:
        - localhost:27017
  options:
    identity_map_enabled: true

production:
  sessions:
    default:
      database: mon_cms_production
      hosts:
        - localhost:27017
  options:
    identity_map_enabled: true

Et voilà, avec ça votre installation est prête pour courir localement et pour être déployée sur votre instance Simple Hosting. Pour la lancer localement, il suffit d’exécuter la commande suivante:

$ bundle exec unicorn_rails 

Suivez les instructions qui suivent pour déployer et faire fonctionner votre Engine sur votre instance Simple Hosting

Déploiement sur Simple Hosting

Commençons par initialiser le répertoire Git et pousser le code sur l’instance:

$ git init 
$ git add .
$ git commit -am 'First install'
$ git remote add gandi git+ssh://<login>@git.dc<dc_id>.gpaas.net/default.git
$ git push gandi master

Puis il faut déployer le code

$ ssh <login>@git.dc<dc_id>.gpaas.net 'deploy default.git'

Finalement, il faut pré-compiler les ressources en accédant à la console SSH et executant la commande suivante:

$ cd web/vhosts/default/
$ bundle exec rake assets:precompile

Maintenant vous pouvez pointer votre navigateur à l'URL de votre instance et configurer Locomotive. La section suivante vous montre comment pousser des Wagons sur l'Engine que vous venez d'installer sur votre instance.

http://<votre_instance>/locomotive

Push d'un Wagon

Un Wagon est un site qui peut être contenu dans un Engine de LocomotiveCMS. Vous pouvez en créer un en utilisant la commande suivante:

$ wagon init <nom_du_repertoire>

Pour le déployer sur votre instance, vous pouvez simplement configurer le fichier `config/deploy.yml` pour y mettre l'URL de votre instance, et vos identifiants (soit l'email et MDP que vous avez choisi pour Locomotive, ou bien votre clé d'API).

development:
  host: localhost:8080
  api_key: "your api key"
staging:
  host: staging.example.com
  email: john@doe.net
  password: apassword
  # api_key: <your api key here>
production:
  host: "your.instance.url"
  api_key: "your api key"

Pour conclure, utilisez la commande Push en utilisant l'environnement approprié:

$ wagon push production

Si tout est “vert”, vous pouvez accéder à votre site en accédant à l'URL de votre instance.

Dernière modification: le 30/05/2014 à 14:32 par Alexandre J. (Gandi)