使用Unicorn将Sinatra应用部署到Nginx

Sinatra 是我很喜欢的 web 开发框架,相比与 Rails ,它更轻量级,同时给我更多的控制而不是一大堆的 convention 。Sinatra的应用框架可以参考我的boilerplate:https://github.com/frederichchen/fc_sinatra_boilerplate

在平时开发的时候我用Thin来做服务器,部署的时候则使用效率更高的unicorn,因此需要首先: gem install unicorn

部署的时候需要先进入Sinatra应用的根目录,在其中分别建立 tmp、tmp/sockets、tmp/pids和log 四个目录。

然后在Sinatra应用的根目录中新建一个unicorn.rb文件,内容为:

@dir = "/path/to/app/"

worker_processes 2
working_directory @dir

timeout 60

listen "#{@dir}tmp/sockets/unicorn.sock", :backlog => 64

pid "#{@dir}tmp/pids/unicorn.pid"

stderr_path "#{@dir}log/unicorn.stderr.log"
stdout_path "#{@dir}log/unicorn.stdout.log"

接下来配置Nginx,编辑其配置文件 nginx.conf ,在http部分加入如下内容:

http {
    ...
    upstream unicorn_server {
        server unix:/path/to/app/tmp/sockets/unicorn.sock
        fail_timeout=0;
    }
    server {
        listen       80;
        server_name  localhost;
        root /path/to/app/public;
        location / {
            try_files $uri @app;
    }
        location @app {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            # pass to the upstream unicorn server mentioned above
            proxy_pass http://unicorn_server;
        }
    }
}

启动服务的时候先运行: unicorn -c path/to/unicorn.rb -E development -D ,其中-E指定环境为development,-D表示以daemon运行。然后启动nginx服务,访问 http://localhost/ 就可以了。

要停止服务,则运行 cat /path/to/app/tmp/pids/unicorn.pid | xargs kill -QUIT 即可。

如果unicorn没有能够清理干净,则还需要执行以下两个命令:

rm /path/to/app/tmp/sockets/unicorn.socket
rm /path/to/app/tmp/pids/unicorn.pid
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • Page 1:nginx 服务器安装及配置文件详解 CentOS 6.2 x86_64 安装 nginx 1.1 ...
    xiaojianxu阅读 8,593评论 1 41
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,820评论 24 1,002
  • 1.简介:  Nginx:engine X ,2002年,开源,商业版 http协议:web服务器(类似于ht...
    尛尛大尹阅读 1,899评论 0 3
  • Nginx是一个轻量级的,高性能的Web服务器以及反向代理和邮箱 (IMAP/POP3)代理服务器。它运行在UNI...
    零一间阅读 2,263评论 0 12