【问题标题】:How can I host multiple Rails apps with nginx and Unicorn?如何使用 nginx 和 Unicorn 托管多个 Rails 应用程序?
【发布时间】:2012-10-10 21:27:56
【问题描述】:

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

感谢“Deploying to a VPS”,我目前有一个网站正在运行。

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

【问题讨论】:

标签: ruby-on-rails-3 nginx unicorn


【解决方案1】:

基本上,您执行的操作与您的第一个应用程序运行的所有内容相同,但不包括 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;
    }
  }
}

【讨论】:

  • 所以基本上我只是复制我从截屏视频中获得的文件,跳过 nginx 和 nodejs 的食谱,更改设置并限制部署:安装?
  • 我没有 rails cast pro,所以我看不到 Ryan 是如何部署的,但是,几乎可以。我也会用我的 nginx 配置中的一个示例来更新我的回复。此外,如果您还没有的话,值得一试的是 RVM 或 RBEnv。我们的一些应用程序有不同的 ruby​​ 版本要求,RVM/rbenv 让您可以轻松地在不同版本的 ruby​​ 下运行不同的应用程序!
  • 最后不要忘记服务器上的sudo update-rc.d unicorn_app_x defaults,否则会遇到502 bad gateway错误,因为独角兽无法启动..
【解决方案2】:

上面提供的说明还不够。 我的启动文件:/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

终于成功了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 2013-08-10
    • 2014-11-08
    • 2015-08-15
    • 2015-05-22
    • 2020-07-19
    • 1970-01-01
    相关资源
    最近更新 更多