体験!マイコンボードで組込みLinux

第8回 組込みWebサーバの構築

この記事を読むのに必要な時間:およそ 11 分

Webサーバ構築について

SH7706LSRボードに載せたLinux上でも,PC Linuxと同様にWebサーバを構築することができます。PC LinuxでWebサーバを構築したりそれを利用する場合の代表的な用途としては,ネットワークによる情報発信があります。SH7706LSRボードも機能的にはPCと同等なので,Webサーバを構築してネットワークによる情報発信を行うこともできますが,組込みボードそのものは一般的にはネットワークによる情報発信のために購入することはあまりないと思います。組込みボードは携帯機器の制御や計測制御などが主な用途なので,Webサーバの用途としては,携帯機器の機器設定や計測制御用のコントロールパネルが考えられます。

前準備

SH7706LSRボードなどの組込みボードでWebサーバを構築する前に,Webサーバ構築をしたことがない場合はあらかじめPC Linux上でWebサーバ構築の練習をしておくといいでしょう。PC LinuxでのWebサーバ構築は定番のひとつなので,市販書籍をはじめとする情報量が豊富なので情報に事欠くことはないと思います。

PC LinuxでのWebサーバ構築ではHTML文書の表示とともに,CGIプログラムの構築も行います。また,SH7706LSRボードなどの組込みボードでWebサーバで計測制御用途に使う場合は,計測や制御のプログラム開発もできるようにしておかなければなりません。

一般的にはLinux上で計測や制御を行う場合はデバイスドライバを使うのが定番となっていますが,Linuxデバイスドライバの作成は情報量が少なくハードルも高い傾向にあるので,SH7706LSRではアプリケーションプログラムからでも直接にハードウェアを操作できるサンプルが公開されています。そのようなサンプルを使えば,Linux上のアプリケーションプログラムでも比較的簡単に計測や制御のためのハードウェア操作が直接行えます。ただ,割り込みなどはデバイスドライバで行うしかないようです。

CGIプログラム

HTMLのフォーム

単純にコンテンツを表示させるCGIプログラムならば,前回に紹介したとおりのプログラムで十分です。CGIプログラムは通常,ユーザの操作を受けてその内容に応じてHTML文書のコンテンツを動的に出力をします。CGIプログラムはHTML文書のコンテンツの出力をするという機能が核になってはいますが,ユーザの操作を受ける処理も重要になってきます。

HTML文書のタグにはCGIプログラムの動作を前提にしたフォームというタグの文法が定義されています。HTMLのフォームでは,チェックボタンやラジオボタンなどのボタンによるユーザ入力を受けつける機能や,テキストボックスによるユーザが入力したテキスト内容を受け付ける機能があります。

通常のプログラミング言語でのウィジェットではそのプログラミング言語だけで処理が閉じていてそれだけで完結していますが,HTMLのチェックボタンやラジオボタン,テキストボックスなどのウィジェットの操作によるアクションはHTML文書単体では対応していません。HTML文書自体は単なる紙芝居なので,それだけでは動的なウィジェットの操作に対応はできません。HTML文書のフォームタグはCGIプログラムとの連動が前提となっています。

フォームとCGI

CGIプログラムは標準出力でHTML文書のコンテンツを出力するだけなので,専用のプログラミング言語や特殊なツールキットなどは不要です。標準出力の機能さえあればいいので,どのような言語でも,シェルスクリプトでもかまいません。

ただCGIプログラムは,HTMLのフォームでのチェックボタンやラジオボタンなどのボタンによるユーザ入力やテキストボックスによるユーザが入力したテキスト内容を受け付ける必要がありますので,それらの入力内容を取得できるようになっていなければなりません。

WebサーバにおいてHTMLのフォームの入力内容は環境変数を介して受け取ります。したがって,CGIプログラムは標準出力機能だけではなく,環境変数の内容を取得できなければいけません。C言語においてはgetenv関数で環境変数の内容を取得でき,他の言語においてもたいていgetenv関数に相当する機能は揃っています。

Webサーバにおける環境変数

Webサーバでサポートする環境変数はいろいろとありますが,その中でもBusyBoxのhttpdでもサポートしている環境変数の概略を紹介します。Webサーバでの環境変数は実際に動作させ,表示させてみれば具体的に理解できると思います。

① HTTP_REFERER

CGIプログラムを呼び出したリンク元のURLを取得することができます。CGIプログラムから元のページに戻る場合のリンクを設定する場合に用いると便利です。ただし,CGIプログラムをブラウザで直接URL入力した場合とブックマークから呼び出した場合にNULLになります。

② HTTP_USER_AGENT

ブラウザのバージョン番号とプラットフォーム名を含んだクライアントの情報を取得することができます。HTMLの標準的な機能以外の拡張機能はブラウザの種類によってサポート内容が異なったりするので,クライアントにおけるブラウザの情報の内容に応じてCGIプログラムは臨機応変に対応することが可能になります。

③ REQUEST_METHOD

CGIプログラムへの要求方法を取得することができます。

④ QUERY_STRING

HTMLのフォームでのチェックボタンやラジオボタンなどのボタンによるユーザ入力やテキストボックスによるユーザが入力したテキスト内容を取得することができ,CGIプログラムの動作に必須な環境変数となっています。

⑤ SCRIPT_FILENAME

CGIプログラムが置かれているマシンのフルパスでのファイル名を取得することができます。

⑥ SCRIPT_NAME

CGIプログラムが置かれているマシンでのhttpdのドキュメントルートからの相対パス名を取得することができます。

⑦ SERVER_SOFTWARE

httpdに関するソフトウェア情報を取得することができます。

著者プロフィール

みついわゆきお

1986年日立製作所入所,その3年後に自社ワークステーションでの開発業務をきっかけにBSDを経てLinux利用を始める。

1991年日立を退社し,その後,ボランティアでLinux関連ツールの整備と開発しながらWindows否定運動およびLinux普及運動を開始し,Linuxディストリビューション草創期にはPlamoLinuxのメンテナンスにもかかわる。

2001年ごろより非営利ベースでボードコンピュータの開発を開始し,やがて,無償によりハードとソフトを開発したH8マイコンボードの販売を秋月電子にて開始した。

現在,ボードコンピュータ用基本ソフトMES2.5や,SHプロセッサ向けLinuxパッチおよびTOPPERS/JSPパッチを無償で一般に提供しながら,ティーエーシーやエムイーシステムより原価率100%を目標(ただし,販売店の営業・販売費用や開発・製造の際の差損を除く)としたSuperHボードコンピュータを販売中。

また,現在でも頑固にMS社否定及びWindows撲滅運動に邁進中。

コメント

コメントの記入