12

NGINXを使用して単純なRubyRackサービスをデプロイしたいと思います。私はインターネットでさまざまなことを読みましたが、どれも十分に役に立ちませんでした。私がこれを持っているとしましょう(実際にはもう少し複雑ですが、それでも200行未満のコードサービスです):

require 'rack'

class HelloWorld
  def call(env)
    [200, {"Content-Type" => "text/plain"}, ["Hello world!"]]
  end
end

Rack::Handler::Mongrel.run HelloWorld, Port: 9292

NGINXでこれをデプロイするための最良の方法を知りたいです。たぶんFCGIか何か他のもの?

4

3 に答える 3

15

unicorn/thinソリューションを使用する場合の基本的なnginx構成は次のとおりです。

upstream rack_upstream {
  server 127.0.0.1:9292;
}

server {
  listen       80;
  server_name  domain.tld;
  charset UTF-8;

  location / {

    proxy_pass http://rack_upstream;
    proxy_redirect     off;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
  }

  location ~* ^.+\.(jpg|jpeg|gif|png|css|js)$ {
    root /path/to/static/files;
  }
}

ルートとしてnginxを実行すると、ポート80でサイトにサービスを提供できます。

それ以外の場合はに変更listen 80しますlisten SOME-AVAILABLE-PORT

domain.tldサイト名に置き換えます

また、正規表現でnginxによって提供されるファイルの拡張子を追加し、(jpg|jpeg|gif|png|css|js)それらを次のように区切ることもできます。|

詳細については、以下を参照してください。

http://wiki.nginx.org/DirectiveIndex

http://wiki.nginx.org/ServerBlockExample

http://wiki.nginx.org/FullExample

于 2012-10-23T13:29:15.200 に答える
9

最も簡単なのは、おそらくnginxが(とりわけ)ラックベースのアプリを提供できるようにする乗客です。セットアップは非常に簡単ですが、nginxにはロード可能なモジュールがないため、ソースからnginxをインストールする必要があります(インストーラーがこれらすべてを処理します)。

もう1つの一般的な方法は、nginxをユニコーンにプロキシすることです。Unicornは、任意のラックアプリをホストできるルビーウェブサーバーです。通常、nginxに静的アセットを処理させ、残りをユニコーンに送信します。Unicornには、thin、mongrelなどと比較して、いくつかの優れた機能があります。たとえば、箱から出してすぐにシームレスな再起動を処理します。

于 2012-10-23T12:17:48.753 に答える
1

プリコンパイルされたパッセンジャーバイナリ(Debian / Ubuntuの場合)を使用すると、nginx+passengerのデプロイは非常に簡単です。プロジェクトの次のディレクトリ構造を持つことが重要です。

/var/www/my_app:
    \-- public/   <- public root of webserver
    \-- config.ru <- that's where you place hello world
    \-- tmp
        \-- restart.txt

nginx config(おそらく例:)/etc/nginx/sites-available/my_site

server {
  listen 80;
  server_name example.com;
  root /var/www/my_app/public;

  passenger_enabled on;
  passenger_ruby /usr/bin/ruby;    
}

アプリケーションを再起動する場合は、単に実行します

touch /var/www/my_app/tmp/restart.txt

Debianでサイトを有効にするには、symlikを作成します

ln -s /etc/nginx/sites-available/my_site /etc/nginx/sites-enabled/my_site

nginxをリロードします/etc/init.d/nginx reload

于 2015-01-09T23:35:39.113 に答える