Rails環境の構築(nginx + Passenger + sqlite3)

今更ながらRuby on Railsでちょっと物を作ってみようと思い立ち、 環境を構築した。 大学の頃はApache + mongrel + MySQLの環境でいじくっていたが、 最近はPassengerやUnicornが流行りらしいので、 nginx + Passenger + sqlite3の構成で環境を構築してみる。

まずはrubyを入れるところから。

#aptitude install ruby 
#aptitude install rubygems 
#gem install rubygems-update 
#/var/lib/gems/1.8/bin/update_rubygems  

これだと1.8版が入る。 次に1.9版を入れる。ついでなのでRVMも入れてバージョン管理できるようにしておく。 基本的に http://beginrescueend.com/rvm/install/ に書いてある通りやればよい。 debian標準ではcurlがインストールされていなかったのでまずそれを入れるところから。

#aptitude install curl
#aptitude install ruby
$bash < <(curl -s https://rvm.beginrescueedne.com/install/
rvm) 
$curl -s https://rvm.beginrescueend.com/install/rvm -o rvm
-installer ; chmod +x rvm-installer ; ./rvm-installer --version latest 
$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/
scripts/rvm" # Load RVM function' >> ~/.bash_profile 
$ source .bash_profile  

rvmを使って1.9.2を入れ、rubyコマンドで1.9.2が呼ばれるようにする。

$rvm install 1.9.2 
$rvm use 1.9.2 --default 

railsのインストール自体はgemからコマンド一発。

$gem install rails

次にDBを入れる。sqlite3と、利用するためのプラグインをインストール。

#aptitude install sqlite3 
#aptitude install libsqlite3-dev
$gem install sqlite3-ruby

Passengerと、それをnginxで動かすためのモジュールをインストール。

$rvmsudo passenger-install-nginx-module

サーバは1台しかないので、nginxの設定ファイルを修正して、 http://blog.fff.io/でこのブログ、 http://アプリ名.fff.io/でrailsアプリが表示されるようにする。

DNSでAレコードを追加。 アプリ名.fff.io A IPアドレス fff.io A IPアドレス

nginx.conf設定

http{
#以下の2行を追記(rvmsudo passenger-install-nginx-moduleしたときに追記されているはず)
    passenger_root RVMへのパス/gems/ruby-1.9.2-p290/gems/passenger-3.0.7
;
    passenger_ruby RVMへのパス/wrappers/ruby-1.9.2-p290/ruby;
#その他の設定
#... 

#ブログの設定
server {                                                                        
    listen   80;                                                                
    server_name fff.io;    
    location / {                                                                
        root    public_htmlへのパス;                             
        index  index.html index.htm index.php index.cgi;                        
    }  
#その他の設定
#... 
}

#railsの設定
server {                                                                        
    listen   80;                                                                
    server_name アプリ名.fff.io;                                            
                                                                                
    location / {                                                                
        root   railsアプリのパス/public;                                
        passenger_enabled on;                                                   
        index  index.html index.htm index.php index.cgi;                        
    }
#その他の設定
#...                                                                         
}

}

nginxの再起動すれば動くようになっているはず。

#/etc/init.d/nginx restart
Written on July 20, 2011