Raspberry Pi で CGI(bash)を動かす

QR1891

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

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

date.cgi

http://[ipアドレス]/cgi-bin/date.cgi