QR1891
ブラウザから GPIO の制御をする準備として、bash スクリプトで簡単な CGI プログラムを実装してみました。
ここでは Apache のインストールから簡単な CGI プログラムを動かす方法を紹介します。
Apache のインストール
apt-get で apache をインストールします。
$ sudo apt-get install apache2
CGI
以前紹介した tw や gpio コマンドをそのままブラウザから実行するためにCGI プログラムをシェルスクリプト(bash)で実装しています。
apt-get でインストールした Apache のデフォルトの設定では、/usr/lib/cgi-bin/ のディレクトリにおいたファイルは CGI プログラムとして実行されます。
なお、このディレクトリの設定は /etc/apache2/sites-available/default で定義されています。
追記: CGI を利用するための設定
・.cgi ファイルを CGI スクリプトとして実行する
/etc/apache2/mods-available/mime.conf 219行目のコメントアウトをはずす。
AddHandler cgi-script .cgi
・docroot で cgi を利用できるようにする
/etc/apache2/sites-available/default を編集して /var/www/ の設定に「 +ExecCGI」を追記する。
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews +ExecCGI
AllowOverride None
Order allow,deny
allow from all
</Directory>
・Apache を再起動する
$ sudo /etc/init.d/apache2 restart
CGIプログラムのサンプル
Hello World
以下の内容で helloworld.cgi を作成します。
$ cd /usr/lib/cgi-bin/
$ sudo emacs helloworld.cgi
helloworld.cgi の内容
#!/bin/bash
echo “Content-type:text/html”
echo “”
echo Hello World!
次の URL にブラウザでアクセスすると「Hello World!」と文字が表示されます。
http://[ipアドレス]/cgi-bin/helloworld.cgi
http://[ipアドレス]/cgi-bin/helloworld.cgi
日付を表示する
以下の内容で date.cgi を作成します。
#!/bin/bash
echo “Content-type:text/html”
echo “”
date
次の URL にブラウザでアクセスするとアクセスした日付が表示されます。
http://[ipアドレス]/cgi-bin/date.cgi
http://[ipアドレス]/cgi-bin/date.cgi