Python ベースの Web プロジェクトの場合、一般的なデプロイ方法は次のとおりです。
fcgi: spawn-fcgi またはフレームワークに付属のツールを使用して、各プロジェクトのリスニング プロセスを生成します。次に、http サービス対話でそれらを使用します。
wsgi: http サービスの mod_wsgi モジュールを使用して、各プロジェクトを実行します。
ただし、wsgi プロトコルも fcgi プロトコルも使用せず、独自の uwsgi プロトコルを作成する uwsgi もあります。著者によれば、このプロトコルは、従来のプロトコルの約 10 倍であるとのことです。 fcgi プロトコルのように強力で、非常に高速です。 uwsgi の主な機能は次のとおりです。
超高速パフォーマンス。
メモリ使用量が少ない (Apache2 の mod_wsgi の約半分と測定)。
複数アプリの管理。
詳細なログ機能 (アプリのパフォーマンスとボトルネックの分析に使用できます)。
高度にカスタマイズ可能 (メモリ サイズの制限、一定回数後のサービスの再起動など)。
環境 ubuntu 12.04 ip:10.1.6.79
nginx
apt-get install nginx-full nginx-common
nginx をインストールします/etc/nginx/sites- Enabled/example
server { listen 80; server_name 10.1.6.79; access_log /var/log/nginx/example_access.log; error_log /var/log/nginx/example_error.log; root /var/www/example; location / { uwsgi_pass 127.0.0.1:9001; include uwsgi_params; uwsgi_param uwsgi_scheme $scheme; uwsgi_param server_software nginx/$nginx_version; } }
uwsgi のインストール
apt-get install uwsgi uwsgi-plugin-python
すべての uwsgi プラグインをインストールしたい場合は、uwsgi-plugin-all パッケージ
# をインストールできます。 ## uwsgiconfiguration/etc/uwsgi/apps-enabled/default.xml<uwsgi> <plugin>python</plugin> <socket>127.0.0.1:9001</socket> <pythonpath>/var/www/example/app/</pythonpath> <app mountpoint="/"> <script>wsgi_configuration_module</script> </app> <master/> <processes>4</processes> <reload-mercy>8</reload-mercy> <cpu-affinity>1</cpu-affinity> <max-requests>2000</max-requests> <limit-as>512</limit-as> <reload-on-as>256</reload-on-as> <reload-on-rss>192</reload-on-rss> <no-orphans/> <vacuum/> </uwsgi>
#!/usr/bin/python import os import sys sys.path.append('/var/www/example/app') os.environ['python_egg_cache'] = '/var/www/example/.python-egg' def application(environ, start_response): status = '200 ok' output = 'hello world!' response_headers = [('content-type', 'text/plain'), ('content-length', str(len(output)))] start_response(status, response_headers) return [output]
uwsgi の開始
uwsgi -x /etc/uwsgi/apps-enabled/default.xml --daemonize /var/log/uwsgi/app/default.log
-m マスター プロセスを開始します
-p 4 4 つのプロセスを開始します
-s 使用するポートまたはソケット アドレス
-d デーモン モードを使用して実行します。-d を使用した後は、-d /var/log のようにログ ファイル アドレスを追加する必要があることに注意してください。 /uwsgi .log
-r 10000 10,000 のプロセスを開いた後、自動的に respawn
-t 30 タイムアウトを 30 秒に設定します。タイムアウト後、リンクは自動的に放棄されます
–limit-as 32 合計メモリプロセス量 32mで制御
-x 設定ファイルモード使用
uwsgi -s :9090 -w myapp -p 4
uwsgi -s :9090 -w myapp -m -p 4
uwsgi -s :9090 -w myapp -m -p 4 -t 30
uwsgi -s :9090 -w myapp -m -p 4 -t 30 --limit-as 128
uwsgi -s :9090 -w myapp -m -p 4 -t 30 --limit-as 128 -r 10000
uwsgi -s :9090 -w myapp -m -p 4 -t 30 --limit-as 128 -r 10000 -d uwsgi.log
#inherited_config=/usr/share/uwsgi/conf/default.ini inherited_config=/etc/uwsgi/apps-enabled/default.xml
Start nginx
/etc/init.d/nginx start
#uwsgi が利用可能かどうかをテストします
##テスト スクリプト test.py以上がNginx と uWSGI を使用して Python Web プロジェクトを構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。#!/usr/bin/python
def application(env,start_response):
start_response('200 ok',[('content_type','text/html')])
return "congraduation!!! uwsgi testing ok!!!
#启动web server
uwsgi --http :9090 --wsgi-file test.py
ブラウザ入力 IP: ポート: 192.168.1.99:9090「congraduation !!!uwsgi testing ok!!!」が表示されます。