使用できるツールがいくつかあります。
まず、監督者
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/;
}
}
その構成は、アプリケーションとその動作方法に応じて変更する必要があります。これは非常に最小限の構成であり、ほぼ確実に拡張する必要がありますが、開始するには十分なはずです。