ApacheとBottleとの連携

本サイトを動かしているサーバ機mac mini 2018では、WebサーバApacheがHTTPSアクセスをListenしています。そのため、PythonのWebフレームワークBottleでHTTPSアクセスをListenするWebアプリを運用したくても、ポートが競合するためうまくいきません。

そこで、WSGIを使ったApacheとBottleの連携に挑戦してみました。

Bottleとは

この前記事を書きました。Pythonの超軽量Webフレームワークです。

WSGIとは

Web Server Gateway Interface (WSGI; ウィズギー) は、プログラミング言語Pythonにおいて、WebサーバWebアプリケーション(もしくはWebアプリケーションフレームワーク)を接続するための、標準化されたインタフェース定義である。

Wikipediaより

Webサーバ(Apache)とWebアプリケーションフレームワーク(Bottle)を接続できる仕組みです。

Webアプリの準備

Python 3.7.3とBottleを使ったWebアプリを実行する仮想環境を作ります。
pyenv、pipenv、Python 3.7.3が導入されていることが前提です(こちらを参照)。

仮想環境を置くディレクトリは/Users/username/webApp/test/です
そこにapplication.pyを作成します。
前半は、pipenvで構築した仮想環境を起動させる部分、後半はBottleによるWebサーバです。

 

Apacheの設定変更

今回はWSGIの練習なので、ローカルで実験してみます。

まず、mod_wsgiが有効になっている必要があります。私の環境では、前の記事で書いたとおり設定済みです。

VirtualHostを有効にしている私の環境における設定ファイルは/usr/local/etc/httpd/extra/httpd-vhost.confです。
localhostに関する設定を次のとおり記述します。

WSGIScriptAliasで、スクリプトのパスとWebアドレスの対応を定義します。
下記の設定では、http://localhost:8080/test/へのアクセスにapplication.pyが応答するようになります。

 

 

設定ファイルの更新後は、Apacheを停止&再起動しましょう。

ブラウザでアクセスしてみる

http://localhost:8080/test/hello/hogeにアクセスしたときのレスポンスです。

ApacheとBottleとの連携がうまくいきました。
以上です。

Leave a Comment

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください