CGI を起動するために、以下の設定を行います。
python の Web server から CGI を実行すると、 nobody というユーザーのユーザーの権限で実行されるようです。 nobody がパスワード無しで CGI を実行できるよう、 以下の設定を付け加えます。
$ sudo -s # visudo 最後に以下の行を付け加えます。 nobody ALL=(ALL) NOPASSWD: ALL
python を使った簡易 web サーバーは以下のように起動します。
$ cd $ pwd /home/pi $ cd public_html $ sudo -s # python start_cgi_server.py &
Raspberry Pi で Web ブラウザを起動し、アドレスに localhost と打ち込みます。
/home/pi/public_html/index.html が表示されます。
check を選択して「実行」すると、
sudo ./arduino.py check
が Raspberry Pi 上で実行され、3 秒後、赤色 LED がチカチカします。
ctrl + c で python を終了します。
Raspberry Pi が起動する度に IP アドレスが変わるのは 扱いにくいので、IP アドレスを固定する必要があります。
2 つ方法があります。
色々な場所で動かすには 1. の方がお薦めです。 しかし、通常は自宅内 LAN で動作させることになると思います。 この場合は、2. の方が簡単です。 その方法は以下の通りです。
/etc/dhcpcd.conf の末尾に以下のように書き込む。 自宅内 LAN のアドレスが 192.168.0.xx であり、 ラズパイに 192.168.0.14 という IP アドレスを付けたいとき、 以下のように書きます。
interface wlan0 static ip_address=192.168.0.14/24 static routers=192.168.0.1
確認
$ sudo /etc/init.d/dhcpcd reload $ ifconfig
python の web サーバーをラズパイの起動時に 自動起動するよう設定します。
/etc/rc.local の末尾の exit 0 の手前に以下の 1 行を追加します。 最後の ) の手前の & を絶対に忘れてはいけません。 忘れると、ラズパイが起動途中で止まってしまいます。
こうなると、シングルユーザーモードで起動し、ルートファイルシステムを マウントし直してから、/etc/rc.local を修正する必要があります。
その方法は ここ に書いてあります。
( cd /home/pi/public_html; python start_cgi_server.py >> /var/tmp/web.log 2>&1 & )
rc.local の所有者は root なので、以下のように編集します。
$ cd /etc $ sudo -s # nano rc.local 編集作業 # exit $
リブート後
$ ps aux | grep python
を実行し、root の権限で python start_cgi_server.py が自動実行されていることを確認します。
実行されている場合、ラズパイの web ブラウザを起動し、
localhost
にアクセスすると、リモコンのページが開きます。