■CGI/SSL他

Q.SSLって何ですか?
Q.cgi設置ディレクトリはどこですか?
Q.sendmailを使ったプログラムを自作したのですが、メールが送れません。
Q.namazuって何ですか?
Q.cgiはいちおう動くのですが、画像が×印になって表示できません。
Q.cgiって何ですか?
Q.telnetは使えますか?
Q.SSHがすぐに切断されてしまうのですが。
Q.CGI・SSIは使用できますか?
Q.CGIが動きません。
Q.○○というCGIを設置しても大丈夫でしょうか?
Q.超高負荷とはどの程度の負荷のことですか?
Q.チャットなどの高負荷CGIを設置してもいいのですか?
Q.高負荷CGIのパーミッションが自動的に変更された時はどういう表示になるのですか?
Q.メーリングリストやメルマガを発行するCGIは規約違反になるのでしょうか?
Q.aspやjspは使用できますか?
Q.CGIがたびたびエラーになるのですが。
Q.CGIがときどき実行できなくなるのですが。
Q.フルパスを教えてください。
Q.CGIや画像をを外部から呼び出してもいいのでしょうか?
Q.パーミッションはどう設定すればいいのでしょうか?
Q.SSLで「セキュリティ証明の日付は無効です」と出ます。
Q.SSLでhttps://〜のサイトには、広告が表示されないようですが。
Q.SSIを使用する時の注意点について教えてください。
Q.MySQLとPgSQLのバックアップ&リストアについて
Q.xディレクトリに設置したCGIへ広告を挿入する方法は?
Q.sendmailの有効なオプションについて教えてください。
Q.CGIのHTML表示部を書き換える時の注意点は?
Q.外部からカウンタやアクセス解析を呼び出してもいいのでしょうか?
Q.拡張子が「.pl」のCGIが動かないのですが?
Q.クッキーが機能しないCGIがあるのですが。
Q.Script Errorが出てCGIが実行できないことがあるのですが。




















 SSLって何ですか?
クレジットカード番号などを送信する時など安全性を求められる時に使われています。
s1サーバーは正式な証明書を入れていますのでセキュリティの警告は表示されませんが、それ以外のサーバーは警告が表示されます。(暗号化自体はされます。)

secure_htmlにpublic_htmlと同様にファイルを入れ、
https://s1.xrea.com/~sample/phptest1.cgi
などとアクセスするだけです。通信が暗号化されてやり取りされます。
通信速度はおよそ20倍ぐらい遅くなりますし、対応していないブラウザー(今は殆ど対応していますが)ではページ自体が見られない事もありますので、一般的な用途には使わない事をお勧めします。

説明は長くなりますので、検索エンジンなどで「SSL」解説のページは沢山見つかると思います。一度調べてみてください。

 CGI設置ディレクトリはどこですか?
public_htmlの下であれば何処でも実行できます。


 sendmailを使ってメールを送るプログラムを作成したのですが、メールが送れません。
サーバー情報にありますようにsendmailはqmailで代替処理しているため、若干の違いがあります。
詳しくは、ウェブ上にたくさん参考になる文書がありますので探して頂いたほうが速いですが、簡単に修正しますと、

open (MAIL,"|$SENDMAIL -t");
print MAIL $header;
print MAIL $body;
close (MAIL);

と言った形になります。実際にスクリプトを動かしていませんので分かりませんが、sendmail通りでは動かない部分があります。


 namazuって何ですか?
トップページからリンクしてありますが、
http://www.namazu.org/
が開発・配布元です。
主に既にNAMAZUを使用なされた事のある方が対象となります。
必要なファイルはNAMAZUディレクトリに置いております。また、インデックス化コマンドもSSHから使えます。

NAMAZUのインデックス化は時間・使い方を間違うとサーバーが停止します。
初心者の方には少々きつい言い方ではありますが、ご理解した上で作業して下さい。

 cgiはいちおう動くのですが、画像が×印になって表示できません。
拡張子を「.xcg」に変えてください。ソース中に「.cgi」の部分があれば、「.xcg」に変えてください。あるいは、public_htmlの下に「x」という名前のディレクトリを作って、そこにcgiを設置してもいいです。ただし、スクリプトを自分で改造して広告を表示する必要があります。

 cgiって何ですか?
以下のところで学んでください。

CGI-StaTion [初心者のためのCGI設置講座]
http://www7.big.or.jp/~jawa/tips/
「オンラインソフトの決定版」にある
http://niko.pobox.ne.jp/index.html
苦労知らずのCGI設置講座
http://niko.pobox.ne.jp/0/l3.html#08

 telnetは使えますか?
telnetは使えませんが、SSHが使えます。SSHを使わなくてもデータベース自体はスクリプトで操作できます。

 SSHがすぐに切断されてしまうのですが。
SSHはコネクション毎に暗号化して通信しますので、大勢の方が同時に通信すると非常に負荷がかかります。

ウェブの快適さを優先するため、SSHで一定負荷を超えると自動的に切断されます。負荷の掛かっていない時間につなげてみて下さい。

 CGI・SSIは使用できますか?
CGI・SSIは使用できます。
SSIを埋め込むファイルの拡張子は「.shtm」「.shtml」になります。

使用可能な言語は、Perl(Version5.6)、Ruby、Python、C/C++、PHP3/4(日本語化パッチ済み)。(C、C++はあらかじめコンパイルしてアップロードしてください。PHPはセキュリティ上CGIとして利用可能です)

■実行パス

perl : /usr/bin/perl、/usr/local/bin/perl
php3 : /usr/local/bin/php3
php4 : /usr/local/bin/php 、/usr/local/bin/php4
ruby : /usr/local/bin/ruby
python : /usr/local/bin/python
sendmail : /usr/sbin/sendmail
nkf : /usr/local/bin/nkf
sh : /bin/sh
csh : /bin/csh
uuencode : /usr/bin/uuencode
uudecode : /usr/bin/uudecode

※追加事項
PHP3:日本語対応
PHP4:日本語パッチ済み
Perl:Jcode.pm、NKFモジュール (Jcode.plよりこちら2つをおすすめします)
PHPの場合も、拡張子はCGIと同じになります。また、先頭行に、/usr/local/bin/php3等を挿入する必要があります。


■実行パーミッション

・実行ファイル:0700(rwx------):*.cgi,*.xcg
・データファイル:
0600(rw-------)::*.pl,*.dat,*.log等
・CGI格納ディレクトリ:
0705(rwx---r-x)
・データ格納ディレクトリ:
0700(rwx------)
・実行拡張子:[.cgi][.xcg]

※追加事項
パスワード・データファイル・CGIは必ず正しいパーミッションで設置してください。他人に見られる場合があります。


 cgiが動きません。
それでは一番ハマりやすい罠から攻めていきましょう。

1.ファイルの先頭行は#!/usr/bin/perl又は#!/usr/local/bin/perlになっていますか?
 念のためご確認下さい。XREAの場合はどちらでも可能です。

2.cgiのパーミッションを確認しましょう。
 ■実行パーミッション
  ・実行ファイル:0700(rwx------):*.cgi,*.xcg
  ・データファイル:
0600(rw-------):*.pl,*.dat,*.log等
  ・CGI格納ディレクトリ:
0705(rwx---r-x)
  ・データ格納ディレクトリ:
0700(rw-------)
  に設定してください。

3.ファイル名をcgi→xcgに変更するか、xディレクトリを試してみましょう。
 ファイルの拡張子をxcgに変更するか、public_htmlの下に「x」という名前のディィレクトリを作成し、その中にcgiをアップしましょう。ファイル名を変更した場合はcigのスプリクトの中のファイル名を指定している部分も変更する必要があります。
ただし、スクリプトを自分で改造して広告を表示する必要があります。

4.cgiをバイナリ転送していませんか? 
 バイナリ転送すると行末の改行コードの違いで、スクリプトが解釈できなくてperlがうまく動かない場合がありますので、アスキーモードで転送してください。また、CGIが書き込むファイル(テキスト)もアスキー(テキスト)モードで転送する必要があります。


5.もう一度配布元が作成しているマニュアルを熟読しましょう 
 よくありがちなのが、マニュアルの内容を一部見落しているということがあります。頭を切り換えてマニュアル通りの設定になっているか、確かめてください。

6.最初からやり直してみるというのも非常に有効な解決策です。
 面倒と思うでしょうが、ここは一番、思い切って最初からやり直してみることで楽々動いたという事例もたくさんあります。自分では気がつかないうちに誤ってスクリプトを変更していたということも回避できます。

7.アカウント取得直後はCGIを正常に設置してもうまく動かないことがあります。
 この場合はに1〜2日待つだけで正常に動作しますので、
焦らずにお待ち下さい。
ここまでやればほとんどの場合CGIは動きます。サポート掲示板に書き込まれる障害の多数は上記のチェックポイントを見逃していることが多いです。
これでもダメなら配布元のサポート掲示板(あれば)か、XREAのcgiサポート掲示板で質問してみてください。

 ○○というCGIを設置しても大丈夫でしょうか?
他のユーザの迷惑になる行為は禁止させて頂きます。管理画面から見られる、転送量、リクエスト数、負荷ポイントで評価します。種類は問いません。

実際はどんなに巨大なCGIも動かなければタダのファイルですから、現実に動かしてみて転送率などを見てみないと大丈夫かどうかはわかりません。

参加する人が多いCGIは有料サーバーで稼働させたほうがいいと思います。

(2001.01.14追加)
○ゲームCGIのみ、ゲーム置き場としての利用 → 削除
○広告無し → 削除
○100を超える、又は、それ以前でも負荷を与えている場合 → 削除

となります。
ゲームCGIで低負荷を保つのほぼ不可能ですので、禁止とお考え下さい。
今までに100以上のアカウントが、同類ゲーム設置により削除となっています。
一般的なウェブ機能を提供する事が目的の共用サーバーでは、明らかに無理があります。
専用のサーバーで設置することをお勧めします。


 チャットなどの高負荷CGIを設置してもいいのですか?

他のユーザの迷惑になる行為は禁止させて頂きます。使用CGI、頻度によって大きく異なってきますので、管理画面から見られる、転送量、リクエスト数、負荷ポイントで評価します。種類は問いません。

  1. 画面に一つ以上広告の無いチャットは禁止です。
  2. 負荷が50ポイントを越えるサイトでのチャットは、広告が貼ってあっても禁止です。

 超高負荷とはどの程度の負荷のことですか?
負荷率の測定基準は、「そのCGIが実行時にサーバー全体のリソース(CPU)に対して何%を使用していたかという値の総計」です。
統計は0.5%以上の負荷のあるCGIを加算した数値です。(各サーバー管理画面の負荷率の項を参照)

ゲーム系CGIチャットCGIは該当しやすい傾向にあります。しかし、使い方にもよりますので一概には言えません。
警告メール、または、自動的にパーミッションが000に変更されている場合は、何らかの改善を行って下さい。もし、方法が分からなければ、サポートまでご連絡頂ければいつもでアドバイスします。
FFAなどのブラウザ型のゲームCGIを設置して、長期運用するのは困難です。 仲間を徐々に集めて遊ぶわけですから、その仲間が増えれば増えるほど、累乗的と言っていいほど、短期間で負荷が増加します。

アクセスの90%以上がゲームCGIの呼び出しになると、ゲームCGI置き場とみなして、凍結、削除の対象となります。
負荷率は管理画面から見られますが、100ポイント以下でも凍結/削除となる場合があります。 負荷について気を払っておられない運用は、即削除対象となります。

他のホスティングサービスで高負荷であるという理由で運用が禁止されているようなCGI(ウェブゲームなど)を多用している場合は削除となりますが、普通に運営して頂ければ、高負荷だからという事だけで削除する事はありません。高負荷でも優良・人気サイトは優遇します。
他の方のためにも違反サイトはなるべく早く凍結・削除します。


連続性のあるアクセスを発生するCGIゲーム類は禁止しております。XREAではPHPを使ったゲームも含めて”CGIゲーム”、”ゲームCGI”、”ブラウザーゲーム”等と称しています。

 高負荷CGIのパーミッションが自動的に変更された時はどういう表示になるのですか
自動的に変更されましたら、FTPで見るとパーミッションは[000]となります。
ウェブでアクセスするとForbiddenと表示されるようになります。
アカウント保持者はいつでも改善できますので、気付かれたら何らかの対応を行って頂ければ、また快適に使えるようになります。

 メーリングリストやメルマガを発行するCGIは規約違反になるのでしょうか?
メーリングリスト、メルマガとしての利用は、内容を問わず禁止しています。
メールを大量に送信するCGIは、その内容に関わらず禁止です。
専用のサービスを使用されるのが、簡単で安心でしょう。

 

 aspやjsp・JavaServletは使用できますか?
現在、Servlet・JSP・ASPシステムには対応していません。

 CGIがたびたびエラーになるのですが。
負荷の高い・呼び出し回数の多いCGIを置いていると、アクセスが増えるとシステム側でサーバのCGI全体の動作を制限する事があります。
チャットCGI・ゲーム系CGIが該当します。これは、負荷の高いアカウントのせいで他の方にまで影響出てしまう事を最小限に留める為です。
チャットなどは専用レンタルサービスを利用する方が得策です。

 CGIがときどき実行できなくなるのですが。

以前に比べてCGI自体のプロセスの時間制限を若干短くしています。
長く常駐してCGIを実行しようとするとKILLされます。

sendmailで複数のメールを送信しようとした時にも、CGIの実行が規制されます。。
s1は当初はかなり緩い設定でしたが、厳しくなっています。
新しく募集したサーバーは全て厳しい設定になっています。


 フルパスを教えてください。
フルパス(絶対パス)には大きく分けて2つの意味があります。
 1./ (スラッシュ)から始まる「フルパス」
 2.http://〜から始まる「フルパス」
よくCGIスクリプトのログの記述法で、「フルパスで記述してください」とあるのは、大抵上記の例では、1の/(スラッシュ) からはじまるパスをいいます。


XREAの/から始るフルパスは
 /virtual/ID/
となります。

例えばpublic_htmlの直下にあるindex.htmlのフルパスは
 
/virtual/userID/public_html/index.html
となります。

 CGIや画像を外部から呼び出してもいいのでしょうか?

他のユーザの迷惑になる場合は停止させて頂きます。
良くある質問集をご覧下さい。
なお、外部利用での広告移動は認めておりません。凍結・削除対象となります。

 パーミッションはどう設定すればいいのでしょうか?
なるべく「仕様」ページにある設定にして下さい。
http://www.xrea.com/?action=spec

種  別 パーミッションの値 拡張子
実行ファイル 0700(rwx------) 以上 cgi/xcg等
データファイル 0600(rw-------) 以上 dat/log/pl等
CGI格納ディレクトリ 0705(rwx---r-x) 以上  
データ格納ディレクトリ 0700(rwx------) 以上   

配布元では、多数のプロバイダーで動かせるように配慮してかなり甘い設定を紹介しています。
当サイトでは、CGIで700以外でないと動かないものはありませんので、CGIは700に設定して下さい。
また、データファイルは600にして下さい。
CGIの場合、705ですと同じサーバーのユーザーは簡単に閲覧できます。という事は、他のユーザがセキュリティの甘いCGIを置くと、全世界の人が中身を見られる結果になります。
ディレクトリは705がおすすめです。上位ディレクトリで厳しい制限にしておくと、下位のファイルがミスで甘い設定になっていても安心です。

 SSLで「セキュリティ証明の日付は無効です」と出ます。
s1サーバーは、当社正式証明書を発行してもらっていますが、それ以外のサーバーは対応していません。したがってs1サーバー以外でも通信の暗号化はされているものの、証明書がないためセキュリティ警告アラートが出ます。
どうしても必要であればサポートの方で相談に乗ってくれるようですので問い合せてみて下さい。


独自ドメインで運用している場合はs1サーバーでもアラートが出ます。これは証明書がs1.xrea.comに対して発行されているからで、独自ドメインで利用する場合はそのドメインに対する証明書が必要となります。

 SSLでhttps://〜のサイトで広告を表示すると警告が出るのですが。
SSL対応ページ内に広告を貼ると正式証明書があるs1サーバーでもセキュリティ警告が出ます。これは、広告サイトがSSL対応ではないためです。

上記に該当する場合はフレームなどで通常ページ内に広告を表示するか、広告免除の審査をしますのでメールフォームからご連絡下さい。


 SSIを使用する時の注意点について教えてください
セキュリティ保護のため exec は利用不可になっていましたが、解禁されましたので現在は利用できます。但し、EXEC CMD機能のみ一時停止されています。EXEC CGIは利用できます。
その他セキュリティ上問題のあるコマンドが一部停止されていますが、具体的なコマンド名のアナウンスはされていません。

SSIを埋め込むファイルの拡張子は「.shtm」「.shtml」になります。

 MySQLとPgSQLのバックアップ&リストアについて
SSHでアクセスできますが、出力・入力のリダイレクトは制限されています。
ですので、データベースのバックアップやリストア処理を行う場合は、便利なツールをお使い下さい。
http://www.phpwizard.net/
また、CGIシェルを使って作業を行って頂いても構いませんが、セキュリティ上問題ある使い方をされた場合は、削除対象となりますので、ご注意下さい。


 xディレクトリに設置したCGIへ広告を挿入する方法は?
スクリプトを改造して広告を挿入するための方法はCGIにより千差万別です。ひとつひとつのCGIについて解説することはできませんが、スクリプトに広告コードを挿入する場所を見つける一般的なヒントを挙げてみました。
(気がつき次第追加していきます。)

注意点
・コメントの表記にも注目してください。
・画面表示は重要なヒントです。
・「<!--上部広告-->」などの広告表示オプションが装備されているCGIもあります。
・スキンを使用できるCGIなどはスキンファイルに挿入することもできます。
・bodyタグを探す。
一番単純な見つけ方です。画面表示なども参考にすると挿入したい位置を特定できることが多いです。
・titleタグを探す。
これも単純な見つけ方です。
・著作権表示を探す。
画面下部に表示したい場合は、著作権表示の下に広告コードを挿入すればokです。


 sendmailの有効なオプションについて教えてください。
XREAのsendmailはqmailによって提供されています。

sendmailで有効なオプション
  • -t 受け手をメッセージから読み取ります。
  • To:, Cc:, Bcc: フィ ー ル ド が 受け手のアドレスとして読み込まれます。
  • Bcc: フィールドはメッセージの転送前に削除されます。
  • -f エンベロープ中の送り手のアドレス
  • -F 送り手のフルネーム
sendmailで無視されるオプション
  • -B, -p, -v, -i, -x, -m, -e, -od, -oe, -oi, -om, -bm
    (指定しても指定しなくてもまったく影響はありません。)
あとこの2種類のオプションもありますが、CGIから使うことはありません。
-bp, -bs
これ以外のオプションを指定した場合には、sendmailが動作しません。



 CGIのHTML表示部を書き換える時の注意点は?
1.print文になっている時
print "テスト\n";
このように記述すると「テスト」と表示されます。但し、このprint文の" "の中で「"」を使う場合はその前に\を付けてエスケープさせる必要があります。
また特定部分が文字化けしてしまう場合と同様に、メタ文字といって
その文字列の前に\を付ける事で正しく表示されることがあります。例(表\示)
2.ヒアドキュメントの場合
print <<"EOM"
  普通のCSSやHTMLのタグ
EOM
このように「print<<"文字列"」と記述されている場合、ヒアドキュメントといって「"」 で囲まれた文字自体が引用符となり次に同じ文字列が出てくるまで引用し続けます。こうする事で何行にも渡る文章が簡単な記述で済むようになります。
上の例では「EOM」が引用符となり次に「EOM」という文字列が出てくるまでの文章をprint文として引用します。このHTMLの部分はよやく予約語や記号以外ならどんな文字列でも構いません。またこのヒアドキュメントで記述されている部分の「"」には\を付ける必要はありません。

 外部サーバーからカウンタやアクセス解析を呼び出してもいいのでしょうか?
他のウェブスペースから広告を付かないCGIを呼び出す事は全面禁止しています。
外部サーバーにあるページにXREAの広告を表示してカウンタを呼び出すことはXREAの管理範囲を超えますので、認められません。
 

 拡張子が「.pl」のCGIが動かないのですが?
s1〜s11までのサーバーとs12以降のサーバーは設定が異なっています。
「.pl」はmod_perl用の拡張子に設定しています。mod_perlはユーザーは実行できません。
実験段階ですが、希望するユーザー毎に、mod_perl、JSP、ASPに対応するための新しい仕様になっています。
 

 クッキーが機能しないCGIがあるのですが。
以下のケースが重なった時に、クッキーが機能しないCGIがあります。
  1.外部呼び出しをしている
   2.広告を自動表示にしている
  3.LocationとCookieを併用している
この様な場合にはxディレクトリを利用するか拡張子を.xcgにして広告を非表示にしてから手動で広告を挿入してください。
  

 Script Errorが出てCGIが実行できないことがあるのですが。
CGIの実行エラーの原因は、同時実行数が多い、実行時間が長い、メモリを使い過ぎている、ループ状態になっているなどがあります。
スクリプトに記述ミスがない場合は、上記のいずれかに該当している可能性があります。ブラウザーの種類は関係ありません。