Ruby: CentOS + Apache で Sinatra/Rails アプリをデプロイ

Sinatra/Rails は Rack 対応なので Rack アプリのときとほぼ同様。

 

デプロイに必要な環境インストール

$ [sudo] yum install curl-devel httpd-devel apr-devel apr-util-devel
$ gem install rack passenger activerecord sinatra sinatra-contrib sqlite3

rbenv で管理していたら rehash しておく

$ rbenv rehash

Apache の passenger モジュール入れるパス通ってない事も有るのでパス検索して叩く

$ sudo find / -name passenger-install-apache2-module
$ /home/XXXXXX/.rbenv/versions/2.0.0-p353/bin/passenger-install-apache2-module

Apache の設定に書き加える

$ sudo vi /etc/httpd/conf/httpd.conf
LoadModule passenger_module /home/XXXXXX/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/passenger-4.0.37/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /home/XXXXXX/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/passenger-4.0.37
  PassengerDefaultRuby /home/XXXXXX/.rbenv/versions/2.0.0-p353/bin/ruby
</IfModule>

以上でデプロイ環境の設定完了。

 

各アプリ毎の設定(同一ホストをサブ URI で切る場合)

/home/XXXXXX/hogehoge/ にアプリを作成設置する場合

$ cd /home/XXXXXX/hogehoge/

Sinatra 構成の場合

$ vi config.ru
# -*- encoding: utf-8 -*-

require File.expand_path(File.dirname(__FILE__)) + '/main.rb'
run Sinatra::Application
$ vi app.rb
$ mkdir tmp
$ mkdir public

Apache の設定ファイルに RackBaseURI を設定 (Rails の場合は RailsBaseURI)

$ sudo vi /etc/httpd/conf/httpd.conf
RackBaseURI /hogehoge

アプリの public ディレクトリのシンボリックリンクを Apache の DocumentRoot に設置

$ sudo ln -s /home/XXXXXX/hogehoge/public /var/www/html/hogehoge

Apache 再起動

$ sudo service httpd restart

実行

$ rackup

 

Thin でプロダクション環境で実行

Thin インストール

gem "thin", "~< 1.6.2"
$ bundle install

Sinatra のコードに下記を入れる

set :environment, :production

実行

$ rackup -s thin