TOP > スクリプト制作メモ > CGIのためのサーバの選び方

≫はじめに

サーバスペースを選ぶ時には、値段は安いか、太いバックボーンがあるか、稼働率は限りなく100%に近いか、レスポンスは良いかなど色々な点を考慮して選びます。

ただ、多くの個人サイト管理者はプロバイダのサービスの一環であるレンタルサーバスペースを利用していることが多いと思います。

そうなると、サーバスペースの都合だけで決めるのも難しいと思います。

ここでは、そういった事情は少し横に置いておいて、サイト構築、それもCGIを含んだものを前提としたサーバスペースの選び方をメモしてみます。

≫サーバの種類

ネット上のCGIの情報の多くはUNIX環境を前提としています。

配布CGIの多くもUNIX環境を前提としていることが多く、ウィンドウズサーバ上では実行できないことも多くあります。

ウィンドウズサーバの方が安くレンタルできたりするかもしれませんが、大きな差ではないので、できるだけUNIXサーバを選択した方がのちのためです。

≫HTMLとCGIの違い

HTML と CGI ではウェブサーバにとって違いがあります。

リクエストに対して、HTML ファイルを返すのは静的なファイルを送り出すだけですが、CGI の場合はサーバで処理を行った結果(多くはHTML形式のテキストデータ)を送り出さなければいけません。

単純に、CGIの方がサーバに対する負荷が大きくなります。

この負荷を感じさせないサーバを構築するには、高速なCPUと多くのメモリ、ディスクアクセスの必要なCGIなら高速なアクセスを実現するHDDも必要になります。

≫CGIサーバが別でないこと

プロバイダのサーバスペースでよくある、HTMLファイルを置くサーバとCGIなどスクリプトをおくサーバが別という環境はあまりお勧めできるものではありません。

サーバが別になっていると、CGIで出来ることの制限が多くなります。

特に、配布スクリプトの多くはそういった環境を前提にしていないので、手を加えないと使えないことも多くあります。

CGIを盛り込んだサイトを制作するなら、HTMLを置くサーバとCGIなどスクリプトを置くサーバが別ではないスペースにしましょう。

≫パーミション

UNIX上ではパーミションの概念は非常に大切です。

特にレンタルサーバにCGIを設置する場合、同じユーザ(同じスペースを借りている他人)同士でディレクトリが覗けるような環境になっている場合は、速攻解約した方がいいかもしれません。

個人用途ならそれほど重要なデータを扱うこともないかもしれませんが、見られては困るファイルがユーザ同士で見れるという状況は、一見ありえないようで、たまにある話です。

最近では SuExec という技術が取り入れられているサーバが多くあります。
SuExecが導入されていると、通常、nobody という権限で実行されるCGIが、ディレクトリのユーザ権限で実行されます。

そのような環境であれば、不必要にパーミションを設定する必要がなく(パーミションを与えすぎても実行できない)、多少セキュアな環境が保証されるのでおすすめです。

≫Perl / PHP / C言語

CGI それ自体はプログラミング言語ではありません。

CGI を作るには、Perl や PHP や C言語などのプログラミング言語が使用されます。

中でも Perl は容易さやウェブCGIでの処理に向いた言語のため広く普及しています。
CGIが有効なサーバスペースであれば Perlの使えないところは無いと言っても良いほどです。

最近では PHP も普及していますが、どこでも使えるというほどの普及率ではありません。

C言語は、Perl や PHP に比べて言語を記述すること自体の難易度が高く、また、実行するためにはサーバ環境に合わせたコンパイルという作業が必要なためあまり普及していません。
業務レベルでは当たり前の言語ではあったりしますが。

個人用途であれば、最低限 Perl が使え、なお PHP が使えると一層CGIを楽しめるでしょう。

ただし、ここで注意しなければならないのは、バージョンです。

Perl なら 5 以上、PHP なら 4 以上の環境があることを確認しましょう。
贅沢を言えば、常に最新(安定版)の環境を構築してくれるサーバが最も良いでしょう。

なぜなら、バージョンの違いによって記述に違いがあり、低いバージョンでは対応できないことも多いからです。
ネット上の技術情報も最新バージョンに関するものが多く、古いバージョンについての質問は、根本的にバージョンを上げるよう一蹴されることも多くあります。

≫シェル環境

CGIは何もブラウザから実行するだけのものではありません。

Telnet や SSH 環境からコマンドラインで実行することも可能です。

Telnet や SSH をシェルと言ったりします(Telnetは含まないかも)が、このシェル環境が使えるのはCGIを利用していく上でとても便利です。

なぜなら、シェルからCGIの文法チェックなどを行え、エラーのある行や原因をつかむことが出来るからです。

コンパイラがあればC言語を使ったCGIも利用できます。

セキュリティの問題はさておき、できるだけシェルの解放されているサーバをお勧めします。

TOP > スクリプト制作メモ > CGIのためのサーバの選び方
(C) bayashi.net