11

如何使用 nginx 和 Unicorn 托管多个 Rails 应用程序?

由于“部署到 VPS ”,我目前有一个站点启动并运行。

我已经搜索过,但我需要一个分步指南来完成这项工作。我发现的结果没有得到很好的解释,无法帮助我理解如何实现这一点。

4

2 回答 2

14

基本上,你做的事情和你做的一样,让你的第一个应用程序运行起来,减去 Nginx 安装。所以,不管你为你的第一个应用程序运行你的 Unicorn 实例,为你的下一个应用程序再做一次。

然后,您可以将另一个服务器块添加到您的 Nginx 配置中,其中包含指向该新 ​​Unicorn 实例的上游。

一个 Nginx 为整台机器运行就可以了,每个应用程序运行一个 Unicorn。

希望这会有所帮助。


这是您需要为 Nginx 添加以服务其他应用程序的附加服务器块的示例:

upstream unicorn_app_x {
  server unix:/path/to/unicorn/socket/or/http/url/here/unicorn.sock;
}

server {
  listen 127.0.0.1:80;
  server_name mysitehere.com aliasfor.mysitehere.com;
  root /path/to/rails/app/public;

    location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;

    if (!-f $request_filename) {
      proxy_pass http://unicorn_app_x;
      break;
    }
  }
}
于 2012-10-10T23:09:29.013 回答
0

上面提供的说明还不够。我的启动文件:/etc/init.d/unicorn 有几个对单个主机配置的引用。使用这些配置,它不会为第二个主机服务。

所以我创建了一个新的独角兽启动实例。

cp /etc/init.d/unicorn /etc/init.d/unicorn_app_x

编辑 /etc/init.d/unicorn_app_x,用对第二个站点的引用替换对第一个站点的引用:包括唯一的套接字。

然后我将文件添加到自动启动:update-rc.d act_unicorn defaults

它终于奏效了!

于 2015-04-12T08:44:34.717 回答