About CGI/SSI : CGI/SSIについて

Pegasus POWERED SERVE のWWWサーバー上にページを開設される方のための情報提供ページです。
CGIをはじめ、WWWサーバーを御利用いただく上で参考となる各種情報が掲載されています。


☆ CGIについて ☆
使用可能な言語
Perlについて
自作CGIの設置場所
パーミッションの変更
自作CGIの呼び出し方法
アクセスカウンターについて
メール送信CGI

☆ SSIについて ☆
SSIの設置方法
使用可能なコマンド

☆ .htaccessについて ☆
.htaccess設置方法
使用可能なコマンド
パスワードの管理

戻る

CGIについて

使用可能な言語

CGI作成にご利用可能な言語は、Perlです。
また、SSIもご利用可能ですので、HTMLとPerl、SSIを組み合わせて、多種多様な表現が可能となっています。


Perlについて

Perl version 5系 が利用可能です。
本レンタルサーバーはLinux上で稼働するApache系ですので、UNIXに準じた各種の関数や変数をご利用した本格的なPerlプログラミングが可能です。
Perlスクリプトの1行目には、


#!/usr/bin/perl

…と記述してください。

※ PerlによるCGIの詳しい記述に関しては、各種参考書類をご参照ください。


自作CGIの設置場所

お客様が自作されたりしたCGIを持ち込む場合、お客様のホームディレクトリ配下のpublic_htmlディレクトリの下に、cgi-binディレクトリ、もしくはcgiディレクトリを作り、そこへ設置してください。

  • CGIでよく使われる各種コマンド類のパスについて
    • CGIでよく利用される各種コマンドのパスは、以下のようになっています。
      perl  /usr/bin/perl
      sendmail  /usr/local/bin/sendmail


  • CGIお持ち込みに関する注意点

    • お持ち込みになったCGIは、~/public_html/cgi-binディレクトリ内、もしくは~/public_html/cgiディレクトリ内に設置した場合でなければ作動しません。

    • 本サーバーはsendmail互換にセッティングされたメールサーバーも用意してありますので、CGI内部におけるsendmailコマンドの御利用も可能です。

    • CGIを使用する場合、設置したCGIファイルに実行属性を設定する必要があります (下記「パーミッションの変更」参照)。



パーミッションの変更

cgi-binディレクトリに設置したファイルをCGIとして実行するためには、そのファイルのパーミッションを変更し、実行属性を持たせる必要があります。
CGIとして実行属性を設定出来るのは、「.cgi」,「.pl」,「.sh」の拡張子を持つファイルです。
CGIファイルに実行属性を設定する方法としては、FTPクライアントソフト上で行なう方法と、telnetでサーバーへログインし、シェル上のコマンドによって設定する方法などがあります。

以下に、シェル上での実行属性設定方法の例を示します。

<CGIファイルのパーミッション変更操作の一例>
XXXXX.cgiというファイルに実行属性を持たせる場合、telnetでサーバーへログインした後、以下の操作を行なう。


  $ cd public_html
  $ cd cgi-bin
  $ chmod 0755 XXXXX.cgi
  

(注: 行頭の「$」はコマンドプロンプトなので入力する必要はありません。)

なお、FTPクライアントソフト上でのパーミッション設定方法に関しては、各クライアントソフトの解説を参照してください。


自作CGIの呼び出し方法

~/public_html/cgi-binディレクトリに設置した自作CGIをHTMLから呼び出す場合、主に次の2つの方法が利用出来ます。

「URLで指定する方法」
通常のURL指定表記で呼び出す方法です。
例えば、サーバー提供の標準型アクセスカウンターを使わず、自作のイメージ表示型カウンターを置きたい場合などは、以下のように記述します。
(以下の例ではイメージ表示型CGIを扱っていますので<img src="パスとファイル名の記述">の書式で書かれていますが、 基本的にハイパーリンクを張る場合(<a href="パスとファイル名の記述">…</a>)でも、パスとファイル名の指定の記述方法に関しては同様です。)


<img src="http://www.pegasus.ne.jp/~ユーザーID/cgi-bin/CGIファイル名">

独自ドメインを取得されている場合、URLによってcgi-binを指定すると、サーバー側に用意されたcgi-binディレクトリが指定されるので、オリジナルCGIを利用したい場合は、 ~/public_html/cgiディレクトリを別個に設定し、そちらを指定してください。

<img src="http://独自ドメイン名/cgi/CGIファイル名">


「相対パスで指定する方法」
CGIを呼び出すHTMLファイルから、cgi-bin(もしくはcgi)ディレクトリまでの相対パスを指定して呼び出すことが出来ます。
例えば、呼び出し元のHTMLファイルが~/public_htmlディレクトリに存在するのなら、 以下のような記述になります。
この場合、「/cgi-bin」ではない点に注意してください。

<img src="cgi-bin/CGIファイル名">

この記述方法では、呼び出し元のHTMLファイルが~/public_htmlディレクトリにない場合は相対パスの記述が必要となります。
例えば、呼び出し元のHTMLファイルが、~/public_html/sampleディレクトリに存在する場合は 以下のような記述になります。
「..」は、ひとつ上のディレクトリを意味します。

<img src="../cgi-bin/CGIファイル名">


アクセスカウンターについて

サーバー側に用意されたアクセスカウンターCGIをご利用することで、簡単にWebページ上にアクセスカウンターを設置出来ます。

<設定例>
Webページ中、アクセスカウンターを表示させたい場所に以下のタグを記述します。

<独自ドメインを御利用の場合>

<img src="/cgi-bin/Count.cgi?df=pn-ドメイン名_任意の文字列">

<独自ドメインを御利用にならない場合>

<img src="/cgi-bin/Count.cgi?df=pn-アカウント名_任意の文字列">

<任意の文字列>の部分には、複数のカウンター利用の際、カウンターデータを識別するための任意の半角英数字を自由に設定頂けます。


例1:
「pegasus.ne.jp」というドメイン名をお持ちのお客様の場合は、
<img src="/cgi-bin/Count.cgi?df=pn-pegasus.ne.jp_index">

例2:
「hogehoge」というアカウント名のお客様の場合は、
<img src="/cgi-bin/Count.cgi?df=pn-hogehoge_sports">
…という記述となります。
上記の例で赤い文字で示した部分は、任意の文字列を指定出来ます。

カウンターCGIはポピュラーなCount.cgiを用いており、各種オプションで多彩な表現が可能です。
以下はオプションの例と画像サンプルの例です。
いろいろ試してみましょう。

アクセスカウンターのオプションの実例

アクセスカウンター用画像一覧
(「アクセスカウンター用画像一覧」のページは表示する画像の種類が多いため、全部表示するまでには時間がかかることがあります。御了承ください。)


メール送信CGI

サーバー側に用意されたCGIを用いて、メール送信フォームを簡単に作ることが出来ます。

<設定例>
Webページ中、メール送信フォームを表示したい箇所にタグを記述します。
下記の例をコピー&ペーストで張り付けて使うと良いでしょう。
その際は、赤字の部分はそのまま、黒字の部分は適宜、自由に変更して使ってください。(黒字部分の項目は、HTMLのFORMの記述に即した範囲でならば、自由に追加可能です。)



<form action="/cgi-bin/mail.cgi" method="post">
<input type="hidden" name="ready_page" value="送信完了メッセージページURL">
<input type="hidden" name="mail_to" value="お客様の送信先メールアドレス">
<input type="hidden" name="mail_sub" value="メールタイトル">
メールアドレス<input type="text" name="from" size="40">
<br>
面白かったですか? <input type=radio name="選択問題" value="はい" checked>はい <input type=radio name="選択問題" value="いいえ">いいえ <input type=radio name="選択問題" value="ちっとも">ちっとも <br>
あなたのお名前 : <input type="text" name="お名前" size="40"> <br>
意見 : <td height="156"><textarea rows="7" name="テキストエリア" cols="62"></textarea> <input type="submit" value="送信する"> <input type="reset" value="リセット"> </form>
<ご注意>

  • 「送信完了メッセージページのURL」は、任意のページのhttp-URLをフルパスで記述します。
    (例: "http://www.pegasus.ne.jp/~hogehoge/ok_page.html")
    ここのURLの記述が無い(NULL)、もしくはこの行そのものを無効にした場合、デフォルトで用意された簡易メッセージページが表示されます。
  • 「お客様の送信先メールアドレス」は、メールをお受け取りになるお客様本人のアドレスを記述します。その際、「mailto:」などは付けないでください。 (例: hogehoge@pegasus.ne.jp)
  • 「メールタイトル」の部分は、全角文字にて漢字の使用も可能です。この場合、自動的にMIMEエンコードされて送信されます。
  • 上記の例(5行目)のように、メール送信者がアドレスを書き込むための<input>タグを用意した場合、 name部分を「name="from" 」と指定しますと、 送信されたメールヘッダの From:行に、送信者のアドレスが反映されます。
    それ以外を指定した場合は「From: anonymous@pegasus.ne.jp」が代入されますので、ご注意ください。
  • その他、項目などに関しては、HTMLのFORMの記法に即し、適宜、記述してください。



SSIについて

SSIの設置方法

SSIは、「.shtml」の拡張子を持つHTMLファイルとして、~/public_html配下の任意のディレクトリに置くことが出来ます。
ただし、~/public_html/cgi-binディレクトリ内に関しては、無効となります。
HTMLファイル中にSSIの記述がなされていても、拡張子が「.html」や「.htm」のままだとSSIは機能しませんので、必ず「.shtml」として登録してください。

SSIの記述文に関しては一般的なSSIの記法に準じます。
例えば以下のような機能を挿入した場合、


<!--#include file="signature.html" -->

行頭の「<!--」と、それに続く「#」およびSSIコマンドとの間には空白を空けないよう注意してください。
また、行末の「-->」は、SSIコマンドおよび引数の一部として解釈されないよう、前に一文字空白を入れます。
その他、留意事項に関しては、SSIに関する各種の参考書などを参考にしてください。

使用可能なコマンド

SSIで使用可能な主なコマンドには、次のようなものがあります。

config 時刻やファイルサイズ情報などの表示形式や、エラーメッセージの制御や設定を行ないます。
echo SSI変数の値を表示出来ます。
fsize 指定したファイルのサイズを表示します。
flastmod ファイル更新日時を表示します。
include 現在パースされているファイルに別のドキュメントを挿入します。

※ 上記以外に、一般的なSSIコマンド全般を使用出来ます。コマンド類や使い方の詳細については、SSIに関する各種参考書類などを参照してください。
※ 標準設定では、execコマンドのみ使用制限されています。ご了承ください。

※ execコマンドの使用制限および制限解除について
SSIのexecコマンドの使用に関しては、セキュリティの関係上、基本設定では使用制限を設けさせていただいておりますが、 弊社および弊社のお客様に対して不利益やプライバシー侵害などといった 弊害を与える可能性のある使い方をしない範囲での利用という条件において、 お客様個別単位にて使用制限を解除させていただいております。
必要な場合は利用目的を明記のうえ、お気軽にご要望ください。


.htaccessについて

.htaccessの設置方法

.htaccessファイルを使うことにより、ディレクトリごとのアクセスコントロールが可能です。
アクセスコントロールしたいディレクトリ内に、「.htaccess」(頭に「.」(ピリオド)が付きます)という名前のファイルを置き、その中に必要に応じた設定内容を書き込むと、そのディレクトリ配下のファイルへのアクセスを制御出来ます。

( 注意 : 「.htaccess」や「.htpasswd」などのように、頭に「.」(ピリオド)の付くファイルは、通常、hiddenファイル(隠しファイル)となり、ls などのコマンドでは一覧で見ることは出来ません。 その場合、ls -a といったオプションをつけることにより、一覧で表示可能となります。 )

使用可能なコマンド

.htaccessファイル中の表記・コマンド類に関しては、一般的な.htaccessの記法に準じます。
以下に標準的な一例を示します。



AuthUserFile /home/hogehoge/public_html/.htpasswd 注1
AuthGroupFile /dev/null 注2
AuthName テストページだにょん♪ 注3
AuthType Basic

<Files *>
注4
   require valid-user 注5
</Files>

<Files .htaccess>
注6
   order allow,deny
   deny from all
</Files>

注1 AuthUserFileは、ユーザー用パスワードファイルの名前をフルパス(※)で指定します。
ファイルの中身は、ユーザー名と暗号化されたパスワードのセットとなっており、 通常、シェル上よりhtpasswdコマンドによって内容を登録します。
(※  .htpasswdファイルをフルパスで指定する場合、本WWWサーバのディレクトリ構成に準じている必要があります。
例えば、独自ドメインを御利用の場合は、/www/domains/ドメイン名/public_html/任意のディレクトリ名/.htpasswd
御利用でない場合は、/www/users/アカウント名/public_html/任意のディレクトリ名/.htpasswd
…という具合に表記します。 )
注2 AuthGroupFileでは、グループに対してアクセス許可を行なうための参照用ファイルをフルパスで指定します。
通常、必要無い場合は「/dev/null」と記述してください。
注3 AuthNameは、アクセスして来た人の認証用ダイアログボックスに表示するための案内文字列を指定するものです。
注4 <limit>〜</limit>で区切ったコンテナの中には、制限するメソッドの種類およびアクセスを許可するユーザーやグループを指定します。
ここでは全ファイル(「Files *」による全指定)に対して、requireコマンドでvalid-userを指定しています。(注5参照)
注5 requireコマンドは、アクセスを許可するユーザーやグループの登録を指定します。
valid-userを指定すると、パスワードファイル(注1参照)で登録した全ユーザーに許可されたことになります。
注6 <Files .htaccess> 〜 </Files>により囲まれた内側の2行では、 .htaccessファイルそのものに対するアクセス制限を行なっています。
ここの例では外部からの全てのものに対しアクセスを拒否する設定を行なっています。 これを行なわなかった場合、.htaccessファイルを直接指定することにより、 外部のブラウザにて、誰でも.htaccessファイルの中身を読むことが出来てしまうので、 セキュリティのためにもこの記述があった方が良いでしょう。

パスワードの管理

.htaccessによるアクセスコントロール用のパスワードの管理は、.htaccessファイル内の「AuthUserFile」で指定された専用のパスワードファイルによって行なわれます。
(上記「使用可能なコマンド」の注1 参照。この例では、「.htpasswd」ファイルとなっています。)

通常、パスワードファイルの管理は、リモートログインしたサーバ上において、 htpasswdコマンドによりシェル上で行ないます。
このコマンドの書式は以下のとおりです。


htpasswd [-c] パスワードファイル名 登録ユーザー名
    -c … 新規にパスワードファイルを作成するオプション

例えば、「.htpasswd」というパスワードファイルを新規に作り、そこに「hogehoge」というユーザーを追加したい場合は、telnetなどでWWWサーバーにログインしたあと、 管理したいディレクトリ(今回の例では、public_htmlディレクトリ)へcdコマンドなどで移動し、 シェル上で htpasswdコマンドを実行します。



  $ cd public_html
  $ htpasswd -c .htpasswd hogehoge
  

…すると、パスワードを聞いてきますので、hogehogeさんに対するパスワードを入力します。 (パスワードは確認のため2回聞いてきます。なお、セキュリティのため、パスワードは打ち込んでもエコーバックされません(打ち込んだ内容は画面には表示されません)。)

また、上記で作成した物と同じパスワードファイルに、新たに「foo@pegasus.ne.jp」というユーザーを追加したい場合は、 目的のパスワードファイルが存在するディレクトリに移動したあと、 今度は -cオプション無しで htpasswdコマンドを実行します。
( 注意:  すでに .htpasswdファイルの中身が存在している状態で、-cオプションを付けて実行してしまうと、 追加ではなく、既存の内容がすべて消去されたうえに上書きされてしまいますので、 ご注意ください。 )



  $ cd public_html
  $ htpasswd .htpasswd foo@pegasus.ne.jp
  

今度もパスワードを2回聞いてきますので、同じものを2回入力します。
これで、foo@pegasus.ne.jpさんがパスワードファイルに追加されました。

なお、htpasswdコマンドによって作られたパスワードファイルの中身は、 1行ごとにユーザー名と暗号化されたパスワードのペアという形で登録されています。 そのため、エディタなどによる直接編集は困難ですので、エントリーの追加には、必ずこのhtpasswdコマンドを用いて管理してください。
(ただし、エントリーを削除したい場合は、直接編集により、目的の行(削除したいユーザーの行)を削除できます。)

戻る


" Pegasus Network Limited. 1999 "
有限会社ペガサスネットワーク