委員会概要 各種申請 サービス サポート リンク
マニュアル BBS FAQ 管理者各位 リサーチ

HTML, CGI, SSI


 
1.HTMLファイル設置手順

HTML(Hyper Text Markup Language)』はWebページを構成する上で使われる、最も一般的な言語です。

共用計算機(ruby)の自分のホームディレクトリに「www」というディレクトリを作ります。その中に公開するドキュメントを設置し、アクセスしたときに最初に表示するページを「index.html」もしくは「index.htm」にしてください。

パーミッションは「644(-rw-r--r--)」など、その他のユーザー(other)に読み込み権があればOKです。 画像ファイル(jpg, png, gif)も同様です。パーミッションのフラグは読み込みを「4」、書き込みを「2」、実行を「1」として表されます。読み込み「4」と実行「1」だけ与えたい場合は「4+1」で「5」と指定してやります。3桁の数字の一番左は「所有者」の設定、真ん中は「グループ」の設定、一番右は「その他のユーザー(other)」の設定です。

これはls-lオプションをつけることで確認できます。
 
% ls -l
drwxr-xr-x 3 yskhashi club   512 Oct 19 11:21 application/
drwxr-xr-x 2 yskhashi club   512 Nov 28 17:00 images/
-rw-r--r-- 1 yskhashi club 12262 Nov 29 09:39 index.html
-rw-r--r-- 1 yskhashi club 12550 Nov 28 17:00 index.php
drwxr-xr-x 2 yskhashi club   512 Oct 19 11:21 link/
drwxr-xr-x 4 yskhashi club   512 Oct 19 11:21 outline/
drwxr-xr-x 5 yskhashi club   512 Nov 26 10:02 past_record/
drwxr-xr-x 3 yskhashi club   512 Oct 19 11:21 service/
drwxr-xr-x 6 yskhashi club   512 Nov 26 10:01 support/

ファイルのパーミッションを644に変更するには次のようにします。

% chmod 644 index.html

設置後は、「http://www.club.kyutech.ac.jp/~user/」(userのところは自分のアカウント名)の形式でアクセスできるようになります。

注意:団体Webページの場合はWeb管理マニュアルを見てください。

目次へ戻る
 
 
2.CGI, SSI設置手順

CGI(Common Gateway Interface)』は、ブラウザからサーバー側のプログラムを呼び出して実行する仕組みです。掲示板などの動的ページでよく使われ、主にPerl言語が使われています。

SSI(Server Side Includes)』は、HTMLファイルの中にコマンドを書くことによって、ブラウザが要求したときに、サーバー側でコマンドを実行し実行結果をその場所に挿入します。

CGIは「.cgi」、SSIは「.shtml」を拡張子とすることで使用することができます。 また、Perlのパスは/usr/local/bin/perlとなります。

現在、共用計算機WWW利用規約第4条において「HTTPを介して他のプロトコルへアクセスするCGIの設置」を禁止しています。例外としてCGIを利用した〜@club.kyutech.ac.jp宛のメール送信のみ許可し、それ以外には送信できないようになっています。

CGI本体のパーミッションは「700(-rwx------)」など所有者に実行権があればOKです。CGIが書き込むデータファイルなどは「600(-rw-------)」など所有者に書き込み権があればOKです。SSIはHTMLと同じパーミッション設定です。

注意:このパーミッション設定は個人Webページにおいてのみ有効であり、団体Webページには適用されません。また、設定がきちんとされていないとCGIが正常に動作しない場合があります。団体Webページの場合はWeb管理マニュアルを見てください。

  • パーミッションの設定について(補足)

現在、共用計算機WebサーバーではsuEXECという機能を利用しています。これはユーザーのページにおいてCGIやSSIを所有者の権限で実行できるようにするWebサーバーの機能です。suEXECを有効にすることで、ユーザーが個別のCGIやSSIプログラムを開発し、実行することで生じるセキュリティ上の危険を大幅に減らすことができます。 掲示板などのCGIでデータを保存するファイルはパーミッションを666(-rw-rw-rw-)に設定することが多いですが、suEXEC環境下では644(-rw-r--r--)600(-rw-------)として動作させることが可能です。その他に、ロック機能付きのCGIなどではディレクトリのパーミッションを777(-rwxrwxrwx)にする場合がありますが、これも普通の755(-rwxr-xr-x)705(-rwx---r-x)で動作します。

  • SSI等の引数について

SSI等でHTMLの中に<!--#exec cmd="..."--><!--#exec cgi="..."-->と書いた中で引数の指定はできません。
次のような例では実行されません。

×例1: <!--#exec cmd="counter.cgi datafile"-->
×例2: <!--#exec cgi="/~hogehoge/cgi-bin/counter.cgi?datafile"-->

解決方法として、次のような方法があります。
1.呼び出されたプログラム内で引数にしていた設定などを書き込む。
2.プログラムを引数つきで実行するように別のスクリプトを作成する。

○例: <!--#exec cmd="counter.sh"-->

-----counter.sh-------
#!/bin/sh
counter.cgi datafile
---------------------

  • SSI等のパスについて

SSI等によるHTMLドキュメントの中からディレクトリをさかのぼるCGIの呼び出しや絶対パスによるプログラムの呼び出しはできません。
次のような例では実行されません。

×例1: <!--#exec cmd="/hoge/hogehoge/www/counter.cgi"-->
×例2: <!--#exec cmd="../cgi/counter.cgi"-->

呼び出されるプログラムは必ず呼び出すHTMLファイルを置いてあるディレクトリ以下に置いて相対パスで指定してください。

○例: <!--#exec cmd="cgi/counter.cgi"-->
目次へ戻る
 
 
3.ログの閲覧

もし、これらの設定が正しく行われなかった場合、HTMLが表示されなかったり、CGIがきちんと動作しなかったりします。この場合、Webサーバが出力するエラーログを見ることによって解決できる場合があります。

エラーログの場所は共用計算機(ruby)の/var/httpd/www/内のerror_logです。

このエラーログは現在までのエラーがすべてかかれていますので、閲覧するときはtail(情報を下から取り出す)コマンドなどを使用してください。

% tail [-n] /var/httpd/www/error_log

オプション-nnには数字が入り、下からn行を表示します。指定しない場合はn=10となります。

注意:団体Webページの場合は、/var/httpd/[団体ドメイン名]/内に保存されています。

目次へ戻る
 
 
4.その他の注意点

掲示板などCGIをURLで直接呼び出し、かつCGIプログラム内でファイルの置かれているディレクトリを「$0」(perl) やARGV[0](C言語)で取得している場合、CGIが誤動作を起こす可能性があります。本来、この変数にはプログラムのフルパスが入っていたのですが、suEXEC環境下ではプログラムのファイル名だけが入るようになるためです。そのためファイルの置いている場所は手動でフルパス名を明示的に指定するようにしてください。
目次へ戻る
 

Topへ戻る


(C) 2004 九州工業大学 学生自治ネットワーク委員会
K.I.T. Student Administered Network Commission