概要
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です。汎用的に作っていないので、参考程度にしてください。