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


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

我目前有一个网站启动并运行,感谢“部署到VPS”。

我已经搜索过,但我需要一步一步的指导才能使其正常运行。我发现的结果并没有得到很好的解释,以帮助我理解如何实现这一目标。


7272
2017-10-10 21:27


起源

可能重复 nginx和unicorn上的多个rails应用程序 - givanse


答案:


基本上,你做了同样的事情,让你的第一个应用程序运行的所有内容减去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;
    }
  }
}

14
2017-10-10 23:09



所以基本上我只是复制我从截屏视频中获取的文件,跳过nginx和nodejs的配方,更改设置和上限部署:安装? - Timmie Sarjanen
我没有专业的导演,所以我看不出Ryan是如何部署的,但是,非常好。我也会用你的nginx配置中的一个例子来更新我的回复。另外,如果你还没有,值得一试的是RVM或RBEnv。我们的一些应用程序具有不同的ruby版本要求,RVM / rbenv允许您轻松地在不同版本的ruby下运行不同的应用程序! - codeshaman
谢谢你!这很棒!不是那么难。 :) - Timmie Sarjanen
最后,别忘了 sudo update-rc.d unicorn_app_x defaults 在服务器上,否则你将遇到502错误的网关错误,因为独角兽无法启动.. - Darme


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

它终于奏效了!


0
2018-04-12 08:44