我该如何使用nginx和Unicorn来托管多个Rails应用程序?
目前,我已经通过 "部署到VPS" 成功运行了一个站点。
我已经搜索过,但是我需要一份逐步指南来使这个工作起来。我找到的结果没有很好地解释如何完成这个任务。
我该如何使用nginx和Unicorn来托管多个Rails应用程序?
目前,我已经通过 "部署到VPS" 成功运行了一个站点。
我已经搜索过,但是我需要一份逐步指南来使这个工作起来。我找到的结果没有很好地解释如何完成这个任务。
基本上,你需要做的和第一个应用程序相同,只是不用安装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;
}
}
}
sudo update-rc.d unicorn_app_x defaults
,否则您将遇到502错误的问题,因为unicorn无法启动。 - Darme以上提供的指示不够详细。
我的启动文件:/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
最终它成功了!