MacにてApache+mod_wsgi+PythonでHello World!

Django(Python)をApacheで動かす。

PythonをWebアプリケーションとして動かす方法は色々あるっぽいけど、とりあえずApacheから。
いつかはNginxでもやりたい。

Apacheで動かす場合はmod_wsgiを使うとのこと。
mod_pythonは古いので非推奨

既にpythonとDjangoはインストールしている前提で。

前々回:Macのローカルにpython3.4の開発環境を作成

前回:Python3.4とDjango1.7でMySQL5.6へ接続(mysql-connector-pythonを使え)

1. Apacheにmod_wsgiを設定

MacのローカルにおけるApacheに関してはこちらを参照。
Apacheのバージョンは2.2.26。

Homebrewでmod_wsgiをインストール。
wsgiに関してはこちらの記事を参照。

brew install mod_wsgi

以下のようなErrorが表示された。

Error: No available formula for mod_wsgi
Searching taps…
homebrew/apache/mod_wsgi

homebrewでのインストールを諦めかけたその時、こちらの記事を発見する。

以下の2つのコマンドでインストールできた。
brew tapコマンドについてはこちらの記事を参照。

brew tap homebrew/apache

brew install mod_wsgi

mod_wsgiのPATHを確認する。

brew info mod_wsgi

ご丁寧にhttpd.confへ以下を記述しろと表示された。

LoadModule wsgi_module /usr/local/Cellar/mod_wsgi/3.5/libexec/mod_wsgi.so

今回はpython.confという設定ファイルを作成し、python関係の設定は全てそちらへ記述するようにする。
puthon.confを作成。

sudo vim /private/etc/apache2/other/python.conf

mod_wsgiの読み込みと、testにアクセスされた際にhello.pyを返す、と記述。
hello.pyを設置する場所はApacheのドキュメントルートを設定しておいた。

LoadModule wsgi_module /usr/local/Cellar/mod_wsgi/3.5/libexec/mod_wsgi.so
WSGIScriptAlias /test /Library/WebServer/Documents/hello.py

Apacheの設定ファイルを編集する。

sudo vim /private/etc/apache2/httpd.conf

下記を記述されているか確認。
一番下の方。

Include /private/etc/apache2/other/*.conf

Apacheを再起動。

sudo apachectl restart

mod_wsgiをインストールするに苦労したな・・・

2. Pythonでの動作確認

まずはPythonで確認してみよう。

hello.pyを作成する。

sudo vim /Library/WebServer/Documents/hello.py

以下を記述。

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]

権限を修正しておく。

sudo chmod 755 /Library/WebServer/Documents/hello.py

これでlocalhost/testへアクセス。

無事、hello world!と出たらOK!

ここでInternal Server Errorと出たら、Apacheのエラーログを確認しながらこちらの記事を参考にする。

tail -f /private/var/log/apache2/error_log

自分は単純な記述ミスだったけど。。。

次はDjangoでHello Worldやっぞ!

参考

virtualenv + flask + apache + wsgi で動かすまで

Mac OS X 10.6.8 に mod_wsgi を入れて,python で Web ページを作成する

ApacheのインストールからDjangoのデプロイまで

コメント

タイトルとURLをコピーしました