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 で動かすまで
コメント