• nginx + unicorn 部署rails项目


    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)

    我的如下:

     1 module Rails
     2   class << self
     3     def root
     4       File.expand_path(__FILE__).split("/")[0..-3].join("/")
     5     end
     6   end
     7 end
     8 
     9 preload_app true
    10 working_directory Rails.root
    11 pid "#{Rails.root}/tmp/pids/unicorn.pid"
    12 stderr_path "#{Rails.root}/log/unicorn.log"
    13 stdout_path "#{Rails.root}/log/unicorn.log"
    14 
    15

    16 worker_processes 2
    17 timeout 30
    18 
    19 GC.respond_to?(:copy_on_write_friendly=) and 
    20   GC.copy_on_write_friendly = true
    21 
    22 before_fork do |server, worker|
    23   defined?(ActiveRecord::Base) and 
    24     ActiveRecord::Base.connection.disconnect!
    25 end
    26 
    27 after_fork do |server, worker|
    28   defined?(ActiveRecord::Base) and 
    29     ActiveRecord::Base.establish_connection
    30 end

    2 配置nginx

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

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

    我的如下:

     1 upstream project_name_backend {
     2   server unix:/path_to_project/tmp/sockets/unicorn.project-name.sock fail_timeout=0;
     3 }
     4 
     5 server {
     6   listen 80;
     7   server_name localhost;
     8   root /path_to_project/public;
     9 
    10   location ^~ /assets/ {
    11     gzip_static on;
    12     expires max;
    13     add_header Cache-Control public;
    14   }
    15 
    16   try_files $uri/index.html $uri @unicorn;
    17   location @unicorn {
    18     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    19     proxy_set_header Host $http_host;
    20     proxy_redirect off;
    21     proxy_pass http://project_name_backend;
    22   }
    23 
    24   error_page 500 502 503 504 /500.html;
    25   client_max_body_size 4G;
    26   keepalive_timeout 10;
    27 }

    注意:

    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是一致的!!!

     

  • 相关阅读:
    谦卑
    自尊和自我效能
    二手时间读书笔记
    vim学习4
    vim学习3
    hdu 5122 K.Bro Sorting
    hdu 5113 Black And White
    poj 2479 Maximum sum
    poj 2392 Space Elevator
    poj 3666 Making the Grade
  • 原文地址:https://www.cnblogs.com/perish/p/3864402.html
Copyright © 2020-2023  润新知