ラズパイを軽量webサーバーにする

raspberry pi をwebサーバにする手順

目的はフィジカルコンピューティングやIoTと呼ばれるたぐいのものです.具体的にはセンサ情報・ログのモニタリング,軽量なwebサーバである lighttpd を入れてCGI経由で python スクリプトを起動したりします.

python スクリプトはi2cなどでセンサ情報を収集したり外部機器を制御するもので,これらを組み合わせることでスマホでエアコンをOn/Offしたり,温度やCO2をモニタリングしたりできるようになります.

インストール&初期設定

$ sudo apt install lighttpd

Webサーバには SSL対応とか CGIPHP,認証など様々な機能があります.これらの機能は,lighttpd ではモジュールという単位で実装されており,不要なモジュールを無効にすることでWebサーバの処理をできるだけ軽くする方針になっています

モジュールの設定は lighttpd-enable-mod lighttpd-disable-mod で行います

$ sudo lighttpd-enable-mod 
Disabled modules: accesslog auth cgi debian-doc dir-listing evasive evhost expire extforward fastcgi fastcgi-php flv-streaming no-www proxy rewrite rrdtool simple-vhost ssi ssl status userdir usertrack 
Enabled modues:

CGI の機能は cgi モジュールで実装されています. fastcgiというモジュールもありますがこれは 複数のリクエストを一回の外部プログラム起動で行うためのCGI拡張機能で,cgiモジュールとは別機能になります.

cgi モジュールを有効にします

$ sudo lighttpd-enable-mod cgi

設定を変更したら systemd経由で lighttpd を(再)起動します

$ sudo systemctl restart lighttpd

webサーバの設定

設定ファイルは  /etc/lighttpd/lighttpd.conf  です

コンテンツを保存した ディレクトリは docment root という値で指定します.デフォルト値は /var/www/html になっています

server.document-root        = "/var/www/html"

cgiの設定

設定ファイルは /etc/lighttpd/conf-available/10-cgi.conf です

CGIpythonスクリプトを使えるようにします

$HTTP["url"] =~ "^/cgi-bin/" {
        cgi.assign = ( ".py" => "/usr/bin/python" )
}

これだけで 拡張子が py のスクリプトが webサーバ経由で実行できるようになります.