- CGI・SSIは利用できますか?
ディスクスペースレンタルサービス、およびバーチャルドメインホスティングサービスをご契約いただいたお客様は、自作のCGI・SSIをお使いいただけます。ただし、CGI・SSIのご利用に際しまして禁止事項を設けておりますので、必ずこちらをご参照下さい。
CGI・SSIは、「public_html」以下であれば、どこに設置しても動作いたします。SSIをご使用になる場合、拡張子を「.shtml」とすればそのまま動作いたします。その他の拡張子を持つファイルでもSSIを実行したい場合は、「.htaccess」を使用し、お客様ご自身で設定してください。
弊社WEBサーバはsuEXEC機能を有効にしていますので、CGI,SSIはお客様権限で動作いたします。このためファイルのパーミッション指定を誤ると正常に動作しなくなる恐れがございます。またSSIで exec は使用できますが、上位ディレクトリの参照やコマンドに引数を渡すことは、セキュリティの関係上できませんのでどうぞご注意ください。
CGI・SSIは、お客様の責任の元でお使いいただきます。あくまで他のお客様との共用資源だという事をご理解の上お使いください。特に、サーバー資源を必要以上に使用するCGIプログラム(多人数参加のチャット等)のご使用や、ファイルのダウンロードサービス等は、ご利用規約の第17条第1項に該当する恐れがございます。また、SSIの使用によるセキュリティホールの発生などの危険性も念頭に置いてご利用ください。
弊社サーバ上では、gccなどのCコンパイラは開放しておりませんので、予めご了承下さい。
- 利用を禁止しているCGI・SSIはありますか?
チャットや掲示板などのCGIスクリプトはご自由に設置していただいて構いませんが、チャットの設置数は1つに制限(2000/7/1以前にwww1〜www5サーバをご利用の場合は3つまで設置可能)しております。掲示板系スクリプトをチャットのように使用されている場合もチャットの数に含みます。Zoo Chatのように1つ設置するだけで複数のチャットが実行できる(いわゆる「部屋」を複数作成できる)ようなスクリプトは、CGIスクリプトの設置数ではなく、実際に稼動している「部屋」の数を個別にカウントいたします。なお、「サーバに多大な負荷をかけ、他のお客様にご迷惑をかけるようなCGIは、チャットや掲示板であるなしに関わらず、全面的に禁止」いたしております。
具体的には、大人数参加型チャットや不特定多数参加型チャット、個室チャット、2ショットチャット、リロード時間の極端に短い(30秒以内)チャット、チャットサイト・大規模掲示板サイトの運営、第三者に対するレンタル掲示板やレンタルチャット、アクセスカウンタサービスなどのCGI提供(有償・無償は問わず)、多数の掲示板の設置(特にアクセスするだけでスクリプトが実行されてしまうタイプ、設置数の目安は5個程度)、CGIによるメーリングリスト・メールマガジン発行・私書箱サービスの提供などです。新たに箱庭諸島に代表される高負荷ネットワークゲームも禁止事項として追加しております。
また、ランキング系サイトに代表されるような、外部ホームページへCGIリソースを貼り付けて、アクセスなどを集計したり、バナー広告やWebRingを提供したりするサービスもお断りしております。
弊社では、より高品質なサービスのご提供を維持するため、お客様コンテンツのチェックを不定期に行っております。その結果、サーバに多大な負荷をかけ、他のお客様にご迷惑をかけるようなコンテンツを発見した場合には、該当のお客様に対し、改善指導をおこなったり、コンテンツそのものを停止させていただいております。
上記のようなサーバに負荷をかけていると思われるコンテンツを発見された方、またはお客様自身のコンテンツについてご質問のある方は、お問い合わせ窓口までご連絡下さい。
- CGI・SSIのサポートはどこまで?
設置代行やスクリプト作成などは一切行っておりませんが、お客様からのご質問に対して簡単なアドバイスまでは行っております。設置されたCGI・SSIが動作しないなどのご質問の際には、必ず「CGIスクリプトの入手先・バージョン・設置ディレクトリ名」と「動作状況・エラーメッセージ」など、具体的にお教えください。実際にお客様ディレクトリに設置されたCGIを拝見させていただき、またオリジナルのスクリプトと照らし合わせながら回答いたしますので、これらの情報をいただけない場合には、満足な回答を差し上げられません。
なお、一般的な情報やフリーのCGI・SSIスクリプトは、インターネット上でたくさん手に入れる事が出来ます。にほんごCGIインデックスでは、日本で公開されているCGIスクリプトを簡単に探すことができます。(rubyの項目も追加されたようです)
まつもとゆきひろさんが作成された、話題のオブジェクト指向スクリプト言語 Ruby につきましては、下記ページを参照ください。
- .htaccessは設置できますか?
設置できます。ただし「Options」で始まる項目のみ、弊社側の設定を上書きできないようにしております。「Options」の記述がありますと「500 Internal Server Error」が発生しますのでご注意ください。
※「Options」を設定しなくても、CGI,SSIは利用可能です。また「index.html」などのインデックスファイルがディレクトリ内に存在しない場合には、「403 Forbidden」を返すように設定しております。
この他の項目(アクセス制限、ファイルタイプの設定、エラードキュメントの指定など)につきましては、お客様側で自由に設定可能です。
- インターナルサーバエラー(500 Internal Server Error)が出ます
上記エラーとなる原因は、お客様が作成・修正されたCGIスクリプトもしくは「.htaccess」の文法ミスか、ファイル・ディレクトリのパーミッション指定ミスがほとんどでございます。また、FTPでCGIスクリプトを転送する際に、「テキストモード(ASCII)」ではなく誤って「バイナリモード(BINARY)」で転送された場合も、上記エラーとなってしまいます。
なおWEBサーバApacheのsuEXEC機能により、ディレクトリの所有者以外に書込み設定がされている場合(パーミッション777や707・703など)も、セキュリティの理由により上記エラーが発生いたします。CGIスクリプトの説明書に「777にしてください」と書いてあっても「701」に設定していただきますようお願い申し上げます。
- CGI・SSIからREMOTE_HOSTが取得できません。
環境変数「REMOTE_HOST」を取得するためには、IPアドレスからのホスト名への逆引き機能が必要となります。この機能をApache(WWWサーバ)に追加するということは、WWWサーバへのアクセスごとにnamed(DNSサーバ)が呼び出されることとなり、サーバに対し非常に大きな負荷がかかってしまいます。このため弊社ではこの機能はoffに設定しておりますので、「REMOTE_HOST」をそのまま取得することはできません。(Apacheの新しいバージョンでは、デフォルトでoffとなっております。)
他社のWWWサーバも弊社と同様の理由から、「REMOTE_HOST」の値はそのままCGIやSSIでは取得できないのが普通だと思われます。しかしながら、例えばPerlの場合でしたら、gethostbyaddr()関数を用いてスクリプト内でIPアドレスからの逆引きを行い、「REMOTE_HOST」の値を取得することができます。そうすることで、必要な時だけIPアドレスからホスト名への逆引きが行われますので、サーバへかかる負荷も最小限に押さえられます。
(例) $host = gethostbyaddr(pack("C4",split(/\./,$ENV{'REMOTE_ADDR'})),2);
上記の場合でしたら、$hostの値が「REMOTE_HOST」となります。
- FTPでファイル転送したのに、ブラウザで表示されません。
弊社サーバではセキュリティを考慮し、お客様のホームディレクトリより上位のディレクトリには移動できないように、ルートディレクトリ「/」がお客様のホームディレクトリとなるよう表示上変更しております。FTPで接続した場合の「/」は、実際には「/home/ユーザ名」のことです。普段お使いのFTPソフトの設定の際は、ホスト側の転送先フォルダ名の入力欄に「public_html」とだけ入力していただければ、ほとんどのFTPソフトで問題無く転送できます。
なお、PerlやRubyなどのCGIスクリプトの中でディレクトリを指定される場合は、見かけ上のパスではなく、正式なパス(もしくは相対パス)をご指定いただかないと、CGIが正しく動作しない原因となりますのでご注意下さい。
ディレクトリ情報(正式なパス)
|
ホームディレクトリ
wwwディレクトリ
アクセスカウンタ
|
/home/ユーザ名/
/home/ユーザ名/public_html/
/home/ユーザ名/public_html/cgi-bin/npc.cgi
|
ディレクトリ情報(FTP接続した場合の、見かけ上のパス)
|
ホームディレクトリ
wwwディレクトリ
アクセスカウンタ
|
/
/public_html/
/public_html/cgi-bin/npc.cgi
|
- Telnet・sshでサーバに接続したい。
ディスクスペースレンタルサービス、およびバーチャルドメインホスティングサービスを正式にご契約いただいたお客様に限り、サービスご利用開始後のTelnetもしくはssh利用お申込みにより、無料で開放※しております。
セキュリティの観点から、お客様ご利用のプロバイダからのみアクセス可能、という形を取らせていただいております。ご希望のお客様は、1.利用したいサービス(Telnetもしくはsshのどちらか1つ)と、2.ご利用のプロバイダ名(プロバイダのURL)を明記の上、メールにてお申込みください。
sshのバージョンは1.2.31です。sshを利用することで、お客様端末と弊社サーバ間の通信経路が暗号化されますので、弊社ではTelnetよりもsshを利用される事を強くお勧めいたします。sshご利用に関しましては、下記のホームページが参考になるかと思います。
現在Telnetをご利用のお客様で、sshに変更したい場合は、お手数ですがその旨メールにてご連絡ください。Telnetとsshの同時提供は行いませんので、どうかご了承ください。
※Telnet・sshを開放している理由は「CGIスクリプトの設置作業」のみです。その他の利用目的での開放は行っておりません。なお、CGIスクリプトのデバッグやベータテスト等は、スクリプト暴走などによりサーバダウンを招く恐れがあるため、禁止させていただいております。必ずローカル環境で十分にテストされた上で、弊社サーバへ設置してください。
もし上記用途以外に利用されている方がいらっしゃった場合、すべてのお客様のTelnet・sshの利用を一切禁止いたしますので、予めご了承ください。
- ホームディレクトリに最初からあるファイルは何?
ホームディレクトリ以下にある初期設置ファイルおよびディレクトリは、システム上必要なものですので、勝手に削除しないでください。ただし、アクセスカウンタ npc.cgiファイル及びcgi-binディレクトリに限り、お客様の判断で削除していただいて構いません。万が一、初期設置ファイルもしくはディレクトリの再設定が必要になった場合、理由の如何に関わらず規定の再設定料金をいただきます。
- 利用できる主なプログラムのパスを教えてください。
利用できる主なプログラムのパス情報
|
/usr/local/bin/perl (perl5.6.0、www5〜www8:jperl5.005_03、www3,www4:perl5.005_02)
/usr/local/bin/ruby (v1.6.3)
/usr/lib/sendmail (qmailのwrapper)
/usr/bin/sed
/usr/bin/nkf
/usr/bin/uuencode
/bin/sh
/bin/cat
/usr/local/bin/fly (画像合成ソフト → 参照:ネットサーフレスキューWeb裏技)
/usr/local/bin/ssh (1.2.31, protocol version 1.5)
|
- パーミッションの設定は?
ファイルの種類とパーミッションの関係
|
HTMLや画像等のファイル
ディレクトリ
CGIスクリプト
CGIのログファイル等
|
604 rw- --- r--
701 rwx --- --x ( 705 rwx --- r-x などでも動作します )
700 rwx --- --- ( 705 rwx --- r-x などでも動作します )
600 rw- --- --- ( 604 rw- --- r-- などでも動作します )
|
数字3桁で表すパーミッションは、左から「ファイルの所有者」「グループ」「その他の人」に対する権限となっております。第三者からプライバシーを守るために、真中の「グループ」に対する権限は必ず「0」にすることを強くお勧めいたします。
「ディレクトリのパーミッションが777(もしくは707)」の場合、つまりディレクトリ所有者以外も書き込み可能(危険な状態)となっている場合は、そのディレクトリにアクセスするCGIは「suEXEC機能」によりエラーとなり動作いたしません。CGIスクリプトの説明書に「ディレクトリのパーミッションを777にしてください」と書いてありましても「701」で正常に動作いたします。
- アクセスカウンタの初期値のセット方法
アクセスカウンタの設定については、こちらをご覧下さい。ここでは、初期値のセット方法のみお教えいたします。
一番最初の設置時であれば、例えば初期値を12345とする場合、P=ONの後ろに&INIT=12345を追加して、カウンタを設置したページに、一度アクセスしてください。カウンタの初期値が12346になっているのを確認できましたら、&INITオプションは外して構いません。(※カウンタ設置後に&INITオプションを追加しても効果はありません)
既に設置してしまっているカウンタの初期値を変更したい場合は、まずは現在のカウンタを外してから、ユーザ名と初期化したいページ名をすべて明記の上、メールでご連絡ください。弊社からの連絡後、新たにカウンタを設置し、その際に&INITオプションを追加していれば、好きな値からカウントが始まります。