どうでしょに展開WSGIすか?(なぜでの最良の方法)
-
05-09-2019 - |
質問
シWSGIます。さまざまですが、肌のこと。私は現在使用しapache2とmod-wsgiができますが潜在的な問題です。
定できるようになりましたのです。
- Apache Mod-wsgi(その他のmod-wsgiのようなあ
- 純粋なPythonのwebサーバ例えば、ペースト、cherrypy,産卵数作られたのが始まりである。ウェブ
- 2がリバースプロキシからnginx,apache2などで、静的ファイルの取り扱い
- への変換はその他のプロトコルなどのFCGIブ(例えばFlup)、走行には、従来のwebサーバです。
ます。
いったいどうすいのか、なぜ最高について教えてください。私は絶対に 愛 また穴を私にしていただきましたのwhysョングッズなどが充実。まupvoteの他の狂った答えです。
解決
として常にもよります;-)
きんでapacheのほっと純粋なpythonのウェブサーバのようにペーストなど。一致によりご応募いとの決定をすることができるように一部のベンチマークたい"と思っていた私にとってはいかがやってこなかったのです。思産卵がメリットを用いたブロックIOのボックスがあったかが問題で、縫製も行っている。
いつでも無料で入れるのでニス面が表示されております。
場合にはApacheが必要なそれだけではなく、僕はふだんかのソリューション3ができるように保つプロセス分離を行います。もできますより簡単に移動プロセスのその他のサーバー等ただ、いつまでも守り続けていきますっ。
静的ファイルを使用してい現在は別のサーバーのためのプロジェクトのこだわりをしてい静止画/css/js.を使用していlighttpdとしてウェブサーバを演(この場合において、ワニスの前にもの
他の有用なツールで supervisord 制御-監視サービス
私はまた利用 buildout 管理私の導入-開発sandboxesとともに、 virtualenv).
他のヒント
私は絶対に好き穴かに詳細を頂きましたのwhysョン、など
されます。ものですよね。
のようにダニエル-Iが個人的に利用したApacheとmod_wsgi.まだまだ新しい展開で一部の環境での闘いがん作成のものだがとにかくいです。がその場で発音を確認することがで非常に信頼性の高いものを早くします。道具Graham Dumpletonを制御でいいたします。
しかし私にとっていうことWSGI用して、そしてセーブしてくださを可能にします。あの穴の瞬間にこの地域:のWSGI標準ではないことがおわかり頂けなどのWSGI呼び出し可能オブジェクト(アプリケーション)は、ある標準化の展開一方のウェブサーバを探します。も標準化されたこのサーバ更新の申請時まで更新されます。
のアプローチを採用しは入れる:
すべてのアプリケーションロジックモジュール/パッケージ、好ましくは授業
全てのウェブサイト固有のcustomisationsすることは、サブクラスメインのアプリケーションとオ員
すべてのサーバ固有の展開の設定(例.データベース接続の工場では、メール中継の設定とクラスの__init__()パラメータ
一つはトップレベル"application.py'スクリプトがinitialisesのアプリケーションのクラスは正しい展開の設定は、現在のサーバーの応用などでの作業として展開CGIスクリプトは、mod_wsgi WSGIScriptAlias(または乗客は、彼の作品同じように、できるとの交流からのコマンドライン
ヘルパーモジュールの上記展開の課題にアプリケーションリローデッドがモジュールの依存に変更
このapplication.py ようにというように:
#!/usr/bin/env python
import os.path
basedir= os.path.dirname(__file__)
import MySQLdb
def dbfactory():
return MySQLdb.connect(db= 'myappdb', unix_socket= '/var/mysql/socket', user= 'u', passwd= 'p')
def appfactory():
import myapplication
return myapplication.Application(basedir, dbfactory, debug= False)
import wsgiwrap
ismain= __name__=='__main__'
libdir= os.path.join(basedir, 'system', 'lib')
application= wsgiwrap.Wrapper(appfactory, libdir, 10, ismain)
のwsgiwrap.ラッパーチェックは10秒毎に見た場合のモジュールlibdirを更新し、その場合は一部のバsys.モジュールのマジックをアンロードしても確実です。その後appfactory()を再度呼ばれることへの新しいインスタンスを更新します。
で利用する事ができるコマンドラインツールなど
./application.py setup
./application.py daemon
に設定背景-タスクフックの応用呼び出し可能オブジェクト—ょうdistutilsます。でも対応開始/停止/再開のようなinitスクリプト)
別のトリックしてお使いくだけの展開設定を複数のサーバーの開発/実験/生産)と同じapplication.py スクリプト、白'ソケットが開かれます。gethostname()'にあるサーバの特定のバンチの設定を利用します。
もうパッケージwsgiwrap、リリースでは正しれはどのような由来があるのですか。その間について興味のある方はもちろんを見ることができdogfood-開発版 http://www.doxdesk.com/file/software/py/v/wsgiwrap-0.5.py.
配備する絶対的な最も簡単な方法は、CherryPyがあります。 Webアプリケーションは、スタンドアロンのウェブサーバになることができます。 CherryPyにも、それは純粋なPythonで書かれていることを考えると、かなり速いサーバーです。そうは言っても、それはApacheのではありません。したがって、私はCherryPyには、小さい音量のウェブアプリケーションのための良い選択であることがわかります。
それ以外は、私はこの質問への権利または間違った答えはないと思います。私はMOD-WSGIは、すべてに嗅ぎまでではないに同意することを言いますが、大量のウェブサイトの多くについて、あなたは話の技術に基づいて構築されている、と私は(あなたがそれらのいずれかの方法をあまりにも間違って行くことができるとは思いません非Apacheサーバ)。
また、私は、IISの下でのpythonのアプリを展開する isapi_wsgi に使用してきました。それは理想的なセットアップ未満だが、それが動作し、Windows中心の世界に住んでいるとき、あなたはいつもそうでない場合は選択し得ることはありません。
nginxのリバースプロキシと静的ファイル共有+ XSendfile + uploadprogress_module。何が目的で、それに勝るものはありません。
WSGI側のいずれかのApache + mod_wsgiをやCherryPyにサーバー上で。私は、少ないメモリおよび少ない要求を持つサーバー上のアプリケーションのためのCherryPyにWSGIサーバを使用するようにしたい。
推論ます:
私は別の人気のあるソリューションのためのさまざまなツールとベンチマークをやっています。
私は特に、HTTPの実装、Web開発よりも低いレベルのTCP / IPとのより多くの経験を持っています。私は良いのWebフレームワークを認識することができますより良いhttpサーバを認識することができることをより確信しています。
私は、Djangoのか、Pylonsのよりもはるかにツイストを知っています。ツイストのHTTPスタックは、このまではまだありませんが、それはあるでしょう。
私は、私が開発していたアプリケーションのためのGoogle App Engineのを使用しています。これはWSGIアプリケーションを実行します。 ここでの情報のカップルのビットです。に
これは私が今まで本当にに働いてきた最初のWebアプリですので、私は比較の基準を持っていないが、あなたは、Googleのファンなら、あなたはそれに見たいと思うかもしれません。私は学習のための私のフレームワークとしてそれを使用して多くの楽しみを持っていました。
TurboGears(2.0)
TurboGears2.0 ではありません ベータ 翌月(たが用いられるようになったっぷり。2.0改善を行います1.0シリーズを試みるのだから常に最WSGIスタックで、一部のデフォルトの選択いたい場合には、少なくとも騒.
その tg*
ツールの試験および展開1.xシリーズが変 paster
当2.0シリーズょうじだとexpermiented pylons
.
tg-admin quickstart —> paster quickstart tg-admin info —> paster tginfo tg-admin toolbox –> paster toolbox tg-admin shell –> paster shell tg-admin sql create –> paster setup-app development.ini
鉄塔
できるより柔軟におWSGIスタックのプライバシーステートメントのORMのtemplater、選択形-ing)、鉄塔の連結す。このことは 私のおすすめの選択肢, することが難しく、優れた文書化を可能にする実験が異なる。
では足りないと感じるほどその結果、作品ィ(生産展開)またはスタンドアローンで(あ試験および実験ステージ).
なので、両方あると思うんでと鉄塔:
2つのオプションのための試験段階
python
単体)4スケーラブル生産用
FastCGI
, を想定し、データベースの選択を維持することが可能と)
の鉄塔の管理インターフェイスはTurboGears.この玩具 単独 例:
$ paster create -t pylons helloworld $ cd helloworld $ paster serve --reload development.ini
生産クラスの展開きのセットアップガイドの Apache + FastCGI + mod_rewrite
が可能 こちらの.このスケールアップです。
はApacheのhttpd + mod_fcgid(WSGIアプリケーションである)web.pyを使用します。
は魔法のように動作します。
私たちは、Webサービスの一部について純粋貼り付け]を使用しています。 (社内展開機構と、私たちはそのように貼り付け展開か何かを使用していない)展開するのは簡単です、生産システムとどのような開発者のワークステーション上で実行している間の差を最小限に抑えるためにいいです。警告:私たちは私たちのための要求のヘビー級性質の貼り付け自体のうち、低レイテンシを期待してはいけません。いくつかの粗ベンチマークでは、我々はの幻想の結果を得ていなかったでした。それはちょうど原因私たちの典型的な要求ハンドラを犠牲に議論の余地ことになりました。これまでのところ、それがうまく働いています。
静的データは、様々な方法で、S3、アカマイ、ApacheとIISの使用を含む、完全に分離(及び幾分「有機」成長)スタックによって処理されています。
Apacheの+のmod_wsgiを、
シンプルで、清潔。他のsysadimnsのための簡単な(Webサーバの設定の唯一の4行)は、周りに自分の頭を取得します。