Apache(自宅サーバ公開)


概要

  • フレッツADSL開通により自宅サーバ(PC9821Ne3)を公開した旨を3月25日の日記に書きましたが、ここでは、Apacheによる以下のページの構築方法について紹介します。

    名犬?タローのページ【http://meikentaro.no-ip.com/index.htm】



Apacheのインストール

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

    ・apache_1.3.24.tar.gz(2002年3月23日時点の最新版)

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

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


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

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

  • /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)80を確認
    
    User nobody
    Group nobody
    
    ServerAdmin hnakamur@taro.home
    
    ServerName meikentaro.no-ip.com       <--(7)コメントを外して設定
    
    DocumentRoot "/home/hnakamur/public_html"       <--(2)(4)
    
    <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)追加
        AddType i-world/i-vrml .ivr       <--(5)追加
    
        AddHandler cgi-script .cgi  <--(6)コメント外す
    ...
    </IfModule>
    
    
    ErrorLog /usr/local/apache/logs/error_log  <--(8)エラーログ
    CustomLog /usr/local/apache/logs/access_log common  <--(8)アクセスログ
    
    
    ### 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
    # cd /usr/local/
    # mkdir bin  <--binディレクトリを作成
    # ln -s /usr/bin/perl /usr/local/bin/perl  <--BIGLOBEに合わせてシンボリックリンクを作成
    # ls -li /usr/local/bin/perl
    70311 lrwxrwxrwx  1 root  wheel  13 Mar 23 14:04 /usr/local/bin/perl -> /usr/bin/perl
    


Apacheの起動と停止(コマンド)

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

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

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

    # /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
    



Apacheの自動起動

  • FreeBSDの起動と同時にApacheが起動する様に、以下のシェルスクリプトを「/usr/local/etc/rc.d」ディレクトリに置きました。

    【/usr/local/etc/rc.d/apache.sh】
    #!/bin/sh
    #
    apache=/usr/local/apache/bin/httpd
    apachectl=/usr/local/apache/bin/apachectl
    if [ -f $apache ]; then
    $apachectl start
    echo -n ' Apache Server Started '
    fi
    



ブラウザからのアクセス

  • DDNSへの接続が完了している状態で、以下のURLでアクセスすると、見事に「名犬?タローのページ」が表示されました。

    http://meikentaro.no-ip.com/
    



ログファイル

  • デフォルトでは、以下の2つのログファイルが設定されています。ErrorLogにはエラー情報が記録されます。CustomLogには転送要求に関する記録(アクセスログ)が記録されます。

    ErrorLog /usr/local/apache/logs/error_log  <--エラーログ
    CustomLog /usr/local/apache/logs/access_log common  <--アクセスログ
    



その後の追加設定



参考図書・サイト



トップへもどる


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