我正在使用Capistrano / Unicorn / Foreman / Upstart部署Rails 2.3 // Spree应用程序。
我无法弄清楚的部分是如何让foreman / upstart进程管理自动创建/myapp/shared/sockets/unicorn.sock(至少我认为unix套接字应该来自它们)。
负责创建unix套接字的是什么?
答案 0 :(得分:1)
假设你的配置是nginx + unicorn。您可能知道,在配置目录中,您应该创建一个名为unicorn.rb的文件。在这个文件中有一个如何处理非静态请求的描述,如下所示:
upstream unicapd {
server unix:/tmp/capd.sock fail_timeout=0;
}
我的上游命名与教程中所述的不同,这使我能够在同一主机上托管多个不同的应用程序。
然后,在Nginx配置的vhosts目录中你输入这样的东西(假设你的主机文件是'vhosts / myconf.conf':
location @unicorn1 {
proxy_pass http://unicapd;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
在这里,您可以看到nginx提供来自该地点的非静态请求的指令,名为“http:// unicapd”,它与您的unicorn.rb配置文件相关。此配置由一个文件触发,该文件位于init.d(如果您正在运行Debian)目录中。
总结:当你说bundle exec unicorn --restart时,init.d中的脚本触发代码,形成一个“特殊”文件/tmp/capd.sock,它为你的Rails应用程序提供动态内容。
答案 1 :(得分:0)
unicorn配置中配置的unix-socket的路径:
...
listen "/home/user/app/shared/sockets/unicorn.sock", :backlog => 64
...
然后在nginx.conf中:
location / {
try_files $uri @unicorn;
proxy_cache cache;
proxy_cache_valid 10m;
}
location @unicorn {
proxy_set_header Client-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://unix:/home/user/apps/shared/sockets/unicorn.sock;
}
当应用程序启动时,unicorn在设置路径中创建套接字文件(用户必须具有对此路径的写入权限)