0

/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;
      }
   }
}

ここでは、upstart を使用してすべてのプロセスを管理し、1 つのコマンドですべてのサーバーを起動する gem foreman を使用します。

以下を含むプロジェクトのメイン ディレクトリに 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"

bundle install をローカルで実行して、サーバー上の 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。

4

2 に答える 2

0

同じエラーがこのように解決されました:

最初 に nginx_tcp_proxy_moduleをインストールします

(このチュートリアルに従いましたが、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

private_pubを見てください- 問題 #29

これで、chrome が 2 回起動する方法を除いて、すべてが機能するようになりました

(そして、ラックアップにはデーモンプロセスが必要です)

それがあなたにも役立つことを願っています

于 2012-07-22T00:07:13.420 に答える
0

あなたの問題は、アプリサーバーとフェイサーバーを同じアップストリームに置くことだと思います!

アップストリームとフォアマンの方法が正しければ、最初の訪問者は 2 番目のフェイなどのようにアプリを取得します。(フォアマンを知らないので間違っているかもしれません..しかし、フォアマンがすべての利用可能なサーバーをすべてのサービスに共有している場合、それはあなたの問題かもしれません)

私は、フォアマンの代わりにカピストラーノを試してみると言います..だから、どのサーバーがどこから始まるかを完全に制御できます..私のnginx.confで作業

または、ssh経由でサーバーごとに試してエラーを見つけてください

于 2012-07-28T23:43:50.250 に答える