Locomotive CMSをherokuで使ってホームページ運用
CMSでホームページを作る事になって、せっかくなので、
という基準でCMSをさがして、LocomotiveCMSを使うことにした。
なお、他にあった候補は、Lokka、Refinery CMS、BrowserCMSなどを、この辺りのページを参考にしながら確認したけど、現実的な条件
レイアウトやデザイン変更を含めて、インストール後は管理画面からすべて変えられる
に合わなかったり、Rails 3に対応していなかったりしたのでパスした。
LocomotiveCMSはMongoDBがバックエンドで、mongoid をDBアダプタとして使っているので、その辺も興味があった。
gitレポジトリとherokuアプリケーションの作成
assets のプリコンパイル設定の変更とプリコンパイル
インストール手順のとおりに、rails プロジェクトを作成する。Mongoidを使うので、ActiveRecordは使わない
> rails new new_cms --skip-active-record --skip-test-unit --skip-javascript --skip-bundle > cd new_cms
gem 'locomotive_cms', '~> 2.0.0.rc12', :require => 'locomotive/engine' gem 'locomotive-heroku', '~> 0.0.2', :require => 'locomotive/heroku' gem 'thin', :group => 'production' gem 'unicorn', :group => 'development' gem 'compass-rails', '~> 1.0.2', :group => 'assets' gem 'sass-rails', '~> 3.2.4', :group => 'assets' gem 'coffee-rails', '~> 3.2.2', :group => 'assets' gem 'uglifier', '~> 1.2.4', :group => 'assets' gem 'therubyracer', '>= 0.8.2'
> gem install bundler --pre > bundle install
LocomotiveCMSのコマンドでインストールする
> bundle exec rails g locomotive:install
4. gitレポジトリとherokuアプリケーションの作成
heroku用にgit レポジトリの設定とherokuアプリケーションの作成をする。heroku コマンドの設定はもうできている前提で。
MongoHQ - データベース addonの追加
SendGrid - メールサーバー addonの追加
> git init . > heroku create [アプリケーション名] > heroku config:add BUNDLE_WITHOUT=development:test > heroku addons:add mongohq:free > heroku addons:add sendgrid:starter > heroku config:add S3_KEY_ID=[S3のキーID] > heroku config:add S3_SECRET_KEY=[S3のシークレットキー] > heroku config:add S3_BUCKET=[S3のバケツ名] > heroku config:add S3_BUCKET_REGION=ap-northeast-1 # この場合東京リージョン
config/mongoid.yml を開いて、以下のように変更する
production: uri: <%= ENV['MONGOHQ_URL'] %>
config/environments/production.rb を開いてメールサーバーの設定をする
config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => 'smtp.sendgrid.net', :port => 25, :authentication => :plain, :user_name => ENV['SENDGRID_USERNAME'], :password => ENV['SENDGRID_PASSWORD'], :domain => ENV['SENDGRID_DOMAIN'] }
config/initializers/locomotive.rb を開いてLocomotiveCMSの設定を追加する
config.hosting = { :target => :heroku, :api_key => ENV['HEROKU_API_KEY'], :app_name => ENV['HEROKU_APP_NAME'] }
6. assets のプリコンパイル設定の変更とプリコンパイル
そのままherokuにpushすると、cedar stack でもprecompileに失敗するので、deploy時にprecompileしないようにして、precompileしたファイルをレポジトリに入れてpushする。
config/application.rb を開いて以下の設定を追加する
module YourApplication class Application < Rails::Application ... config.assets.initialize_on_precompile = false ... end end
precompileしてassetファイルを作成する
> bundle exec rake assets:precompile
準備が終了したので、herokuのgit レポジトリにpushして公開する。
> git add . > git commit -am "launch it" > git push heroku master > heroku open
『公開』といっても管理画面が使えるようになっただけで、サイト自体は空っぽの状態。レイアウトもデザインもこれから制作。
Heroku | Cloud Application Platform
LocomotiveCMS is an open source CMS for Rails
How to build a website with Locomotive CMS from scratch | TommyBlue.it
LocomotiveCMS — LocomotiveCMS Documentation