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

11

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

目前,我已经通过 "部署到VPS" 成功运行了一个站点。

我已经搜索过,但是我需要一份逐步指南来使这个工作起来。我找到的结果没有很好地解释如何完成这个任务。


可能是重复的问题:在nginx和unicorn上运行多个Rails应用程序 - givanse
2个回答

14

基本上,你需要做的和第一个应用程序相同,只是不用安装Nginx。所以,无论你如何运行第一个应用程序的Unicorn实例,都要在下一个应用程序中再次运行。

然后,你可以将另一个服务器块添加到你的Nginx配置文件中,并将upstream指向那个新的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的配方,更改设置然后进行cap deploy:install吗? - Timmie Sarjanen
我没有Rails Cast Pro,所以我看不到Ryan是如何部署的,但基本上是这样。我也会在我的nginx配置中为您更新示例。另外,如果您还没有使用RVM或RBEnv,那么值得一试。我们的一些应用程序具有不同的Ruby版本要求,而RVM / rbenv可让您轻松地在不同的Ruby版本下运行不同的应用程序! - SoapiestWaffles
最后,在服务器上不要忘记运行 sudo update-rc.d unicorn_app_x defaults,否则您将遇到502错误的问题,因为unicorn无法启动。 - Darme

0

以上提供的指示不够详细。

我的启动文件:/etc/init.d/unicorn有几个引用单个主机配置的地方。使用这些配置,它将无法为第二个主机提供服务。

因此,我创建了一个新的unicorn启动实例。

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

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

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

最终它成功了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接