"Diary" インターネットさんへの恩返し

いつもソースコードコピペばかりなので,みなさまへ少しばかりの恩返しを

Apache/python Webサーバセットアップ on Raspberry pi



スポンサーリンク

GPIOの操作をpythonでいろいろ作ってしまったので、webアプケーションもpythonでやることにした。

pythonの SimpleHTTPServer をwebサーバ機能としてテストしてみたが、設定方法や運用が良く分からないのでapacheにすることにした。

Pythonのプログラミングは「無料で「みんなのPython Webアプリ編」のPDFファイルがダウンロード可能に - GIGAZINE(pdf無料)で一通り学習できます。

1.apache2インストール

sudo apt-get install apache2

2.接続テスト

var/www がデフォルトのルートになっているので、そちらへブラウザでアクセス (http://サーバ名)


3.構成ファイルの設定

/etc/apache2/apache2.conf がそのようだが、実際は/etc/apache2/sites-available/defaultに設定します。

今まで httpd.conf ばかりいじっていたのでちょっとパニクッたが色々調べるとdebian系サーバで apacheの管理をする場合は apache2.conf が構成ファイルになるとのこと。


4.諸設定

/var/www/public_html をドキュメントルートにすることにしたので所有者割当て。

sudo chown <user>:<group> /var/www/public_html

デフォルト起動に。

sudo update-rc.d apache2 defaults

5.起動停止テスト

sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 start
sudo /etc/init.d/apache2 restart

6.pythonモジュールインストール

sudo apt-get install libapache2-mod-python

7.pyファイルの許可設定

sudo nano /etc/apache2/sites-available/default

以下の3行追加

AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On

ServerName hostnameも追加しておく

設定後

DocumentRoot /var/www/public_html

<Directory /var/www/public_html >
       Options Indexes FollowSymLinks MultiViews
       AllowOverride None
       Order allow,deny
       allow from all
       AddHandler mod_python .py
       PythonHandler mod_python.publisher
       PythonDebug On
</Directory>

<IfModule dir_module>
       DirectoryIndex index.html index.py
</IfModule>

8.テスト

/var/www/test.pyファイルを作成し以下のテスト用のコードを記載。

def index(req):
  return "Test successful";

http://サーバ名/test.py へブラウザアクセスし、「Test successful」と表示されればOK!


他POSTとか使った一般的な py ソースコードの書き方は(4)参照。



ご参考
(1)http://www.howtoforge.com/embedding-python-in-apache2-with-mod_python-debian-etch
(2)http://d.hatena.ne.jp/suttanipaata/20110517/1305642197
(3)http://httpd.apache.org/docs/2.0/ja/howto/cgi.html
(4)http://ghantoos.org/howto-apache2-mod_python/
(5)http://yife.hateblo.jp/entry/2012/01/25/054210

PS.その他苦労点
pythonのpyファイルを更新してもぜんぜん反映されない。そんな仕様のようだ。
 → http://docs.python.jp/3.3/howto/webservers.html

以上