您的位置:首页 > 运维架构 > Nginx

nginx + unicorn 部署rails项目

2014-07-24 00:47 423 查看
nginx + unicorn 部署 rails 项目,顾名思义要先安装nginx和unicorn

一 安装

安装nginx: sudo apt-get install nginx

安装unicorn: gem install unicorn

二 配置

1 在你项目的config文件夹下添加一个unicorn.rb文件,添加代码(样列:http://unicorn.bogomips.org/examples/unicorn.conf.rb)

我的如下:

module Rails
class << self
def root
File.expand_path(__FILE__).split("/")[0..-3].join("/")
end
end
end

preload_app true
working_directory Rails.root
pid "#{Rails.root}/tmp/pids/unicorn.pid"
stderr_path "#{Rails.root}/log/unicorn.log"
stdout_path "#{Rails.root}/log/unicorn.log"

15

worker_processes 2

timeout 30

GC.respond_to?(:copy_on_write_friendly=) and
GC.copy_on_write_friendly = true

before_fork do |server, worker|
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
end

after_fork do |server, worker|
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
end


2 配置nginx

sudo apt-get install nginx默认安装在/etc/nginx目前下

在/etc/nginx/conf.d目录下创建文件:project_name.conf 添加代码(样例: http://unicorn.bogomips.org/examples/nginx.conf )

我的如下:

upstream project_name_backend {
server unix:/path_to_project/tmp/sockets/unicorn.project-name.sock fail_timeout=0;
}

server {
listen 80;
server_name localhost;
root /path_to_project/public;

location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}

try_files $uri/index.html $uri @unicorn;
location @unicorn {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://project_name_backend; }

error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}


注意:

1

listen "#{Rails.root}/tmp/sockets/unicorn.project-name.sock", :backlog => 64


upstream project_name_backend {
server unix:/path_to_project/tmp/sockets/unicorn.project-name.sock fail_timeout=0;
}


这两个的unicorn.project-name.sock的路径必须是一致的!!!

2

upstream project_name_backend 这里的project_name_backend 和 proxy_pass http://project_name_backend; 这里的project_name_backend是一致的!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: