Webサーバの構築_Apacheの設定

設定する内容

SuitePROの仮想専用サーバには初期状態で「Apache」というWebサーバプログラムがインストールされています。 Webサーバを構築する場合はApacheの設定を行ってください。

このマニュアルでは、例として以下のようなご利用形態を前提として記述しております。 Webサーバに設定する内容はお客様のご利用形態によって変わりますが、 オンラインマニュアルに記載されていない設定については弊社のサポート対象外となりますので、 この例と異なるご利用形態でお使いになる場合はApacheの設定方法について解説されている書籍・Webサイトなどをご参考に お客様にて設定ファイルの内容を書き換えてご利用ください。

  • 仮想専用サーバ上に http://www.example.com/ というアドレスのWebサーバを構築する。
  • 「www.example.com」というドメイン名で仮想専用サーバにアクセスするためのネームサーバ設定は完了している。

Apacheの設定手順

Apacheの設定手順は以下の通りです。

  1. サーバーにSSHで接続し、rootアカウントを使用してログインします。
  2. viなどのテキストエディタで /etc/httpd/conf/httpd.conf ファイルを開いて下さい。
    viで /etc/httpd/conf/httpd.conf ファイルを開くコマンドは以下の通りです。
    [root@localhost ~]# vi /etc/httpd/conf/httpd.conf
    						

    httpd.confファイルには多くの設定項目が書かれていますが、 ここでは最低限設定しておいた方がよい項目をご案内致します。

    KeepAliveの項目ではHTTPのキープアライブ機能を使用するかしないかを設定します。 デフォルトではOffとなっていますが、この状態だとOnの場合に比べレスポンスが悪くなりますのでOnに設定することをお勧めします。

    #
    # KeepAlive: Whether or not to allow persistent connections ...
    # one request per connection). Set to "Off" to deactivate.
    #
    KeepAlive On
    						

    prefork MPMの項目では同時に起動するプロセス数などを調整できます。 Fedora Core 3のApacheではServerLimitとMaxClientsの初期値が256に設定されており、 最大256個までhttpdプロセスを起動しようとしますがSuitePROでは同時に実行できるプロセス数の上限値がこれより低く設定されているため このままの設定では動作が不安定になることがあります。 お客様のご利用方法にもよりますが、これらの設定項目には128程度の値を設定していただくことをお勧め致します。

    # prefork MPM
    # StartServers: number of server processes to start
    # MinSpareServers: minimum number of server processes which ...
    # MaxSpareServers: maximum number of server processes which ...
    # ServerLimit: maximum value for MaxClients for the lifetime ...
    # MaxClients: maximum number of server processes allowed to start
    # MaxRequestsPerChild: maximum number of requests a server ...
    
    <IfModule prefork.c>
    StartServers       8
    MinSpareServers    5
    MaxSpareServers   20
    ServerLimit      128
    MaxClients       128
    MaxRequestsPerChild  4000
    <IfModule prefork.c>
    

    ServerAdminの項目にはWebサーバ管理者のメールアドレスを入力します。 デフォルトでは root@localhost となっていますので、お客様のメールアドレスに書き換えて下さい。 ここでは例として root@example.com というアドレスを設定しています。

    #
    # ServerAdmin: Your address, where problems with the server ...
    # e-mailed.  This address appears on some server-generated ...
    # as error documents.  e.g. admin@your-domain.com
    #
    ServerAdmin root@example.com
    						

    AddDefaultCharsetの項目には通常使用する文字コードが設定されています。 Fedora Core 3ではUTF-8が標準の文字コードとして使われているためこの項目にはUTF-8が設定されていますが、 この設定の場合HTMLファイルの文字コードがUTF-8で書かれていないと文字が化けてしまいます。

    UTF-8ではない文字コードで日本語の文字を記述する場合でも、 以下のように行頭に「#」を付けておくとこの設定をコメントアウト(無効化)して文字化けを防止することが出来ますので、 このように変更して頂くことをお勧め致します。

    # Specify a default charset for all pages sent out. This is
    # always a good idea and opens the door for future ...
    # of your web site, should you ever want it. Specifying it as
    # a default does little harm; as the standard dictates that a page
    # is in iso-8859-1 (latin1) unless specified otherwise i.e. you
    # are merely stating the obvious. There are also some security
    # reasons in browsers, related to javascript and URL parsing
    # which encourage you to always set a default char set.
    #
    #AddDefaultCharset UTF-8
    

    書き換えが終了したらファイルを保存してテキストエディタを終了して下さい。

  3. 以下のコマンドを実行し、Apacheを起動してください。
    [root@localhost ~]# service httpd start
    							
  4. ブラウザで http://www.example.com/ にアクセスしてみて下さい。 コンテンツが何も置かれていない場合、「Fedora Core Test Page」というタイトルが書かれたページが表示されます。 このページが表示されていれば正しくWebサーバが動作しています。
    ドメイン名を設定していない場合はドメイン名部分をIPアドレスに変えても表示させることが出来ます。
    デフォルトでは /var/www/html ディレクトリがドキュメントルートに設定されています。 このディレクトリに「index.html」というファイル名でトップページのHTMLファイルを置くと お客様のホームページが表示されるようになります。

自動起動の設定

Apacheを起動するとWebサーバとして動作するようになりますが、 そのままの状態ではOSを再起動するたびに手動でApacheを起動しなければなりません。

OSの再起動と同時にApacheを自動起動したい場合はコントロールパネルの「仮想専用サーバの起動/停止」メニューから 「サービス自動起動設定」を選択し、 httpdのチェックを「on」に変更して「サービス自動起動設定の変更」をクリックして下さい。

バーチャルドメイン設定

Apacheのバーチャルドメイン機能を使用すると、1つの仮想専用サーバ上でドメイン名が異なる複数のWebサイトを運用することが出来ます。
Apacheの設定を行う前にネームサーバで複数のドメインを使用するための設定を行っておく必要がありますので、 あらかじめ bindの設定 - バーチャルドメイン設定に記載されているバーチャルドメインの設定を行っておいて下さい。

以降の説明は、例として以下のようなご利用形態を前提として記述しています。

  • このページのApacheの設定手順に記載されている設定が完了しており、http://www.example.com/ というアドレスのWebサイトを使用することは出来る状態になっている。
  • 「homepage.example.com」というドメイン名で仮想専用サーバにアクセスするためのネームサーバ設定は完了している。

Apacheのバーチャルドメイン設定の手順は以下の通りです。

  1. サーバーにSSHで接続し、rootアカウントを使用してログインします。
  2. viなどのテキストエディタで /etc/httpd/conf/httpd.conf ファイルを開いて下さい。 viで /etc/httpd/conf/httpd.conf ファイルを開くコマンドは以下の通りです。
    [root@localhost ~]# vi /etc/httpd/conf/httpd.conf
    

    ファイルの末尾近くにバーチャルドメインの設定項目があります。 ここで「NameVirtualHost *:80」と書かれている行があり、初期状態では行頭に「#」が付けられて無効な状態になっています。 名前ベースのバーチャルドメイン機能を使用するため、行頭の「#」を削除して下さい。

    #
    # Use name-based virtual hosting.
    #
    NameVirtualHost *:80  (←行頭にある # を削除)
    #
    # NOTE: NameVirtualHost cannot be used without a port specifier
    # (e.g. :80) if mod_ssl is being used, due to the nature of the
    # SSL protocol.
    #
    						
    ファイルの末尾に各バーチャルドメインの設定を追加します。 緑色で書かれている内容を追加して下さい。
    名前ベースのバーチャルドメイン機能を使用する場合、 追加する hostname.example.com だけではなくもともと使用している www.example.com もバーチャルドメインとして設定する必要があります。
    #
    # VirtualHost example:
    # Almost any Apache directive may go into a VirtualHost container.
    # The first VirtualHost section is used for requests without a known
    # server name.
    #
    #
    #    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 *:80>
        ServerAdmin root@example.com
        DocumentRoot /var/www/html
        ServerName www.example.com
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerAdmin root@example.com
        DocumentRoot /var/www/homepage.example.com
        ServerName homepage.example.com
    </VirtualHost>
    						
    						

    書き換えが終了したらファイルを保存してテキストエディタを終了して下さい。

  3. http://homepage.example.com/ のコンテンツを置くディレクトリを作成し、 ディレクトリのオーナーをFTP接続に使用するユーザーアカウントに変更します。 ここでは例として「nttpc」というユーザアカウントを使用してFTP接続を行い、コンテンツをアップロードすることにします。 以下のコマンドを順番に実行して下さい。
  4. [root@localhost ~]# mkdir /var/www/homepage.example.com
    [root@localhost ~]# chown nttpc /var/www/homepage.example.com
    						
  5. 以下のコマンドを実行し、書き換えた内容を有効にして下さい。
    [root@localhost ~]# service httpd reload
    							
  6. ユーザー用アカウント(例ではnttpc)でサーバーにFTP接続して、 /var/www/homepage.example.com ディレクトリに http://homepage.example.com/ 用のコンテンツをアップロードして下さい。 トップページのファイル名は index.html にして下さい。
  7. ブラウザで http://www.example.com/ と http://homepage.example.com/ にアクセスしてみて下さい。 それぞれ別々のコンテンツが表示されていれば、バーチャルドメインが正しく動作しています。

SSL設定

SSLはApacheを起動した時点で使用可能になっています。 /var/www/html ディレクトリにあるコンテンツをSSLでも表示させることが出来るようになっていますので Apacheを起動させて以下のアドレスにアクセスすればアップロードしたコンテンツがSSLで表示されます。

https://(ドメイン名またはIPアドレス)/

たとえば、Webサーバ用のドメイン名として www.example.com が設定されている場合は以下のアドレスにアクセスして下さい。

https://www.example.com/

SSLの設定は /etc/httpd/conf.d/ssl.conf ファイルに書かれています。 SSLの設定を変更する場合はこのファイルの内容を書き換え、設定ファイルの再読み込みを行って下さい。

SSLは仕様上同一のポートで複数のバーチャルドメインを使用することが出来ません。 通常のポート番号(443番)で複数のドメイン名を使用してSSLのWebを運用することは出来ませんので、ご注意下さい。
初期状態ではFedora Core 3に標準で付いているセルフサインの証明書がインストールされているためアクセスした時に警告が表示されます。 警告が表示されないようにするためにはブラウザが対応している信頼された認証局に申請を行い、 独自の証明書を作成してサーバにインストールする必要があります。

参考として、主な認証局サービスをいくつかご案内致します。 ご利用になる認証局についての制限は特にございませんので、ここで挙げられていない認証局で作成された証明書を使用することも可能です。 証明書の作成費用など、サービスの詳細につきましてはそれぞれの認証局に直接お問い合わせ下さい。

証明書の作成・インストールはお客様が証明書を申請する認証局で指定されている手順に従ってお客様にて行って下さい。 弊社での設定・申請代行は承っておりませんので、ご了承下さい。

[ SSLを使わない場合の設定 ]

SSLを使用したくない場合の設定変更手順は以下の通りです。

  1. サーバーにSSHで接続し、rootアカウントを使用してログインします。
  2. viなどのテキストエディタで /etc/httpd/conf.d/ssl.conf ファイルを開いて下さい。 viで /etc/httpd/conf/httpd.conf ファイルを開くコマンドは以下の通りです。
    [root@localhost ~]# vi /etc/httpd/conf.d/ssl.conf
    
    「Listen 443」と記述されている行と「SSLEngine on」と記述されている行の先頭に「#」を付けてコメントアウトして下さい。
    #
    # When we also provide SSL we have to listen to the
    # standard HTTP port (see above) and to the HTTPS port
    #
    #Listen 443
    
    #   SSL Engine Switch:
    #   Enable/Disable SSL for this virtual host.
    #SSLEngine on
    
    書き換えが終了したらファイルを保存してテキストエディタを終了して下さい。
  3. 以下のコマンドを実行し、書き換えた内容を有効にして下さい。
    [root@localhost ~]# service httpd reload