MacのApacheでPythonをCGIとして実行する方法


Macには標準でApacheとPythonがインストールされているため、すぐにPythonを使ったプログラム開発ができるようになっています。PythonのプログラムをApacheで動かすことが簡単にできて、とても便利です。ここでは、Macを使ってApache上でPythonをCGIとして実行する方法をご紹介します。



環境


今回の動作確認に用いた環境は以下の通りです。

・Macbook Pro Late 2016
・MacOS X High Sierra(10.13)
・Apache 2.4.27
・Python 2.7.10


Macbook Proに標準でインストールされているものをそのまま使いました。 何もインストールしていません。Macの便利なところですね。何も考えずに開発環境が準備できるのが良いところです。




Apacheのhttpd.confの編集


Macbook Proを使えば何もインストールしなくてもそのまま使えるのですが、PythonをApacheで動かそうと思うと設定を少しいじらないといけません。


そのためにhttpd.confを一部修正していきます。


(1)まず、viコマンドでhttpd.confを開きます。

httpd.confは/etc/apache2の直下にあります。管理者権限でないと編集できないので、sudoコマンドをつけます。

sudo vi /etc/apache2/httpd.conf



(2)LoadModule cgi_module libexec/apache2/mod_cgi.soのコメントアウトを外します。

#LoadModule cgi_module libexec/apache2/mod_cgi.so

LoadModule cgi_module libexec/apache2/mod_cgi.so



(3)AddHandlerのコメントアウトを外し、.pyを追加します。

これによって、「.py」の拡張子のままPythonプログラムをCGIとして動かすことができます。

#AddHandler cgi-script .cgi

AddHandler cgi-script .cgi .py


以上で設定は完了です。




Apacheの起動


httpd.confの修正が完了したら、Apacheを起動しましょう。

httpd.confが正しく修正されていれば正常に起動できます。

sudo /usr/sbin/apachectl start

参考までに、停止と再起動のコマンドもご紹介します。

停止:sudo /usr/sbin/apachectl stop

再起動:sudo /usr/sbin/apachectl restart


ブラウザを立ち上げて、URL欄に以下を入力します。

http://127.0.0.1/

It works!と表示されればOKです。 Apacheが正常に起動できました。




プログラムの配置


Apacheにプログラムを認識させるためには、以下の場所にプログラムを置きます。

コンテンツ(HTML、画像、cssなど): /Library/WebServer/Documents

Pythonのプログラム(CGI): /Library/WebServer/CGI-Executables


デフォルトでは上記の場所に置くことによって、Apacheでプログラムを動かすことができます。 httpd.confを編集すれば、上記の場所以外でも動作させることができますが、ここでは省略させていただきます。


以下のように、簡単なpythonプログラムを作って動作するかどうか確認してみます。

#!/usr/bin/python

print 'Content-Type: text/html\n\n'
print "Hello world!"

test.pyという名前にして、/Library/WebServer/CGI-Executablesに保存します。

プログラムが実行できるようにパーミッションを変更します。

sudo chmod 755 など





プログラムの実行と表示


プログラムの配置が完了すれば、あとはブラウザを立ち上げて、URL欄に以下を入力します。

http://127.0.0.1/cgi-bin/test.py

HelloWorldと表示されればOKです。




ログの保存場所


Apacheのログは以下の場所にあります。プログラムがうまく動かない場合などに参照してみてください。

/private/var/log/apache2/error_log
/private/var/log/apache2/access_log



このエントリーをはてなブックマークに追加



関連記事 

1.Pythonが使えるレンタルサーバー バージョンと速度の比較
2.レンタルサーバー各社でのPythonの実行方法まとめ
3.Macインストーラーの作成方法
4.pkgbuildコマンドによるスクリプト実行方法とパラメーター


▲ このページの上部へ戻る