搭建nginx+unicorn+rails环境
作者:gcbeen
日期:2014年03月04日
搭建nginx+unicorn+rails环境
ubuntu 12.04 nginx 1.1.19 rvm 1.20.12 ruby 1.9.3 rails 3.2.16
1.安装nginx
sudo apt-get install nginx
2.安装rvm
curl -sSL https://get.rvm.io | bash -s stable
3.安装ruby
rvm install 1.9.3
4.安装rails
gem install rails -v 3.2.16
5.新建rails项目
rails new project_name
6.安装unicorn
# Gemfile gem 'unicorn' # terminal bundle
7.nginx配置
# project_path/config/nginx.conf upstream unicorn { server unix:/tmp/unicorn.todo.socket fail_timeout=0; } server { listen 80; server_name server_name.com; root /project_path/public; try_files $uri/index.html $uri @unicorn; error_page 500 502 503 504 /500.html; location @unicorn { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://unicorn; } } # terminal sudo ln -s /project_path/config/nginx.conf /etc/nginx/sites-enabled/project_name
8.unicorn配置
# project_path/config/unicorn.rb # -*- encoding : utf-8 -*- if ENV["RAILS_ENV"] != 'production' # config/unicorn.rb # development working_directory "/project_path" pid "/project_path/tmp/pids/unicorn.pid" stderr_path "/project_path/unicorn/err.log" stdout_path "/project_path/unicorn/out.log" listen "/tmp/unicorn.todo.socket" worker_processes 2 timeout 30 else # config/unicorn.rb worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3) timeout 15 preload_app true before_fork do |server, worker| Signal.trap 'TERM' do puts 'Unicorn master intercepting TERM and sending myself QUIT instead' Process.kill 'QUIT', Process.pid end defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! end after_fork do |server, worker| Signal.trap 'TERM' do puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT' end defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection end end # terminal mkdir unicorn touch unicorn/err.log touch unicorn/out.log
9.启动服务
touch /project_path/start.sh bundle exec unicorn -c config/unicorn.rb -E development -D -p 8080 touch /project_path/stop.sh kill -9 `cat ~/rails_projects/insoshi/tmp/pids/unicorn.pid` chmod +x /project_path/start.sh /project_path/stop.sh sudo service nginx start ./start.sh # 启动unicorn
blog comments powered by Disqus