10

私は過去数か月間、tornado で Web サービスを開発してきました。テスト環境では、使用するサービスを実行しています。

python index.py

index.py は、ポート 8001 でリッスンするトルネード アプリケーション ハンドラですhttp://localhost:8001。現在、本番環境をミラーリングする必要があるステージング環境にテスト環境をデプロイしています。本番環境でトルネードを実行するにはどうすればよいですか? アプリケーション用のある種のデーモンを作成する必要があると思いますが、どこから始めればよいかわかりません!

4

1 に答える 1

30

使用できるツールがいくつかあります。

まず、監督者

Supervisord は「プロセス制御システム」です。プロセスを構成し、Supervisor に管理させます。失敗した場合は再起動し、管理を容易にし、バックグラウンドで実行し続けます。

スーパーバイザー構成ファイルの例を次に示します。

[program:myprogram] 
process_name=MYPROGRAM%(process_num)s
directory=/var/www/apps/myapp 
command=/var/www/apps/myapp/virtualenv/bin/python index.py --PORT=%(process_num)s
startsecs=2
user=youruser
stdout_logfile=/var/log/myapp/out-%(process_num)s.log
stderr_logfile=/var/log/myapp/err-%(process_num)s.log
numprocs=4
numprocs_start=14000

numprocsこの構成により、Supervisor はポート 14001 ~ 14004 ( ) で index.py の4 ( ) インスタンスを開始しますnumprocs_start--PORT=%(process_num)s各プロセスを異なるポートで開始するためにを渡します。環境/機器に合わせて変更する必要がnumprocsあります。numprocs_start通常、2xCPU コアのプロセスを実行します (つまり、クアッド コア プロセッサには 8 つのプロセスがあります) が、プロセスの動作とコード内のブロックの量によって大きく異なります。

次に、リクエストをサイトに転送するようにNGINXを構成します

   upstream myappbackend {
            server 127.0.0.1:14001  max_fails=3     fail_timeout=1s;
            server 127.0.0.1:14002  max_fails=3     fail_timeout=1s;
            server 127.0.0.1:14003  max_fails=3     fail_timeout=1s;
            server 127.0.0.1:14004  max_fails=3     fail_timeout=1s;
    }

    server {
            listen                                          4.5.6.7:80;
            server_name                                     example.com;

            access_log      /var/log/nginx/myapp.log  main;


            location / {
                    proxy_set_header                Host            $host;
                    proxy_set_header                X-Real-Ip       $remote_addr;
                    proxy_pass                      http://myappbackend/;
            }
    }      

その構成は、アプリケーションとその動作方法に応じて変更する必要があります。これは非常に最小限の構成であり、ほぼ確実に拡張する必要がありますが、開始するには十分なはずです。

于 2013-02-07T13:42:20.150 に答える