2011-12-06 10 views
2

私はそうのような端末からの私のFastCGIプロセスを開始します。私は私のnginx.confファイル内スタートDjangoのFastCGIを自動的に私はジャンゴのFastCGI/nginxのは、OS X上でうまく働いていたときにOS Xの起動

python manage.py runfcgi host=127.0.0.1 port=8000 --settings=settings 

server { 
    listen  8080; 
    server_name localhost; 
    location/{ 
     fastcgi_pass 127.0.0.1:8000; 

launchdを使用して、詳細hereとして自動的に起動するnginxがあります。

私の質問はです。マシンの起動時にFastCGIプロセスが自動的に起動する正しい方法は何ですか?

ありがとうございました!

+0

すでにFastCGIを/ nginxのは、 'でファイルを経由して実行するように設定している場合/ System/Library/LaunchDaemons/nginx.plist'を実行すると自動的に起動すると言われますが、何が問題なのですか?マシンの起動時にすでに起動しているはずです。 –

+1

nginxが起動しますが、django-fastcgiの部分は別のプロセスです。 nginxはソケット(または名前付きパイプなど)を介してdjango webappプロセス(fastcgiを介して、私が理解するように)と通信します。 – cachvico

+0

nginxにdjango fastcgiサービスの起動を開始させるプロセスを繰り返すことはできませんか? FastCGIでは、サービスが何を開始するかは関係ありません。実際のリクエストが受信されると、それらはお互いを見つけるでしょう。 – SingleNegationElimination

答えて

0

この場合、wsgiプロセスがnginxと "スタンドアロン"プロセスのどちらかによって起動されることを前提に、wsgiを使用することをお勧めします。典型的なnginxのとWSGI設定:

myproject.wsgi:

#!/usr/bin/python2.7 

import djangorecipe.wsgi 

application = djangorecipe.wsgi.main('settings', logfile='/var/log/django/myproject.wsgi.log') 

myproject.nginx.conf:

server { 
    listen  80; 
    server_name myproject.com; 

    # static resources 
    location ^~ /static/ { 
     alias /var/www/myproject/static/; 
     expires 31d; 
    } 

    wsgi_var REQUEST_METHOD  $request_method; 
    wsgi_var QUERY_STRING  $query_string; 
    wsgi_var CONTENT_TYPE  $content_type; 
    wsgi_var CONTENT_LENGTH  $content_length; 
    wsgi_var SERVER_NAME   $server_name; 
    wsgi_var SERVER_PORT   $server_port; 
    wsgi_var SERVER_PROTOCOL  $server_protocol; 

    # additional variables (not used if unavailable) 
    wsgi_var REQUEST_URI   $request_uri; 
    wsgi_var DOCUMENT_URI  $document_uri; 
    wsgi_var DOCUMENT_ROOT  $document_root; 
    wsgi_var SERVER_SOFTWARE  $nginx_version; 
    wsgi_var REMOTE_ADDR   $remote_addr; 
    wsgi_var REMOTE_PORT   $remote_port; 
    wsgi_var SERVER_ADDR   $server_addr; 
    wsgi_var REMOTE_USER   $remote_user; 

    location/{ 
     client_body_buffer_size 50; 
     wsgi_pass /var/www/myproject/myproject.wsgi; 

     wsgi_pass_authorization off; 
     wsgi_script_reloading on; 
     wsgi_use_main_interpreter on; 
    } 

    # logging 
    access_log /var/log/nginx/myproject/access.log; 
    error_log /var/log/nginx/myproject/error.log; 
} 
+0

nginxの 'mod_wsgi'プラグインにはいくつかの深刻な欠点があります。特に、Pythonアプリケーションがブロックするとnginxのパフォーマンス上の利点が失われ、djangoアプリケーションはそれを多くします(データベース/ファイルシステム呼び出しを待つ)。 – SingleNegationElimination

+0

ありがとう、私はそれを完全に認識していませんでしたが、同様の設定で多数の負荷テストを行っています。 – qoda

関連する問題