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
以上