Top

ドメイン名入門
入門ガイド
管理ガイド基礎
[Email]
[FTP]
[Web]
  サーバーの設定
    設定ファイル
    MIME Type
    HTTP認証
    SSI
    CGI ディレクトリー
    Flash
    WAPプロトコル
  Subhost
    自動設定
    手動設定
  サーバー再起動
  サーバーログ
    ログ解析
      Urchin5
      Urchin5設定
      Urchin5 FAQ
      Urchin
      Urchin設定
    Analog
    AWStats
    http-analyze
    The Webalizer
    フォーマット
    Rotatelogsと     Savelogs
      サンプルファイル
    ログ整理
  Apacheモジュール
    mod_perl
    mod_php
    mod_dav
    mod_gzip
    mod_negotiation
  サーバー暗号化
    証明書
    デフォルト
    独自の証明書
      1.PrivateKey
      2.証明書取得
      3.インストール
      4.移動
      5.更新
      6.トラブル
  CGI
    CGI Library
      HTTP認証
      Mail Form
      cgiemail
      comments
      counter
      guestlist
      iwhois
      redirect
      tts
    独自CGI
  FrontPage
    インストール
    Subhost使用
  blog Nucleus
    インストール
  PukiWiki
    インストール
[Ports]
[Shell]
[User]
[iManager]
[CPX]
[Webmin]
管理上級編


v2
Top
v2
Start
v2
Email
v2
Ftp
v2
Web
v2
Ports
v2
Shell
v2
User
v2
Perl
v2
Java
v2
System
v2
iManager
v2
CPX


独自 CGI スクリプトのインストールとデバッグ

注意: このページは、レンタルサーバー SPEEDEX VPS v2 の技術サポートです。
2009年6月現在、VPS v2 の新規オーダーを受けしておりますが、 VPS v3 の採用をお勧めします。
現在提供中のサービスについては SPEEDEX のメニューページを参照ください。
SPEEDEX VPS v1 サーバーご利用の場合は v1 サーバーサポートページを参照ください。
SPEEDEX VPS v3 サーバーご利用の場合は v3 サーバーサポートページを参照ください。
SPEEDEX OneDom サーバーご利用の場合は OneDom サーバーサポートページを参照ください。

VPS v2 は、物理的な一台のサーバーとほぼ同等の自由度と能力を持つように設計されており、root 権限もあります。そのため、目的に応じたカスタマイズが可能です。その中には、独自開発あるいは第三者の開発した CGI スクリプトの利用も含まれます。

スクリプトが目的通り作動するためには、スクリプトファイルとそれに関連した全てのファイル及びディレクトリーの所有権と実行権限が正しく設定されている必要があります。全てのスクリプトファイルにわたって、オーナー (owner)、グループ (group)、ワールド (world) がスクリプトファイルの実行権限を持っていなければなりません。全てのスクリプトファイルのオーナー(ユーザー)及びグループは、スクリプトディレクトリーのオーナー(ユーザー)及びグループと一致しなければなりません。また、このオーナー(ユーザー)及びグループは、Web サーバーの設定とも一致しなければなりません。メインのホストの場合は、ユーザー、グループとも www です。サブホストの場合は、ユーザー、グループは、apache の設定ファイル (/usr/local/apache/conf/httpd.conf) の VirtualHost ディレクティブで指定されています。

Perl スクリプトでの注意点

  1. ASCII モードでアップロードしてください Perl スクリプトはテキストファイルです。テキストファイルは Virual サーバーにアップロードする場合、必ず、ASCII モードでアップロードする必要があります。ASCII モードでアップロードしないと、500 Server Error が発生します。文字コード EUC 日本語を含んだスクリプトをアップロードする場合、ローカルでのファイルの保存を改行 CR + LF で行ってからにしてください。

  2. Perl のパスは /usr/bin/perl です スクリプトの最初の行に、Perl のパスはを記載する必要があります。VPS v2 での Perl 5 のパスは /usr/bin/perl です。Web 等で入手した、第三者の作成した、スクリプトを使う場合は、この点を特に注意してください。

  3. sendmail のパスは /usr/sbin/sendmail です v2 サーバーではデフォルトでは /usr/sbin/ へはパスが通っていません。パスを通すか、スクリプトでフルパスで指定するようにしてください。
    コマンド名 command のパスは which command で調べられます。

500 Server Error を解決する

500 Server Error が発生した場合、最も簡単に原因を見つける方法は、web サーバーのエラーログを調べることです。web サーバーのエラーログは一般には ~/www/logs ディレクトリー以下に error_log の文字を含んだファイル名で保存されています。正確な、ディレクトリーとファイル名は、apache の設定ファイル (/usr/local/apache/conf/httpd.conf) の VirtualHost ディレクティブで指定されています。

以下の手段で、リアルタイムにエラーを確認することができます。先ず、VPS v2 に SSH でログインし suroot になります。 tail コマンドを実行します。エラーログのファイル名とディレクトリー名は適宜読み替えてください。

  1. tail の実行

    # tail -f /www/logs/error_log

    tail コマンドは error_log ファイルの最後の部分に記載さてているものを表示します。-f オプションをつけると error_log ファイルへの書き出しをリアルタイムに表示させることができます。

    Ctrl + C でリアルタイム表示から抜けられます。

  2. tail コマンドを実行した状態で、ブラウザから CGI スクリプトを再実行すると、エラーの原因が error_log に書き出されますので、tail コマンドを実行中のコンソールでリアルタイムに確認することができます。

    典型的な CGI エラーと解決策

    • HTTPd/CGI: exec of [CGI PATH INFO] failed, errno is 2

      原因と解決策

      CGI スクリプトがインタープリターを特定できなかったというエラーです。スクリプトが Perl の場合、上記「Perl のパスは /usr/bin/perl です」で記述したように、正しい Perl のパスが使われているかどうかを確認してください。Perl のパスが正しい場合は、スクリプトを BINARY モードでアップロードしている可能性が大です。もう一度スクリプトを ASCII モードでアップロードしなおしてみてください。

    • HTTPd: malformed header from script [CGI PATH INFO]

      原因と解決策

      スクリプトが正しいヘッダーを書き出さなかったというエラーです。CGI が実行されたとき、CGI は web サーバーにメッセージを返します。このメッセージは header 部と body 部で構成されていなければなりません。header 部は典型的には content type として、body 部のデータの種類を指定します。header 部と body 部は空行で分離されていなければなりません。以下が事例です。

      
      
      Content-type: text/html
      
      
      
      <html>
      
      <head><title>Title</title></head>
      
      <body bgcolor="white">
      
      Hello world!
      
      </body>
      
      </html>
      
              

      malformed header from script エラーは上記で述べたような正しいヘッダーをスクリプトが返さなかったというエラーです。Content-type にスペル間違い等の間違いがないか、正しいデータタイプが指定されているか(text/html 等)、空行が指定されているかを調べてください。

      スクリプトが以上終了している場合も、このエラーが表示されるケースがほとんどです。しかし、以上終了している場合は、tail コマンドを実行中のコンソールにこのエラー表示以前に、エラー発生行と、エラーの理由が表示されているはずです。

SPEEDEX サポートポリシー

Copyright @ Cyber Vision Hosting Co., Ltd. All rights reserved.
Email: support@speedex.ne.jp


株式会社サイバービジョンホスティング提供サービス一覧
再販売用レンタルサーバーのSPEEDEX | VPS(仮想専用サーバー) | 共用サーバー | 独自ドメイン取得・運用 | SSLサーバー証明書 | ワイルドカードサーバー証明書 | SEO | Google Apps(TM) | クリエイティブワークの検索エンジン