- ベストアンサー
CGI設置可能なレンタルサーバーじゃダメ?
以前こちらでCGIを設置するにはプロパイダにきけっと言われました http://okwave.jp/qa/q7725071.html しかし別の疑問ができたのです。 CGI設置可能なレンタルサーバーを借りて、そこでCGIを動かしたいのに何でここでプロパイダに聞かなきゃダメなのかという事です。 なぜなのでしょうか? また、CGI設置可能なレンタルサーバーにプログラムをおいてもプロパイダから追放されたりしますか?
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
横入りして申し訳ございません。 ご質問について、いろいろと回答が出ており、いまさらではありますが、質問者様の冒険的なこころみにいたく感心し、わたくしなりに回答してみたいと思います。 まず、CGIの利用についてはプロバイダが利用可と言っているなら遠慮なく使ってもいいと思います。 ただ、レンタルサーバの利用形態によって制限があるため、プロバイダの利用上の説明やQ&Aは読んでおいた方がいいと思います。 そして禁止事項は守るようにお願いします。 なぜ、制限があるかというとCGIを使ってシステム上のプログラムを実行させた場合に、メモリやディスクまたは回線などのサーバ資源をパンクするまで占有させるようなプログラムであった場合、他のお客様に迷惑がかかるからです。 例えば、メモリを多く使ったりディスクへのアクセスを頻繁にすると、複数の客で1機のサーバをシェアレンタルしている場合にサーバが重くなってシェアしている全サイトの各種処理サービスが遅くなるなどの問題が発生します。 実際には早々起こる事ではありませんが、その可能性があるというだけで脅威なのです。 割高ですが、1機のサーバを独占する占有サービスなどでも、SPAM業者のように秒間何千通ものメール発信してたら、回線があっという間にパンクします。 回線には何台ものサーバがつながってますので・・・。 サポセンに電話がつながりにくいようなもので、緊急の人にとってはもう泣きたい位の・・・。 まあ、利用はOKだけど気をつけてねとも書いてあると思います。 サーバになんかあった場合、極端な話、生活をそれに依存している人とかが損失のせいで首をつったりするケースもあるので、プロバイダに責任転嫁しないでちゃんと責任とってねというようなことをオブラートに包んで書いてあるかと・・・。 次に「C」言語で作ったプログラムをCGIから動作させたい場合 これはまず、占有サーバを借りる以外無理かと思います 理由としては、プログラミングを学習した方ならご存知でしょうけれど、プログラム言語には大きく分けて「インタープリター型」と「コンパイル型」に分けられます。近年(といってもふた昔ほど)では、JavaやVBなどに代表される中間言語処理型のような「コンパイラ」と「インタープリター」の中間に位置する方式もありますが、こちらはまあ脇においておいて。 Cは基本的にはコンパイル型です。まず、実行ファイルを作る(以下ビルドといいます)ことが前提です。ソースの状態では実行できません。 実行ファイルは「マシンの環境に依存」しますのでサーバ側でビルドを行うことになりますが、一般の安いレンタルサーバでそんな操作をさせてくれるところは聞いたことがありません。 サーバと同じCPU・OSの環境を仮に持っていたとして、staticモードでビルドをすれば動作する可能性は高いですが、言ってることが良くわからなければ事故の元です。 この手の事故は簡単に発生します。 事故で共用レンタルサーバをつぶした場合の損害額は個人では弁済できない額になると思います。 あなたがアラブの石油王なら大丈夫かも知れません。 perlはなぜソースのままで動くのかというと、そのソースが単体で動作するわけではないのです。 UNIX系サーバの場合、テキストファイルに実行権限がある場合、その1行目はシェバング行となります。これは、そのテキストデータをその行で指定されたプログラムから処理させますよというものです。 「#!/usr/bin/perl」という行がperlのCGI用ソースに入っていると思います。ここで指定されている「/usr/bin/」に入ってる「perl」という名前のperl言語を処理するインタープリターのバイナリ実行ファイルがOS上で起動してそれ以下のテキストをperlのプログラムとして逐次実行されるという仕組みです(正確には中間言語にコンパイルしてから云々というのは後々の学習のためにとって置いて下さい)。 そんなこんなで、レンタルで、ある程度なにをやっても許される占有サーバをレンタルするのでなければ、CをCGIから利用するのはあきらめたほうがいいと思います。 できれば、ローカルでLANを組んで自前のサーバを構築してそこでやってみることをおすすめします。 蛇足ですがCGIはプログラム自身ではありません。Webサーバからシステム上でプログラムを起動させてその結果をWebサーバに橋渡しする仕組みのことを指します。 また、プログラム言語は言語仕様だけを学んでも習得できた事にはなりません。それの取り巻く環境や開発ツールを使えるようになってスタート地点です。 がんばって学習してください。 長々と失礼いたしました。
その他の回答 (8)
- Wr5
- ベストアンサー率53% (2173/4061)
>ですが何でおなじOSにしないとだめなのでしょうか? >どのOSで作ってもソース自体は一緒なはずだと思いますが そのレンタルサーバでコンパイルができる保証がありません。 CGIならperlで十分。 というコトならば、コンパイラなどが使用できる状態になっていないかも知れませんし、 そもそもシェル(まぁ、コマンドプロンプトと言った方が通じますかね…)が使えるとも限りません。 # シェルを使えるようにしておく必要性自体が低いですからねぇ。 VPSなら場合によってはいろいろできますけど。 # で、管理が甘くて乗っ取られて政府のサイトとかの攻撃用に使われたあげく警察のご厄介になる。なんてのがオチ? 書いたコードの移植性については既に指摘されているので…。 まぁ、CGIなら妙なコトしない限りは標準入出力でのやりとりと…環境変数の取得くらいでしょうかねぇ…。 # セッション管理とか始めると面倒かも知れませんが。
補足
<<そのレンタルサーバでコンパイルができる保証がありません。 この部分も考えてレンタルサーバーを借りるのを考案しないといけませんね <<# で、管理が甘くて乗っ取られて政府のサイトとかの攻撃用に使われたあげく警察のご厄介になる。なんてのがオチ? ハッキングですか、それは怖いですね まあ、警察に事情聴取とかくらいなら手間にはなりますがするのは問題ないと思っていますが私自信が自分の知らないとこで犯行を重ねてるのは問題ありますね 警告していただきありがとうございます。
- wormhole
- ベストアンサー率28% (1626/5665)
>ですが何でおなじOSにしないとだめなのでしょうか? >どのOSで作ってもソース自体は一緒なはずだと思いますが ANSI C Libraryなどで定義してある使うだけならですね。 ただ、それでも未定義の動作はOSによって異なったりしますし どのOSでも同じように動作するようにCのソースを書くって意外と知らないといけないこといっぱいありますよ。
補足
<<どのOSでも同じように動作するようにCのソースを書くって意外と知らないといけないこといっぱいありますよ。 なるほど、では実際にCGIをサーバーに置く時はここら辺も調べなくてはいけませんね。 教えていただきありがとうございます
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
レンタルサーバーサービスを提供している会社=レンタルサーバーサービスプロバイダー インターネット接続サービスを提供している会社=インターネット接続サービスプロバイダー というつもりでまとめて書きましたが、 もしプロバイダーという言葉をインターネット接続サービスプロバイダー(ISP)と誤解されていたのでしたらすみません。 レンタルサーバーを利用されるのでしたら、そのレンタルサーバーを管理している会社に問い合わせてください。 ISPが提供しているサーバースペースを利用されるのでしたら、ISPに問い合わせてください。
補足
<<レンタルサーバーサービスを提供している会社=レンタルサーバーサービスプロバイダー インターネット接続サービスを提供している会社=インターネット接続サービスプロバイダー 正式名称はそういうのですか。 両者ともプロパイダと言う名前が付いてますね 申し訳ありません 私は レンタルサーバー=HPを設置できるところ プロパイダ=インターネットを接続できるようにする会社(以前までここでHPを置けるとは全く知らなかった) と言う認識しか持っていませんでした。 <<もしプロバイダーという言葉をインターネット接続サービスプロバイダー(ISP)と誤解されていたのでしたらすみません。 申し訳ありません誤解していたようです。 良いレンタルサーバーを探してCGIを設置するのを試みたいと思います。 ありがとうございました。
- Wr5
- ベストアンサー率53% (2173/4061)
設置する場所として「レンタルサーバ」と明記しなかったので、「ISPのホームページスペースに置くつもり」だと思われたのでしょう。 レンタルサーバであれば、問い合わせするのはそのレンタルサーバを提供しているところ…となります。 で……C言語で作成したcgiを…ということのようですが、 レンタルサーバのOSがなんなのか…とか、いろいろ問題がありますが……。 同じOS(バージョンなども同じにする必要がある)でないとC言語のソースのコンパイルが出来ないでしょう。 手元のWindowsでコンパイルして作成したexeファイルをLinuxサーバに転送しても実行はできませんし、 CentOSやFedoraでビルドした実行ファイルをDebianやUbuntuの環境にコピーして動作するかは判りません。 # ライブラリのバージョンが違うかも知れませんしね…。 そういう不整合が起きにくいので、cgiはperlで書かれることが多いんですけどね……。 # 改行コードの問題を除けば、たいていの環境で同じソースファイルが実行できますから。
補足
<<設置する場所として「レンタルサーバ」と明記しなかったので、「ISPのホームページスペースに置くつもり」だと思われたのでしょう。 ISPのホームページスペースがプロバイダのHPスペースなのですね <<同じOS(バージョンなども同じにする必要がある)でないとC言語のソースのコンパイルが出来ないでしょう。 それは厳しいですね ですが何でおなじOSにしないとだめなのでしょうか? どのOSで作ってもソース自体は一緒なはずだと思いますが perlはちょっとかじりましたがまだ慣れているC言語でCGIを作ろうと思いました。 個人的な理由ですがC言語の活躍場所が今のところCGIやゲーム作りにしか活躍できそうにないので、それに早く処理していただけるようですし。
- m-take0220
- ベストアンサー率60% (477/782)
あなたが、「プロパイダに聞かなくてもいい?」といったタイトルで質問したので、回答者が「使用するサーバーはプロバイダが契約者に提供しているもの」だと判断したために、そのような回答になったのでしょう。 最初からレンタルサーバーを使用すると記述しておけば、「レンタルサーバーの会社に聞け」という回答になったと思われます。
補足
知識不足のため誤解を招く質問をしてしまい申し訳ありませんでした
- nijjin
- ベストアンサー率27% (4815/17785)
「ParlはCGIを設置するのにプロパイダのParlソフトを使わないとCGIが設置できないと聞きました C言語の場合はParlソフトを使うわけではないのでプロパイダに聞かなくてもCGIは設置可能でしょうか?」 自身がレンタルサーバではなくプロバイダと質問しています。 また、プロバイダによってはHPスペースがありHPを開設可能なところもあります。 そうなると必然的に回答もプロバイダの方で考えるでしょう。 プロバイダではなくレンタルサーバだとすればレンタルサーバと書かなければならない部分をプロバイダと書いた事になり質問の内容に間違いがあったと言う事になります。
補足
<<また、プロバイダによってはHPスペースがありHPを開設可能なところもあります。 そんなところがあったのですね。 知りませんでした。 今までレンタルサーバーにソースをわたしてそれで表示してもらうものしかないと思っていました <<プロバイダではなくレンタルサーバだとすればレンタルサーバと書かなければならない部分をプロバイダと書いた事になり質問の内容に間違いがあったと言う事になります。 すみませんでした まさかプロパイダ自身にHPの設置箇所があるとはしらず誤解を招く質問内容になってしまって申し訳ありませんでした
- shimix
- ベストアンサー率54% (865/1590)
推測ですが「プロバイダに聞け」というのは「サーバ管理者に聞け」と同義かと。つまりレンタルサーバで動かしたいのであれば、レンタルサーバ会社に確認してもらうことになります。 「CGI設置可能なレンタルサーバ」という場合には、Perlとかphpが動かせますよ(場合によってはRubyとかも)という以上の意味はありません。 C言語のCGIとなると、ソースを転送してtelnetでログインしてコンパイルすることになりますから、最低でもVPS(仮想専用サーバ)になるだろうとは思いますが・・・
補足
<<C言語のCGIとなると、ソースを転送してtelnetでログインしてコンパイルすることになりますから、最低でもVPS(仮想専用サーバ)になるだろうとは思いますが・・・ この部分がよく分からないですが、ソースのみは転送できてもコンパイル済みのは転送できないって事ですか? また仮想サーバーは用意する必要性があるのですか?
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 前回の質問内容にレンタルサーバというキーワードが無いからじゃないでしょうか? プロバイダでと言ってるからプロバイダに聞けってなるわけで。 レンタルサーバを借りてそこで動かしたいけど確認したいことがあるのであれば 「レンタルサーバに聞け」という回答になります。 プロバイダとレンタルサーバは一切関係ありません。
補足
そうなのですか。 CGIはプロパイダがどうのこうのしないと設置できないものだと思いました レンタルサーバーとプロパイダは関係ないのですね ありがとうございますおかげでちゃんと設置できそうです。
補足
<<ご質問について、いろいろと回答が出ており、いまさらではありますが、質問者様の冒険的なこころみにいたく感心し、わたくしなりに回答してみたいと思います。 お褒めに預かりありがとうございます <<そして禁止事項は守るようにお願いします。~~~ 丁寧に解説していただきありがとうございます。禁止事項は守りますね <<次に「C」言語で作ったプログラムをCGIから動作させたい場合 困りましたね C言語にそんなに制約があるとは・・・・ ちゃんと動く事が確認できれば問題ないと思っていたのですが問題は山積みですね <<そんなこんなで、レンタルで、ある程度なにをやっても許される占有サーバをレンタルするのでなければ、CをCGIから利用するのはあきらめたほうがいいと思います。 できれば、ローカルでLANを組んで自前のサーバを構築してそこでやってみることをおすすめします。 自前サーバーですか 最後に自前サーバーに移して完成させる予定でしたが、そうなると自前サーバーの制作方法もすぐにでも覚えないといけませんね <<それの取り巻く環境や開発ツール 痛いほどよくわかります。 その環境を今までそろえられなかったからCGIを開発できませんでしたからね 整えられたからこそようやく開発可能に!やったわ!っと喜んだものです。 いろいろ問題となりそうなところを指摘していただきありがとうございました。