lokkaをApache+Passengerでproduction環境で動かす

Lokka logo


概要

Ruby製CMSのlokkaをPassengerで動かした時の手順です。

Wordpressじゃなくlokkaを使う理由は、軽量フレームワークのsinatraを採用しているので全体が把握しやすく、カスタマイズもしやすいのではないかと思ったからです。

あとは個人的にPHPよりはRubyの方が慣れているというのもあります。

Rubyのサーバーに関してはUnicornかPassengerかと思いましたが、PassengerはApacheのモジュールとして動作するので、設定はhttpd.confを書けばよく、手軽に導入できるのでこちらにしました。

公式サイトにWEBrickで動かす手順が書いてあります。まずはこれで試してみるとよいと思います。
http://lokka.org/getting-started


環境

CentOS release 6.3 (Final)

ruby 1.9.3p327


手順

bundlerをインストールします。lokkaで使用するgemの管理に使います。

gem install bundler

lokkaのソースを取ってきます。

git clone git://github.com/komagata/lokka.git

データストアにはsqliteを使おうと思いますので、必要なパッケージをインストールします。

yum install "sqlite-devel"

production環境でsqliteを使うように設定を編集します。
本来環境変数を使うべきなんでしょうが、ハードコードしました。

lokka/database.default.yml

production:
  #dsn: <%= env['database_url']="" %="">
  dsn: sqlite3://<%= root="" %="">/db/production.sqlite3

gemをシステムではなく、lokka以下にインストールすることにします。pathにvendor/bundleを指定します。

bundle install --without=production:postgresql:mysql --path vendor/bundle

DBマイグレーションを行います。pruduction環境を指定します。

bundle exec rake db:setup RACK_ENV=production

Passengerで必要なパッケージをインストールします。
私の場合は以下の通りインストールしました。
※どのパッケージが必要かは、後でPassengerのインストールをする時に分かります。

yum install httpd curl-devel httpd-devel apr-devel apr-util-devel

Passengerをインストールします。

gem install passenger

PassengerのApache用モジュールをインストールします。

passenger-install-apache2-module

ここで、足りてないパッケージがあれば警告してくれるので、標準出力の指示に従ってインストールをしてください。
Apache用モジュールのインストールに成功すると、Apacheの設定ファイルに記述する内容が表示されるので、その通り設定します。
私の場合はpassenger.confというファイルを作成し、/etc/httpd/conf.d/以下に配置しました。

passenger.conf

LoadModule passenger_module /usr/local/rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/passenger-3.0.18
PassengerRuby /usr/local/rbenv/versions/1.9.3-p327/bin/ruby

<VirtualHost douzen.net:80>
    ServerName douzen.net
    DocumentRoot /home/yudozen/blog/lokka/public
    <Directory /home/yudozen/blog/lokka/public>
        # This relaxes Apache security settings.
        AllowOverride all
        # MultiViews must be turned off.
        Options -MultiViews
    </Directory>
</VirtualHost>

Apacheを再起動して完了です。

service httpd restart


今回作ったchefのcookbookです。汎用的に作っていないので、参考程度にしてください。

yudozen / chef-lokka