Apache


Apacheについて

  • Apache(Apache日本語ページ)は、現在世界中で稼動しているWebサーバの約60%が採用しているフリーソフトウェアです。(Netcraftによる調査ページ)
  • Apacheとそれに関係するドキュメントをインフォサイエンスが日本語訳して掲載している、JAPACHEのページが参考になります。
  • 現在は、安定バージョン(1.3.X)と最新機能バージョン(2.X)が同時に開発されています。
  • ここでは、BIGLOBE上の「名犬?タローのページ」をローカルのLAN環境に構築してみました。アクセスカウンタ等のCGIや、RealMediaやWindowsMediaのビデオ配信も出来る様にします。


Apacheのインストール

  • まず、Apacheのページから最新版のtarballをダウンロードします。ここでは、安定バージョン(1.3.X)を使用ます。

    ・apache_1.3.23.tar.gz(2002年2月1日時点の最新版)

  • 以下の手順でインストールします。

    % tar zxvfp apache_1.3.23.tar.gz
    % cd apache_1.3.23
    % ./configure
    % make
    % su
    # make install
    


Apacheの設定(/usr/local/apache/conf/httpd.conf)

  • 【前提条件】(()番号は、注記番号と同じです。)
    ・ポート番号は、一般的なWebサーバと同様に「80」とします。(1)
    ・ユーザ「hnakamur」のホームディレクトリの下に「public_html」ディレクトリを作成し、HTMLファイルを置きます。(2)
    ・トップページは「index.htm」で、「http://taro/~hnakamur/」でアクセスできる様にします。(4)
    ・CGIはホームページ内の任意の場所に置いた拡張子「.cgi」ファイルで動作する様にします。(3,6)
    ・RealMediaやWindowsMediaのビデオ配信も出来る様にします。(5)

  • /usr/local/apache/conf/ディレクトリには、「httpd.conf」、「srm.conf」、「access.conf」の3つの設定ファイルがありますが、「httpd.conf」に全ての設定が集約されているので、他の2つは設定不要です。「httpd.conf」で必要な設定は、以下の様になります。注釈以外はデフォルトのままです。

    【/usr/local/apache/conf/httpd.conf】(関連部分のみを抜粋)
    ### Section 1: Global Environment
    
    ServerType standalone
    
    ServerRoot "/usr/local/apache"
    
    KeepAlive On
    
    MinSpareServers 5
    MaxSpareServers 10
    StartServers 5
    
    ### Section 2: 'Main' server configuration
    
    Port 80       <--(1)8080を80に変更
    
    User nobody
    Group nobody
    
    ServerAdmin hnakamur@taro.home
    
    #ServerName taro.home
    
    DocumentRoot "/usr/local/apache/htdocs"
    
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    
    <Directory "/usr/local/apache/htdocs">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
    <IfModule mod_userdir.c>
        UserDir public_html
    </IfModule>
    <Directory /home/*/public_html>  <--(2)コメント外す
        AllowOverride FileInfo AuthConfig Limit
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI  <--(3)ExecCGI追加
        <Limit GET POST OPTIONS PROPFIND>
            Order allow,deny
            Allow from all
        </Limit>
        <LimitExcept GET POST OPTIONS PROPFIND>
            Order deny,allow
            Deny from all
        </LimitExcept>
    </Directory>
    
    <IfModule mod_dir.c>
        DirectoryIndex index.html index.htm  <--(4)index.htm追加
    </IfModule>
    
    <IfModule mod_mime.c>
    ...
    
        AddType application/x-tar .tgz
        AddType video/x-ms-asf .asf .asx  <--(5)追加
    
        AddHandler cgi-script .cgi  <--(6)コメント外す
    ...
    </IfModule>
    
    ### Section 3: Virtual Hosts
    #NameVirtualHost *
    
    #<VirtualHost *>
    #    ServerAdmin webmaster@dummy-host.example.com
    #    DocumentRoot /www/docs/dummy-host.example.com
    #    ServerName dummy-host.example.com
    #    ErrorLog logs/dummy-host.example.com-error_log
    #    CustomLog logs/dummy-host.example.com-access_log common
    #</VirtualHost>
    

  • 「httpd.conf」の設定を変更したら、設定に問題が無いか以下のコマンドで確認します。

    % /usr/local/apache/bin/apachectl configtest
    Syntax OK
    


RealMedia,WindowsMediaのMIMEの設定

  • WebサーバからRealMediaやWindowsMediaのビデオ配信する場合は、ファイルの拡張子に対応したMIMEの設定が必要です。「/usr/local/apache/conf/mime.types」にデフォルトの設定があります。RealMedia関連は、以下の様に記述されているので新たな設定は不要です。

    【/usr/local/apache/conf/mime.types】(RealMedia関連抜粋)
    # MIME type			Extension
    ...
    audio/x-pn-realaudio		ram rm
    audio/x-pn-realaudio-plugin	rpm
    audio/x-realaudio		ra
    ...
    

  • WindowsMediaについては、上記の「mime.types」に記述が無いので、「httpd.conf」の中に(5)で示した「AddType video/x-ms-asf .asf .asx」として設定を追加しました。

  • 実は、残念ながら上記だけでは、RealMedia,WindowsMediaが正しく表示できません。メタファイルのramファイルや、asxファイルで記述しているURLの記述でサーバのパスの修正が必要です。例えば、ramファイルの記述は以下の様に修正しました。

    (前)http://www2h.biglobe.ne.jp/~hnakamur/video/011216/011216.rm
    
    (後)http://taro/~hnakamur/video/011216/011216.rm
    


CGIのperlのパス設定

  • CGIについては、perlのパス(/usr/bin/perl)がBIGLOBEのサーバ側のパス(/usr/local/bin/perl)と異なっているため、そのままでは動きませんでした。BIGLOBEのサーバと同じなる様にシンボリックリンクを作成しました。

    # which perl  <--ローカルのマシンのパスを確認
    /usr/bin/perl
    # ln -s /usr/bin/perl /usr/local/bin/perl  <--BIGLOBEに合わせてシンボリックリンクを作成
    # ls -li /usr/local/bin/perl
    485115 lrwxr-xr-x  1 root  wheel  13   2/ 7 23:38 /usr/local/bin/perl -> /usr/bin/perl
    


Apacheの起動と停止

  • 以下のコマンドで起動します。

    % su
    # /usr/local/apache/bin/apachectl start
    /usr/local/apache/bin/apachectl start: httpd started
    

  • 正常に起動された場合のプロセス状態は以下の様になります。

    # ps -xaw
    ....
     4720  ??  Ss     0:00.01 /usr/local/apache/bin/httpd
     4721  ??  I      0:00.00 /usr/local/apache/bin/httpd
     4722  ??  I      0:00.00 /usr/local/apache/bin/httpd
     4723  ??  I      0:00.00 /usr/local/apache/bin/httpd
     4724  ??  I      0:00.00 /usr/local/apache/bin/httpd
     4725  ??  I      0:00.00 /usr/local/apache/bin/httpd
    .....
    

  • 停止と再起動は、以下のコマンドで行います。

    # /usr/local/apache/bin/apachectl stop
    /usr/local/apache/bin/apachectl stop: httpd stopped
    
    # /usr/local/apache/bin/apachectl restart
    /usr/local/apache/bin/apachectl restart: httpd restarted
    



ブラウザからのアクセス

  • DocumentRootで指定しているページ(デフォルトでは「/usr/local/apache/htdocs」ディレクトリ内のHTMLファイル)は、以下のURLでアクセスします。

    http://taro/
    

  • UserDirで指定している各ユーザのホームディレクトリのページ(デフォルトでは「/home/~ユーザ名/public_html」ディレクトリ内のHTMLファイル)は、以下のURLでアクセスします。以下をアクセスすると見事に「名犬?タローのページ」が表示されました。

    http://taro/~hnakamur/
    



トップへもどる


Copyright (c) 2002 Hiroshi Nakamura. All rights reserved.