カニでもわかるRails 3 (nginx + unicorn) 開発環境構築
今まで Rails 1系だけ触った事があったのですが、Rails 3系をやる機会があったので、開発環境構築手順をまとめました。
手順として、
という感じでいきます。
rvm インストール
ちなみにサーバーは Debian (squeeze) です。
今回は開発環境なので、自分だけ使う前提で自分のアカウントでrvmをインストールします。
curl -L get.rvm.io | bash -s stable
# パスを通す
source ~/.rvm/scripts/rvm
# ruby インストール
rvm install 1.9.3
# gemset 作成
rvm gemset create kanipan_rails
# kanipan_rails gemset を使う
rvm gemset use kanipan_rails
gemset use してgem installすると、
/home/kanipan/.rvm/gems/ruby-(version)@(gemset名)/gems/
以下にgemが入ります。
Rails インストール
今回は最新版 (3.2) をインストールします。
gem install rails
#バージョン確認
rails -v
Rails 3.2.11
# rails プロジェクト作成 databaseをmysqlに指定
rails new kanipan_project --database=mysql
unicornのインストールと設定
vim Gemfile
Gemfileに以下を追加
gem 'unicorn'
Gemfile保存後、
bundle install
# unicornの設定ファイル作成
vim config/unicorn.rb
サンプルとして
listen "/tmp/unicorn.sock" pid "/tmp/unicorn.pid" worker_processes 1 preload_app true if ENV['RAILS_ENV'] == 'production' shared_path = "/var/www/shared" stderr_path = "#{shared_path}/log/unicorn.stderr.log" stdout_path = "#{shared_path}/log/unicorn.stdout.log" end # ログ stderr_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT']) stdout_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT']) preload_app true before_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! old_pid = "#{ server.config[:pid] }.oldbin" unless old_pid == server.pid begin Process.kill :QUIT, File.read(old_pid).to_i rescue Errno::ENOENT, Errno::ESRCH end end end after_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection end
unicornを起動します。
# -D : デーモンとして動かす, -E : Railsの環境, -c : unicorn設定ファイルのパス
unicorn_rails -D -E development -c config/unicorn.rb
unicornはmasterプロセスと複数のwokerプロセスから成り立っています。 unicornを停止するにはmasterのプロセスを止めます。
pidはunicorn.rbにパスを指定しているので、
kill -9 `cat /tmp/unicorn.pid`
nginx インストールと設定
sudo apt-get install nginx
sudo vim /etc/nginx/ngin
# kanipan_project用の設定ファイル
sudo vim /etc/nginx/sites-available/kanipan_project
以下サンプル
# statements for each of your virtual hosts upstream kanipan_project{ server unix:/tmp/unicorn.sock; } server { listen 80; server_name localhost; access_log /var/log/nginx/kanipan_project/access.log combined2; error_log /var/log/nginx/kanipan_project/error.log warn; root /var/www/kanipan_project/current/public; #rails params用 proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; proxy_temp_file_write_size 256k; location / { proxy_pass http://kanipan_project; }
kanipan_project用設定へのシンボリックリンクを sites-enabled以下に置きます。
sudo ln -s /etc/nginx/sites-available/kanipan_project /etc/nginx/sites-enabled/kanipan_project
ドキュメントルートにkanipan_projectのpublicフォルダへのシンボリックリンクを置きます。
# /var/wwwにシンボリックリンクをはる
sudo ln -s kanipan_project/public /var/www/current/kanipan_project
これで準備完了!