/etc/nginx/nginx.conf
看起来像:
user deploy;
worker_processes 5;
error_log logs/error.log;
events {
worker_connections 1024;
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream foreman4000 {
server x.x.x.x:4000;
server x.x.x.x:4001;
server x.x.x.x:4002;
server x.x.x.x:4003;
server x.x.x.x:4004;
}
server {
listen 80;
server_name x.x.x.x; #server IP
access_log /opt/nginx/foreman4000.access.log;
location / {
proxy_pass http://foreman4000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
}
这里我使用gem foreman,它使用upstart管理所有进程并使用一个命令启动所有服务器
我在项目的主目录中创建了Procfile,其中包含:
redis: redis-server
thin: bundle exec thin start -p $PORT
faye: rackup faye.ru -E production -s thin
添加到Gemfile:
gem 'foreman'
gem 'thin'
gem "foreman-export-daemontools", "~> 0.0.1"
在本地Ran捆绑安装以编辑Gemfile.lock 在服务器上部署项目。
开始使用Nginx
deploy@dcards101:/opt/nginx/conf$ sudo /etc/init.d/nginx stop [ OK ]
deploy@dcards101:/opt/nginx/conf$ sudo /etc/init.d/nginx srart [ OK ]
从Procfile导出数据到Upstart
deploy@dcards101:/var/www/cards/current$ rvmsudo foreman export upstart -a cards -u root
开始申请
deploy@dcards101:/var/www/cards/current$ rvmsudo start cards
现在一切都必须好,但我在服务器上看到的只是
502 Bad Gateway
nginx/1.0.15
日志说:
2012/07/17 17:22:30 [error] 11593#0: *148 no live upstreams while connecting to upstream, client: x.x.x.x, server: x.x.x.x, request: "GET / HTTP/1.1", upstream: "http://foreman4000/", host: "x.x.x.x"
请尽可能帮助您。服务器 - Ubuntu 10 LTS。
答案 0 :(得分:0)
得到同样的错误就这样解决了:
(我遵循this教程,但改为使用乘客和瘦身nginx)
将tcp部分添加到你的nginx.conf:
tcp {
upstream websockets {
## node processes
server 12.34.56.78:9292;
check interval=300 rise=2 fall=5 timeout=1000;
}
server {
listen 9200;
server_name domain.org;
tcp_nodelay on;
proxy_pass websockets;
}
}
对我来说不适用于端口80
之后我仍然得到faye / privat_pub的空回复,但是有一个极其微不足道的解决方案:RAILS_ENV=production bundle exec rackup private_pub.ru -s thin -E production
现在一切正常,除了镀铬如何点火2次
(我需要一个架子的守护程序)
希望它也能帮到你
答案 1 :(得分:0)
我认为您的问题是您将app-server和faye服务器放在同一个上游!
如果我得到了上游和领班的方法,你的第一个访问者得到第二个王子的应用程序,依此类推。 (也许我错了,因为我不认识工头......但如果工头将所有可用的服务器共享给所有服务,那可能是你的问题)
我木头说尝试capistrano而不是工头..所以你完全控制哪个服务器从哪里开始..因为在我的主机http不要为private_pub工作(因为nginx)所以我不得不安装nginx_tcp_proxy_module来获取在我的nginx.conf中运行的tcp块
或者只是通过服务器通过ssh尝试服务器来查找错误