VirtualBox上のUbuntu12.04にLokkaを入れて、Herokuへデプロイしてみた

先日、CMSを調査する機会に恵まれました。
せっかくなので、クラウドで扱えるようなCMSを探してみたところ、Heroku上で動作するLokkaというCMSがありました。
HerokuとRubyは扱ってみたいと思っていたところなので、Ubuntu + Rubyを使ってHerokuへデプロイしてみることにしました。
Lokka - CMS for Cloud

環境

手順

1. Herokuのアカウント作成

事前にHerokuのアカウントを作っておきます。
Heroku | Cloud Application Platform



2. VirtualBoxのインストール〜Ubuntuのセットアップ

以下がスクリーンショット入りでとても詳しいため、とても参考になりました。
仮想化関連ソフト/VirtualBoxでUbuntuを動かそう - Windowsと暮らす



3. Git・Ruby関連のセットアップ

こちらも、以下のスクリーンショット入りの詳しい解説を参考に、セットアップしました。
Ruby on Rails 3.2 を Ubuntu にインストールする手順をかなり丁寧に説明してみました - Rails 雑感 - Ruby on Rails with OIAX


なお、今回はRailsは不要であるため、「Ruby on Rails 3.2 のインストール」の直前、「.gemrc の作成」まで行いました。
また、エディタの使い方には慣れていないので、以下のようにしてviを立ち上げ、上記の記載通りに作成しました。
(保存は、「:wq」)

vi ~/.gemrc

4. UbuntuへLokkaのインストール

Ubuntuで使うDBはsqliteとし、他のDBについては特に設定をしませんでした。
ただ、Lokkaの公式通りではうまくいかなかったところもあったため、手順を残します。
Getting Started - Lokka


以下の場所までは問題なく動作しました。

$ sudo gem install bundler
$ git clone git://github.com/komagata/lokka.git
$ cd lokka


Bundlerを使うところで、エラーが発生しました。

$ bundle install --without=production:postgresql:mysql

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension

/usr/bin/ruby1.9.1 extconf.rb
/usr/bin/ruby/1.9.1/rubygems/custom_require.rb:36:in 'require': cannot load such file --mkmf (LoadError)
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in 'require'
from extconf.rb:1:in '

'

An error occured while installing RedCloth (4.2.9), and Bundler cannot continue.
Make sure that gem install RedCloth -v '4.2.9' succeeds before bundling.


RedClothまわりでエラーが出ていたので調べたところ、stackoverflowに情報がありました。
ruby - cannot install RedCloth - Stack Overflow


そのため、RedClothを先に入れ、その後、bundle installすることにしました。

$ sudo apt-get install ruby1.9.1-dev
$ bundle install --without=production:postgresql:mysql
$ bundle exec rake db:setup
$ bundle exec rackup

5. Herokuのセットアップ

Lokkaの公式通り「heroku create mysite-by-lokka」したところ「toolbeltをおすすめ」のようなメッセージが出たため、toolbeltを使ってみます。

$ sudo wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh

参考:Heroku Toolbelt


toolbeltが入ったところで、Lokkaの公式通り進めます。

$ heroku create


ユーザー名とパスワードを求められるので、入力します。

Enter your credentials.
Email:
Password:


PublicKeyがないといわれるので、「y」を入力して作成します。

Could not find an existing public key.
Would you like to generate one? [yn]


y


Generate new SSH public key.
Upload SSH public key /home//.ssh/id_rsa.pub... done
Creating ... done, stack is cedar


Herokuの動作確認をします。
http://.herokuapp.com/


HerokuにPostgreSQLのAddonを追加します。

$ heroku addons:add heroku-postgresql:dev


Adding heroku-postgresql:dev on ...
done, V5 (free)
Attached as HEROKU_POSTGRESQL_XXX
Database has been created and is available


HerokuのDBを設定します。

$ heroku pg:promote HEROKU_POSTGRESQL_XXX


Promoting HEROKU_POSTGRESQL_BROWN_URL to DATABASE_URL... done

6. HerokuへLokkaをアップ

Gitのremoteへ追加します。追加しない場合、「fatal: 'heroku' does not appear to be a git repository」というエラーが出ます。

$ git remote add heroku git@heroku.com:.git


Lauching... done, v4
http://.herokuapp.com deployed to Heroku

参考:herokuにpushできなくて泣きそうになった。 - メンヘラのドロイド君大好きぶろぐ




GitでPushします。接続はyesで続行します。

$ git push heroku master


The authenticity of host 'heroku.com' can't be established.
RSA key fingerprint is xxx.
Are you sure you want to continue connecting (yes/no)?


yes


実行します。

$ heroku run rake db:setup


...
tagging was successfully created


以上でデプロイ・起動は完了です。
あとは、

$ heroku apps:open

により、ブラウザが起動し、「Test Post」が表示されます。