コンピュータ基礎実習 ( 上級 ) 第七回 CGI の利用 清水淳紀
はじめに 本講義のテーマ ホームページで良く利用される CGI ( シージーアイ ) について学びます。 CGI とは何か CGI の基礎知識 CGI をサーバーにインストールする CGI を実行してみる
CGI とは Common Gateway Interface ( コモン・ゲートウェイ・インタフェース、 CGI) ウェブサーバー上でプログラムを動作させる仕組み。 サーバー上のさまざまなプログラム言語を利用可能 プログラム言語の種類 Perl Perl パール PHP PHP ピーエイチピー Python パイソン Ruby ルビー など CGI と一言にいっても、サーバー上で使用されるプログラム言語はさまざま。 Perl PHP 一般的には Perl や PHP による CGI が多く使われている。
1. クライアントがサーバーにアクセス 2. サーバーでプログラム実行 3. サーバーがページを作成 4. 結果がクライアントに表示される 1. クライアントがサーバーにアクセス 2. サーバーでプログラム実行 3. サーバーがページを作成 4. 結果がクライアントに表示される CGI 動作の仕組み クライアント ( 閲覧者のパソコン ) ウェブサーバー プログラムファイル 実行 ページが生成される サーバーにアクセス サーバーは、とても忙しい。
CGI で何が出来るか ページ閲覧者の状態に応じて動的 ( インタラクティ ブ ) な ページを作成できる。 閲覧者の入力をサーバーが受け取って処理できる。 CGI で実現できるページの例 電子掲示板 ( 書き込み内容の保存や検索など ) 問い合わせフォーム ( 入力を受け取ってメールを送る な ど ) アクセスカウンタ ( 訪問者数の記録 ) Wiki ( 専用の Wiki 文法を使ってページを簡単に作成 ) Blog システム ( 簡単な操作で綺麗なページを作成 ) ウェブメール ( サーバー側でのアプリケーション提供 )
CGI 以外のプログラム プログラムは CGI 以外の方法でも実行できる Javascript によるプログラム サーバー上ではなく、利用者のコンピュータ ( クライアント ) 側 でプログラム処理が行われるので CGI ではない。 サーバーが重くならないが、原則サーバーにデータを保存して おけない。 ( 次回アクセス時に保存データを引き継げない。 ) ( 例 ) 一部のブラウザゲームなど オンラインアプリケーション 専用のプログラムをインストールしてクライアントで処理する ものは CGI ではない。 ( 例 ) MMO オンラインゲームなど Javascript の場合 Cookie( クッキー ) という技術を使うと、クライアント側にデータを保存しておくことが 一応出来る。 クライアント側で処理を行うのでアクセスが集中してもサーバーに負担が少ない利点がある。
CGI を利用するには CGI ファイルを 用意する 初期設定 サーバーにインストール プログラムを自分で作成する。 ネット上で配布されているものを ダウンロード ネット上で配布されているものを ダウンロードして入手。 設定を一部書き換えたりして 調整 ( カスタマイズ ) する。 サーバーにファイルをアップロードして アクセスすれば実行される。 ※ アップロード時には、 CGI 特有の 手続きが必要な場合がある。
CGI ファイルを用意する プログラムを自分で作成する Perl や PHP 等のプログラム言語特有の文法が分かれば メモ帳などで簡単に作成できる。 プログラムにミスがあると動かないので適宜修正する。 (これを デバッグ作業 という。) ネット上で公開されているものをダウンロード 他の作者が作成したプログラムを配布していることがあ る。 手っ取り早くプログラムの完成品を入手できる。 ダウンロードしたものを改造して使うこともある。 本講義では、ダウンロードすることによってプログラムを入手 することにする。
CGI ファイルの詳細 Perl や PHP で作成された CGI が多く配布されている。 それぞれの特徴 Perl.cgi ファイルの拡張子は.cgi または.pl ( 例 ) index.cgi sample_page.cgi CGI の歴史上古くから存在する。 プログラムの文法にやや癖があり、難解になることがある。 パーミッション サーバーに配置後 パーミッションを修正しないと動作しない。 日本語文字コードに対する対策などを行わないと文字化けしやす い。 PHP.php ファイルの拡張子は.php ( 例 ) index.php test02.php 比較的新しく策定されたプログラム言語である。 プログラム文法が比較的整理されており、習得しやすい。 ファイルのパーミッション修正などは不要。 日本語など世界各国の文字コードへのサポートが良い。 Perl 製 CGI ファイルは、サーバー上で動作させるために、ファイルに [ 実行可能 ] という許可情報 ( パーミッション ) を設定する必要がある。 本講義では、比較的扱いが簡単な PHP 製の CGI を使用することにします。
CGI ファイルの初期設定1 自分の好みに合わせて一部を書き換える。 テキスト編集プログラム ( サクラエディタなど ) で書き換え られる。 書き換えが必要な場所は大抵分かりやすく示されて いる。 (例) とある問い合わせ用 CGI ファイル( PHP) の中身 [ コメント ] と呼ばれる説明書きで 解説が書かれていることが多い。 ファイルの先頭の方に 書き換えなければならない箇所が 配置されていることが多い。 ただし書き方は作者によってさまざま。 編集箇所 編集には、 CGI 編集のためのサポートが優秀なサクラエディタ 等のアプリケーションを使うのが望ましい。 メモ帳などでは、文字コードの扱いが厳密でないので保存時に文字化けなどが発生する場合がある。
CGI ファイルの初期設定2 簡単な CGI ならば、初期設定 ( 編集 ) は不要かもしれな い。 初期設定が必要になる場合 掲示板のタイトル変更 メールの送信先アドレスの変更 初期ユーザー ID やパスワードの登録 デザインの修正 追加機能を有効にする、しない など CGI にはたいてい説明文章が付属しているので、 よく読んで適宜修正を行ってください。
CGI ファイルのアップロード PHP で作られた CGI の場合 HTML と同じように public_html フォルダ内に アップロードするだけ。 特別な設定は ( 多くの場合 ) 不要。 アクセスして動作確認 実際に URL を使ってサーバーにアクセスする。 ( 例 ) test フォルダ内に xyz.php をアップロードした場合 index.php というファイル名の場合は特別に、 URL の最後の ファイル名部分を省略できる。 index.php ( 例 ) → URL にファイル名の指定が無いとき index.html が最初のページになるのと同じ原理。
CGI のダウンロード ネット上にはフリーの CGI 配布サイトが多数存在す る Web サーバー プログラミング研究 所 CGI 配布サイト CGI ガレージ CGI 配布サイト PHP スポット PHP サンプル集。 PHP の学習向け。 PHP マニュアル PHP 公式言語マニュアル。 PHP の学習向け。 他にもたくさんありますので、 Google などで検索してみてください。 キーワードは CGI 掲示板 ダウンロード PHP... など。
[ Web サーバープログラミング研究所 ] の 掲示板をインストールしてみる1 1. サイトにアクセス。 2. ページ左上 [PHP プログラム ] コーナーにアクセス。 3. [ シンプル掲示板プログラム 普通の掲示板 (BBS)] をクリック。 4. 説明文の中の [ こちらから bbs.lzh をダウンロードしてくださ い。 ] のリンクをクリックしデスクトップ等に保存。 ( 保存したものは圧縮フォルダになっている。 ) 5. 右クリック → [ ここに展開 ] 等で圧縮フォルダを展開。 ( いくつかのファイルが展開される。 原則全て必要。 ) 6. 圧縮フォルダの中身をサーバーにアップロード。 ( 適宜 bbs フォルダ等を作成してアップロード ) 次ページに続く
[ Web サーバープログラミング研究所 ] の 掲示板をインストールしてみる2 7. サーバーに URL を使ってアクセスする。 ( 例 ) bbs フォルダ内にファイル群をアップロードし た場合 掲示板本体は bbs.php なので でアクセスできる。 設定変更例 bbs.php の内容を編集して 管理用パスワードを変えたり 掲示板タイトルを変えられる。 bbs.php のファイル名を index.php に変えると、 URL の最後の bbs.php を省略できる。 動作画面の例 さまざまな CGI のインストールを試してみてください。
初心者が CGI を利用する際のコツ CGI が動かなくてもくじけない 中には開発 PHP のバージョン違いなどが原因で、 CGI が動 かないこともある。 エラーが出てしまっても、別のサイトのプログラムを使 うなど あきらめずにトライしてみてください。 プログラムを修正する際はバックアップをとってお く ちょっとした修正の際に、うっかりプログラムを壊して しまうことがある。 ファイル名に番号をつけるなどして、こまめにバック アップをとっておくと、いざというときにやり直しが効 く。 ( 例 ) index_02.php bbs_2011_1109.php など