我想使用nginx + unicorn托管多个rails应用程序,目前正在使用带有railsbaseuri的apache + passenger服务。唯一的原因是在部署每个新应用程序后需要重新加载apache。我想知道是否可以在unicorn + nginx中添加新应用程序而无需重新加载服务器。
我想在子文件夹上部署应用程序,如host-name / nginx-app1,host-name / nginx-app2,而host-name指向基本的html页面。
阅读与使用套接字处理单个应用程序相关的地方,并寻求一些帮助来实现这一点。在我的情况下,应用程序只部署一次,没有进一步的迭代。部署新应用程序后,应该没有停机时间以使当前应用程序运行。
修改 应用程序内的config / unicorn.rb文件。
working_directory "/home/ubuntu/application_1"
pid "/home/ubuntu/application_1/pids/unicorn.pid"
stderr_path "/home/ubuntu/application_1/log/unicorn.log"
stdout_path "/home/ubuntu/application_1/log/unicorn.log"
listen "/tmp/unicorn.todo.sock"
worker_processes 2
timeout 30
答案 0 :(得分:1)
实现这一目标的一种方法是将rails应用程序托管为UDS。并且nginx有多个服务器块可以从每个UDS(Unix域套接字)读取。为语法错误编写逻辑adhoc pardon。
e.g。看看这个。
http://projects.puppetlabs.com/projects/1/wiki/using_unicorn
你可以使用app1.conf托管app1 for unicorn,它将有一行。
listen '/var/run/app1.sock', :backlog => 512
并且有多个nginx上游,如
upstream app1 {
server unix:/var/run/app1.sock fail_timeout=0;
}
upstream app2 {
server unix:/var/run/app2.sock fail_timeout=0;
}
....
并根据位置或主机头
从服务器块路由请求(proxypass) server {
listen 80;
location /app1 {
proxy_pass http://app1;
proxy_redirect off;
}
location /app2 {
proxy_pass http://app2;
proxy_redirect off;
}
}