mod_wsgi

From ArchWiki
Jump to navigation Jump to search

イントロダクション

プロジェクトサイト より:

mod_wsgi の目標は Python WSGI インターフェイスに準拠している全ての Python アプリケーションをホストできる、簡単に使える Apache モジュールを実装することです。高いパフォーマンスが要求されるプロダクションウェブサイトだけでなく、ウェブホスティングサービスで動かしている平均的な個人サイトでの使用にもこのモジュールは適しています。

mod_wsgi はサーバーの中に Python アプリケーションを埋め込む Apache モジュールで、Python PEP 333 で定義されている Python WSGI インターフェイスを使って交信します。WSGI は Python で高品質かつ高性能なウェブアプリケーションを作る方法の一つです。

WSGI には様々なウェブアプリと簡単に対話するための標準的な仕組みがあります。有名な Python アプリケーションやフレームワークの中には簡単にデプロイ・エンベッドできるように wsgi を提供しているものがあります。例えば、Django によるブログやプロダクションの Trac を単一の Pylons アプリケーションに埋め込んで、わざわざ両方のアプリケーションを修正しなくても、認証を処理できるということです。

例:

インストール

community に2つのパッケージが存在します:

  • mod_wsgi には全てのバージョンの Python (2.x と 3.x) で動作するモジュールが入っています。
  • mod_wsgi2 には 2.x バージョンの Python でのみ動作するモジュールが入っています。

Apache の設定

  • インストールの中で示されるように、以下の行を Apache の設定ファイルに追加してください:
/etc/httpd/conf/httpd.conf
LoadModule wsgi_module modules/mod_wsgi.so
  • Apache を再起動:
# systemctl restart httpd
  • Apache が正しく動作していることを確認してください。先のコマンドが何も返さなかった場合、Apache の起動は上手くいっています。そうでない場合、以下のコマンドでエラーを確認できます:
# systemctl -l status httpd.service

モジュールのテスト

  • Apache の設定ファイルに以下の行を追加してください:
/etc/httpd/conf/httpd.conf
WSGIScriptAlias /wsgi_app /srv/http/wsgi_app.py
  • テストファイルを作成:
/srv/http/wsgi_app.py
#-*- coding: utf-8 -*-
def wsgi_app(environ, start_response):
    import sys
    output = sys.version.encode('utf8')
    status = '200 OK'
    headers = [('Content-type', 'text/plain'),
               ('Content-Length', str(len(output)))]
    start_response(status, headers)
    yield output

# mod_wsgi need the *application* variable to serve our small app
application = wsgi_app
  • Apache を再起動:
# systemctl restart httpd

参照