[CGI・SSI] - CGI
CGIは、アクセスカウンターや掲示板を設置する場合によく利用されます。 HTMLに比べ若干設置方法は難しくなりますので、以下の情報をよくお読み頂いた上で設置を行って下さい。
対応言語
CGIの作成にご利用頂ける言語として弊社がサポートする言語はPerl・C・PHP3/PHP4・シェルスクリプトの4種類です。 その他の言語についてはLinux上で動作するバイナリファイルを作成出来る言語であれば基本的には使用可能と思われますが、動作保証は致しかねます。
C言語を使用したCGIの場合は、あらかじめLinux用にコンパイルしたバイナリファイルをアップロードして下さい。
各種プログラムのパス
サーバー上にインストールされている主なプログラムのパスです。CGIからこれらのプログラムを呼び出してご利用頂く事が出来ます。
perl | /usr/bin/perl または /usr/local/bin/perl |
PHP3 | /usr/bin/php3 または /usr/local/bin/php3 |
PHP4 | /usr/bin/php4 または /usr/local/bin/php4 |
sh | /bin/sh |
sendmail | /usr/lib/sendmail |
uuencode | /usr/bin/uuencode |
uudecode | /usr/bin/uudecode |
nkf | /usr/local/bin/nkf |
htpasswd | /usr/local/apache/bin/htpasswd |
Perlで記述したCGIスクリプトの1行目には、 #!/usr/bin/perlまたは#!/usr/local/bin/perlと記述して下さい。
Perlで使用出来るモジュールの一覧はオンラインマニュアル - [CGI・SSI] CGI - Perlモジュール一覧のページに掲載しております。
PHP3で記述したCGIスクリプトの1行目には、 #!/usr/bin/php3または#!/usr/local/bin/php3と記述して下さい。
PHP4で記述したCGIスクリプトの1行目には、 #!/usr/bin/php4または#!/usr/local/bin/php4と記述して下さい。
CGIファイルの転送
CGIをサーバーに転送する時は、必ず管理者用アカウント(admin)を使用してFTP接続し、転送を行って下さい。 また、CGIの実行ファイルは/cgi-binディレクトリ内に転送しないと動作しない様になっています。 /homeディレクトリなど、他のディレクトリ内にCGIの実行ファイルを置いて動作させる事は出来ませんので、 実行ファイルは必ず/cgi-binディレクトリの中に置いて下さい。
ほとんどのFTPソフトには、バイナリモードとアスキーモード(テキストモード)という2種類の転送モードがあります。 Perlやシェルスクリプトで記述されたテキストファイルのCGIを転送する場合は必ずアスキーモードで転送して下さい。 バイナリモードで転送すると正常に動作しない場合があります。
逆に、C言語を使用して作成したバイナリファイルのCGIを転送する場合はバイナリモードで転送を行って下さい。
なお、初期状態ではHTMLファイルや画像ファイルなどを/cgi-binディレクトリ内に設置しても そのファイルをブラウザから直接参照する事は出来ません。 /cgi-binディレクトリ内にHTMLファイルや画像ファイルを設置したい場合は、オンラインマニュアル - [ホームページ] .htaccess のページに記載されている 「/cgi-binディレクトリへのHTML・画像ファイル等の設置」に記載されている内容に従って.htaccessファイルを設置すると HTMLファイルや画像ファイルを置く事も出来る様になります。
ディスク容量不足時のデータ消失
使用しているディスク容量がご契約容量を越えてしまい、容量が不足している時にCGIがデータファイルに書き込みを行うと データファイルが破損して内容が消失してしまう場合がございます。 このため、アクセスカウンターや掲示板の様なデータファイルにデータを書き込むタイプのCGIのご利用になる場合は、 必ず十分な空き容量を確保する様にして下さい。
パーミッションの設定
サーバーにファイルを転送したら、パーミッションの設定を行って下さい。 パーミッションの設定が正しく行われていないと、CGIが正常に動作しなくなったり 第三者からの不正なアクセスを受けてしまったりする可能性がございます。
パーミッションの設定はパーミッション変更機能のあるFTPソフトを使用して行って下さい。 WebARENA SuiteではTelnetがご利用頂けませんので、サーバーにTelnetで接続してパーミッションの変更を行う事は出来ません。
通常、設定するパーミッションの値はCGIファイルのドキュメントなどに記載されておりますが、 WebARENA Suiteのサーバーでは所有者(owner)に読み取り権(r)と実行権(x)が設定されている必要がございます。 特に差し支えがなければCGIが置かれているフォルダのパーミッションは705(rwx---r-x)、 実行させるCGIファイルのパーミッションは700(rwx------)、 書き込みを行うデータファイルのパーミッションは600(rw-------)に設定して頂く事をお勧め致します。
=ご注意=
WebARENA SuiteのサーバーではSuEXECというラッパープログラムが動作しており、CGIを置くディレクトリやCGIの実行ファイルの グループ(group)や第三者(other)に対して書き込み権(w)が設定されているとエラーになってしまいます。 CGIのマニュアルに777(rwxrwxrwx)や666(rw-rw-rw-)を設定する様に 説明があった場合でも、その様な値を設定すると正常に動作しませんのでご注意下さい。
PHPの使用
PHPが使用できるサーバーの多くはHTMLファイルの中に <? ?> などのタグを書き、 その中にPHPスクリプトを記述しておくだけで動作する様になっていますが、 WebARENA Suiteの場合、セキュリティ上の理由からこのような方法で動作させることは出来ません。
WebARENA Suiteのサーバーでは、HTMLタグやPHPスクリプトを記述したファイルを /cgi-bin ディレクトリに設置し、 CGIとして動作させることによりPHPをご利用頂くことが出来ます。
さらにDBオプションサービスと連携して動作させるためのPostgreSQL対応モジュールがインストールされています。 (DBオプションサービスにご契約頂かなくても、PHP自体は使用できます。)
PHPを使用する具体的な手順は、以下の様になります。
- HTMLタグやPHPスクリプトを記述したファイルをテキストエディタ等で作成します。
ここでは例として以下の内容を記述し、「phptest.cgi」というファイル名で保存します。
(#!/usr/local/bin/php4 が1行目となるように記述して下さい。先頭部分に余分な空行が入っていると正しく動作しません。)#!/usr/local/bin/php4<HTML> <HEAD> <TITLE>PHP Test</TITLE> </HEAD> <BODY> <? phpinfo() ?> </BODY></HTML>
- phptest.cgiをFTPソフトでサーバーの /cgi-bin ディレクトリに転送し、 パーミッションを700(rwx------)に設定します。
- ブラウザで http://(ドメイン名またはIPアドレス)/cgi-bin/phptest.cgi にアクセスします。 正しくPHPが動作すれば、PHPのバージョン情報などが表示されます。
記述するPHPスクリプトの内容を変えれば、同じ要領でお客様が作成したPHPスクリプトを動作させることが出来ます。
なお、ご契約頂いたお客様は上記の「phpinfo()」関数を実行するPHPスクリプトを設置して頂くことにより PHPのバージョン情報や設定状態をご覧頂くことが出来ます。
sendmailの使用
CGIでメールを送信する処理を行う場合は、サーバーに用意されているsendmailをご利用頂く事が出来ます。 sendmailが置かれているサーバー上のパスは、 /usr/lib/sendmail です。 CGIスクリプト内で記述するコマンドの書式は、以下の様になります。
/usr/lib/sendmail -t -f(発信元アドレス)
(発信元アドレス)にはメールの発信元として使用するメールアドレスを入力して下さい。 通常はお客様ご自身のメールアドレスを設定します。
例えば、お客様のメールアドレスがsuitetaro@arena.ne.jpの場合は
/usr/lib/sendmail -t -fsuitetaro@arena.ne.jp
と記述して下さい。
上記のアドレスは例として挙げたものです。 設定したアドレスには配送エラーの通知などが届きますので、 このアドレスはそのまま記述せず、必ずお客様ご自身のメールアドレスを記述してご利用下さい。
なお、WebARENA Suiteではメールサーバープログラムにqmailを使用しておりますので、 実際にはsendmailはインストールされておらず、sendmailはqmailへのリンクとなっております。 基本的にはsendmailと同様な方法でご利用頂く事が可能ですが、 sendmailのオプションは上記の様に「-t」と「-f(発信元アドレス)」のみをご使用下さい。
DBMの使用
WebARENA SuiteのサーバーではGDBM_File・DB_File・ SDBM_File・NDBM_Fileの4つのDBMライブラリがご利用頂けます。 Perlを使用したCGIでDBMをご使用になる場合は、これらのうちいずれかをご利用下さい。
cronによる自動実行・常駐について
UNIX系のOSには指定した時間にプログラムを自動実行させるcronがございますが、WebARENA Suiteのサーバーではcronはご利用頂けません。 また、1回の動作中にCPUを10秒以上使用するCGIは強制的に動作が終了される仕様になっています。 サーバーにプロセスを常駐させる事は出来ませんので、継続的に動作し続けるプログラム(デーモンなど)をご利用頂く事は出来ません。
CGIへの集中的な接続によるサーバの高負荷対策
WebARENA Suiteでは、CGIへの集中的な接続によるサーバの高負荷対策のため同時起動数制限を設定させていただいております。制限値を超えたCGIの同時起動はできないようになっております。 なお、具体的な制限値につきましては非公開とさせて頂いております。