Transcript CGI

コンピュータ基礎実習(上級) 第七回
CGIの利用
清水淳紀
はじめに






本講義のテーマ
ホームページで良く利用される
CGI (シージーアイ) について学びます。
CGIとは何か
CGIの基礎知識
CGIをサーバーにインストールする
CGIを実行してみる
CGIとは



Common Gateway Interface
(コモン・ゲートウェイ・インタフェース、CGI)
ウェブサーバー上でプログラムを動作させる仕組み。
サーバー上のさまざまなプログラム言語を利用可能

プログラム言語の種類




Perl パール
PHP ピーエイチピー
Python パイソン
Ruby ルビー
など
CGI と一言にいっても、サーバー上で使用されるプログラム言語はさまざま。
一般的にはPerl や PHP によるCGIが多く使われている。
CGI動作の仕組み
ウェブサーバー
クライアント
(閲覧者のパソコン)
サーバーにアクセス
プログラムファイル
実行
ページが生成される
1.
2.
3.
4.
クライアントがサーバーにアクセス
サーバーでプログラム実行
サーバーがページを作成
結果がクライアントに表示される
サーバーは、とても忙しい。
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 または .pl (例) index.cgi sample_page.cgi
•CGIの歴史上古くから存在する。
•プログラムの文法にやや癖があり、難解になることがある。
•サーバーに配置後 パーミッションを修正しないと動作しない。
•日本語文字コードに対する対策などを行わないと文字化けしやすい。
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 をアップロードした場合
http://www.cc.kyoto-su.ac.jp/~g123456/test/xyz.php
index.php というファイル名の場合は特別に、URLの最後の
ファイル名部分を省略できる。
(例) http://xxxx.com/abc/index.php → http://xxxx.com/abc/
URLにファイル名の指定が無いときindex.html が最初のページになるのと同じ原理。
CGIのダウンロード

ネット上にはフリーのCGI配布サイトが多数存在する
Webサーバー
プログラミング研究所
http://wspri.dip.jp/
CGI配布サイト
CGIガレージ
http://cgi-garage.parallel.jp
CGI配布サイト
PHPスポット
http://phpspot.net/php/
PHPサンプル集。PHPの学習向け。
PHPマニュアル
http://php.net/manual/ja/
PHP公式言語マニュアル。PHPの学習向け。
他にもたくさんありますので、Googleなどで検索してみてください。
キーワードは CGI 掲示板 ダウンロード PHP ... など。
[Webサーバープログラミング研究所]の
掲示板をインストールしてみる1
1.
2.
3.
4.
サイトにアクセス。
http://wspri.dip.jp/
ページ左上[PHPプログラム]コーナーにアクセス。
[シンプル掲示板プログラム 普通の掲示板(BBS)] をクリック。
説明文の中の[こちらからbbs.lzhをダウンロードしてください。] の
リンクをクリックしデスクトップ等に保存。
(保存したものは圧縮フォルダになっている。)
5.
右クリック→[ここに展開]等で圧縮フォルダを展開。
(いくつかのファイルが展開される。 原則全て必要。)
6.
圧縮フォルダの中身をサーバーにアップロード。
(適宜 bbs フォルダ等を作成してアップロード)
次ページに続く
[Webサーバープログラミング研究所]の
掲示板をインストールしてみる2
サーバーにURLを使ってアクセスする。
(例) bbsフォルダ内にファイル群をアップロードした場合
掲示板本体はbbs.php なので
http://www.cc.kyoto-su.ac.jp/~g000000/bbs/bbs.php
でアクセスできる。
設定変更例
7.



bbs.phpの内容を編集して
管理用パスワードを変えたり
掲示板タイトルを変えられる。
bbs.phpのファイル名をindex.php
に変えると、URLの最後の
bbs.phpを省略できる。
動作画面の例
さまざまなCGIのインストールを試してみてください。
初心者がCGIを利用する際のコツ

CGIが動かなくてもくじけない



中には開発PHPのバージョン違いなどが原因で、CGIが動か
ないこともある。
エラーが出てしまっても、別のサイトのプログラムを使うなど
あきらめずにトライしてみてください。
プログラムを修正する際はバックアップをとっておく


ちょっとした修正の際に、うっかりプログラムを壊してしまうこと
がある。
ファイル名に番号をつけるなどして、こまめにバックアップを
とっておくと、いざというときにやり直しが効く。
(例) index_02.php bbs_2011_1109.php など