Rails 2.3 //Capistrano / Unicorn / Foreman/Upstartを使用してSpreeアプリをデプロイしています。
私が理解できない部分は、/ myapp / shared / sockets / unicorn.sockをフォアマン/アップスタートプロセス管理によって自動的に作成する方法です(少なくとも、unixソケットはそれらから取得する必要があると思います)。
UNIXソケットの作成の責任は何ですか?
Rails 2.3 //Capistrano / Unicorn / Foreman/Upstartを使用してSpreeアプリをデプロイしています。
私が理解できない部分は、/ myapp / shared / sockets / unicorn.sockをフォアマン/アップスタートプロセス管理によって自動的に作成する方法です(少なくとも、unixソケットはそれらから取得する必要があると思います)。
UNIXソケットの作成の責任は何ですか?
構成がnginx+unicornであるとしましょう。ご存知かもしれませんが、config dirに、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;
}
ここに、unicorn.rb構成ファイルに関連する「http://unicapd」という名前の場所からの非静的リクエストを処理するためのnginxへの指示が表示されます。この設定は、init.d(Debianを実行している場合)ディレクトリにあるファイルによってトリガーされます。
概要:bundle exec unicorn --restartと言うと、init.dのスクリプトがコードをトリガーし、Railsアプリからの動的コンテンツを提供する「特別な」ファイル/tmp/capd.sockを形成します。
ユニコーンの構成で構成されたunixソケットへのパス:
...
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;
}
アプリケーションが起動すると、ユニコーンは設定されたパスにソケットファイルを作成します(ユーザーはこのパスへの書き込みアクセス権を持っている必要があります)