先日、CMSを調査する機会に恵まれました。
せっかくなので、クラウドで扱えるようなCMSを探してみたところ、Heroku上で動作するLokkaというCMSがありました。
HerokuとRubyは扱ってみたいと思っていたところなので、Ubuntu + Rubyを使ってHerokuへデプロイしてみることにしました。
Lokka - CMS for Cloud
環境
- ホストOS: Windows7 x64
- ゲストOS: Ubuntu 12.04
- VirtualBox 4.2.6
- Ruby 1.9.3p362
- Git 1.7.9.5
- rbenv
- Lokka 0.5.0
- Heroku
手順
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
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://
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」が表示されます。