Apacheのインストール

  1. Apacheとは
    1. Apache
      ApacheはUnixサーバーなどで広く利用されている営業目的でなければ自由に利用できる web サーバーです。サーバーのソフトは http://apache.jp 等から入手できます。5MB程度のサイズです。現在の最新版は
       apache2.0.44-win32-x86-no_ssl.msi
      です。これは自己解凍方式のインストール実行ファイルです。

    2. 目的
       CGIを作成しても、webサーバーを利用しないとスクリプト(プログラム)の確認ができません。そこで、windows用に公開されているApacheサーバーを組込み、自分のPC一台でCGIの動作を確認する方法をお勧めします。

    3. インストール
      ダブルクリックすると、インストールを開始します。使用条件の確認、をすると、設定用の名前を問い合わせてきます。ここでは、自分専用の(公開しない)webサーバーを組み込むものとします。
       NetworkDomain:ドメイン名ですが好きな名前を設定します
       ServerName:サーバーの名前です。localhost、あるいは、適当な名前を設定します。
       Admin.EmailAddress:root@localhost あるいは適当な名前でかまいません。
      最後に、ラジオボタンの選択があります。通常は、Recomended を選択して下さい。これは、Apacheをwindowsのサービスとして立ち上げます。
       次に、Typeですが、typicalが簡単です。最後はインストール先です。ProgramFilesのApacheGroupが標準です。通常、このままで良いでしょう。okでエラーメッセージなしで終了できた場合は、インストール完了です。

    4. 実行
      stratメニューから ApachHttpdServer>controlServerを選択し、start を実行します。これで、apacheサーバーが起動します。タスクマネージャで確認できます。
       実際の表示は、ブラウザで、
       http://localhost/
      を指定します。Apache標準のrootページが表示されます。このページは、apacheを組み込んだApach2フォルダのhtdocsにあります。言語別のindex.htmlファイルがあります。

  2. Apacheの設定
    このままでは、CGIは実行できません。標準では CGI は実行禁止になっているからです。設定を変更するには、pacheを組み込んだApach2フォルダにあるconfフォルダにあるhttpd.confを編集します。文字ファイルですから、適当なエディタで編集します。
     
    1. DovumentRoot
      サーバーが表示する先頭のhtmlフォルダの位置 DocumentRoot を設定します。標準のままでは、使いづらい場合、変更して下さい。ここでは、
       c:\apache\public_html
      に変更します。この例では228行ですが、バージョンで変化するかも知れません。253行も同じ名前で変更します。
    2. ScriptAlias
      必要なら509行のScriptAliasの行を変更します。これは、cgiを置く標準のフォルダ /cgi-bin/ の位置を指定します。

    3. Options(必須)
      517行に、/cgi-bin/の実際のフォルダの設定があります。先頭の、フォルダの位置ScriptAliasとどうように変更し、さらに、Options None を OptionExecCGI に変更します。これをしないと、CGIが実行できません。
       もし、cgiを他のファイルダ(たとえば c:\apache\public_html)でも実行したいとき、このフォルダの設定もどうように変更します。

      <Directory "C:/Apache/public_html">
       Options Indexes FollowSymLinks
       Options ExeCGI
       AllowOverreide None
       ..
      </Directory>

       Options Indexes は、このディレクトリに 指定したhtmlファイルが存在しないとき、ファイルの一覧表示を許可することを意味します。AllowOverreide None は、.htaccess ファイルによる個別の設定を許可しないことを意味します。

    4. AddHandler
      766行の
       #AddHandler cgi-script.cgi
      の先頭の#を削除し、この文を有効にします。これも必須です。

    5. その他
      好みに応じて、328行のファイル名は、htmlファイルの指定がないときに利用するファイル名です。index.htm を追加しておくと便利です。また、627行のdefoultLanguage をjaにする、703行の AddFefoultCharset を shift_jis にするなどの修正をして下さい。

    6. Apacheが起動できない
       「標準的」なwindowsシステムでないと、Apacheが起動できません。http://apache.jp で確認して下さい。95,98,meではパッチファイルで、libapr/dll を変更する必要があります。NT,2000,XPでは、80番ポートの実行にはルート権限が必要です。以下と同じ処理で、ポートを8080に設定して下さい>
       「0.0.0.0.:80が利用できない」と表示される場合は、ポート80がすでに他のソフトで利用されている場合です。httpd.conf ファイルの 120行 Listen 80 で、ポートを指定しています。
       たとえば、Listen 8080 にポートを変更します。apacheを一度停止してから、再起動します。これで、設定変更が有効になります。ブラウザで
       http://localhost:8080
      とポートを指定して読み込みます。

  3. CGIの実行
    1. 設定
      ここでは、C:\Apache\public_html をdocumentRootに設定し、ここに、Options ExecCGI が設定されているものとします。

    2. ファイルの配置
      C:\Apache\public_htmlに、hello.cgi を接続する、index.html ファイルを作成します。
      <HEAD>
      <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
      <META http-equiv="Content-Style-Type" content="text/css">
      <TITLE>testCGI</TITLE>
      </HEAD>
      <BODY>
      
      <h3> local web ページです<BR>
      
      CGIの試験
      <H4><a href="hello.cgi">1行表示</a><BR>
      <BR>
      </BODY>
      </HTML>

      同じフォルダに、次の hello.cgi ファイルを作成します。ただし、Perlが C:\/Perl/ に組み込まれているものとします。

      #!/Perl/bin/perl
      # first sample
      
      print<<HT_ML;
      Content-type: text/html; charset='Shift_JIS'\n\n
      <html>
      <head>
       <title>sample1</title>
      </head>
      <body>
       <h1>hello2</h1>
       こんにちは
      </body>
      </html>
      HT_ML

      apacheを起動し、http://localhost/を指定します。先頭ページが表示されます。
      「一行表示」をクリックすると、「こんにちは」のページが表示されれば、CGIの実験は成功です。

    3. エラー
      「Forbidden」が表示される場合は、CGIの実行が許可されていません。httpd.conf の設定をチェックして下さい。
      Internal Server Error が表示される場合は、Perlの実行が失敗しています。cgi の先頭行の 
       #!/Perl/bin/perl
      をチェックして下さい。hello.cgi のファイルのスクリプトにミスがないか、調べて下さい。このミスはコマンドプロンプトで
       Perl hello.cgi
      コマンドで確認できます。

    4. Apacheが起動できない
       「標準的」なwindowsシステムでないと、Apacheが起動できません。http://apache.jp で確認して下さい。95,98,meではパッチファイルで、libapr/dll を変更する必要があります。NT,2000,XPでは、80番ポートの実行にはルート権限が必要です。以下と同じ処理で、ポートを8080に設定して下さい>
       「0.0.0.0.:80が利用できない」と表示される場合は、ポート80がすでに他のソフトで利用されている場合です。httpd.conf ファイルの 120行 Listen 80 で、ポートを指定しています。
       たとえば、Listen 8080 にポートを変更します。apacheを一度停止してから、再起動します。これで、設定変更が有効になります。ブラウザで
       http://localhost:8080
      とポートを指定して読み込みます。

       
  4. Linuxサーバーでの実行
    1. windowサーバとの差異
      実際の、webサーバーでCGIを実行するには、いくつかの作業が必要です。

    2. CGIの実行権
      CGIの実行権が必要です。また、実行するための cgi ファイルをおくフォルダ(ディレクトリ)や拡張子が制限されている場合があります。この設定はwebサーバー側で行います。

    3. 文字コード
      LinuxサーバーではWindows使用する文字コードが異なります。文字コードはeuc、改行はLFコードを利用します。したがって、cgiファイルも EUCコード(改行コードは LF)で、指定ディレクトリに保存します。文字コードと改行コードの指定は、フリーウエアのTeraPadを利用すると便利です。ファイルメニューから、「漢字、改行コード指定保存」を選択します。
      以下をクリックしてください。

    4. Perlの実装位置
       サーバーでのPerlの実装位置(ディレクトリ)をスクリプトの先頭で指定します。一般にサーバーによりディレクトリが異なります。
       www.ccad.sccs.chukyo-u.ac.jpの場合、CGIスクリプトの先頭行を
       #!/usr/local/bin/perl
      とします。

    5. ファイルのアクセス権
      直接実行をする cgi ファイルには、other(第三者)に対する実行属性が必要です。FTPまたはログインして設定します。また、ログファイルのような、書込みも行うファイルには、other(第三者)に対する書込み属性が必要です。
      この指定は、ファイル転送にフリーウエアのFFFTPを利用する場合、送信したファイルを選択し、コマンドメニューの属性変更を選びます。cgiファイルの場合、その他(第三者の意味です)にチェックを付け、ok します。cgiから書込みを行うファイルには、w属性を付けます。cgiファイルに w 属性を付けると、外部からcgiファイルの書き換えが可能になりますから、注意してください。