7

web.py アプリケーションを作成しました。デプロイする準備が整ったので、web.py の組み込み Web サーバーではなく実行したいと考えています。アプリケーション コードを変更せずに、Apache または IIS などのさまざまな Web サーバーで実行できるようにしたいと考えています。私が正しく理解していれば、これがWSGIの出番となる場所です。
しかし、アプリケーションを WSGI サーバーにデプロイできるようにするために何をしなければならないのか正確にはわかりません。ほとんどの例は、Pylons/Django/other-framework を使用していることを前提としています。その上で、すべてを修正する魔法のコマンドを実行するだけです。
(非常に簡単な)web.pyドキュメントについて私が理解していることから、を実行する代わりにweb.application(...).run()、を使用する必要がありますweb.application(...).wsgifunc()。そして、何?

4

3 に答える 3

6

特定の WSGI ホスティング メカニズムでホストするために必要なことは、サーバーによって異なります。

Apache/mod_wsgi と Phusion Passenger の場合、'application' と呼ばれるオブジェクトを含む WSGI スクリプト ファイルを提供するだけで済みます。web.py 0.2 の場合、これは適切な引数を指定して web.wsgifunc() を呼び出した結果です。web.py 0.3 では、代わりに web.application() によって返されるオブジェクトの wsgifunc() メンバー関数を使用します。これらの詳細については、mod_wsgi のドキュメントを参照してください。

http://code.google.com/p/modwsgi/wiki/IntegrationWithWebPy

代わりに、Lighttpd、nginx、Cherokee などのサーバーに FASTCGI、SCGI、または AJP アダプターを使用する必要がある場合は、「flup」パッケージを使用して、これらの言語に依存しないインターフェイスと WSGI 間のブリッジを提供する必要があります。これには、mod_wsgi や Phusion Passenger のようなものがブリッジを必要とせずに直接使用する上記の同じ WSGI アプリケーション オブジェクトで flup 関数を呼び出すことが含まれます。詳細については、次を参照してください。

http://trac.saddi.com/flup/wiki/FlupServers

重要なことは、Web アプリケーションを構成して、それ自体が自己完結型のモジュール セットになるようにすることです。特定のサーバーを操作するには、必要に応じて個別のスクリプト ファイルを作成し、そのサーバーが必要とするものとアプリケーション コードを橋渡しします。アプリケーション コードは常に Web サーバーのドキュメント ディレクトリの外にある必要があり、必要に応じて、ブリッジとして機能するスクリプト ファイルのみがサーバーのドキュメント ディレクトリに配置されます。

于 2009-07-03T10:18:09.577 に答える
0

2009 年 7 月 21 日の時点で、 webpy インストール サイトには、 flupfastcgiapacheなどについて説明した、より完全なインストール ガイドがあります。まだ試していませんが、より詳細なようです。

于 2009-08-07T17:12:58.970 に答える
0

これは、cherrypy wsgi サーバーを使用した 2 つのホストされたアプリの例です。

#!/usr/bin/python
Web インポート wsgiserver から
ウェブをインポート

# webpy wsgi アプリ
URL = (
  「/test.*」、「インデックス」
)

クラス インデックス:
    デフGET(自己):
        web.header("コンテンツタイプ", "text/html")
        return "こんにちは、world1!"

application = web.application(urls, globals(), autoreload=False).wsgifunc()


# 汎用 wsgi アプリ
def my_blog_app(environ, start_response):
    ステータス = '200 OK'
    response_headers = [('Content-type','text/plain')]
    start_response(ステータス、response_headers)
    return ['Hello world! - ブログ\n']


"""
# 単一のホストされたアプリ
サーバー = wsgiserver.CherryPyWSGIServer(
            ('0.0.0.0', 8070), アプリケーション,
            server_name='www.cherrypy.example')

"""

# WSGIPathInfoDispatcher を使用した複数のホストされたアプリ
d = wsgiserver.WSGIPathInfoDispatcher({'/test': アプリケーション、'/blog': my_blog_app})
サーバー = wsgiserver.CherryPyWSGIServer(('0.0.0.0', 8070), d)            
サーバー.start()
于 2009-09-10T17:16:35.557 に答える