Webサーバの構築_Apacheの設定

設定する内容

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

CentOS4提供のApacheはApache2.0でしたが、CentOS5のApacheは、Apache2.2がインストール されております。バージョンが上がった事により、様々な変更が行われておりますのでこの点ご注意ください。

詳細につきましては、Apacheの公式サイトでご確認ください。
Apache Software Foundation http://www.apache.org/

このマニュアルでは、例として以下のようなご利用形態を前提として記述しております。 実際に設定いただく際には、ドメイン名、IPアドレスはお客さまのものに置き換えて設定を行ってください。

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

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

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
                  
    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
                  
    ServerNameの項目には、ホスト名とポートを設定します。 デフォルトでは www.example.com:80 となっていますので、行頭の「#」を削除して、お客様のホスト名に書き換えてください。
    #
    # ServerName gives the name and port that the server uses to identify itself.
    # This can often be determined automatically, but we recommend you specify
    # it explicitly to prevent problems during startup.
    #
    # If this is not set to valid DNS name for your host, server-generated
    # redirections will not work.  See also the UseCanonicalName directive.
    #
    # If your host doesn't have a registered DNS name, enter its IP address here.
    # You will have to access it by its address anyway, and this will make
    # redirections work in a sensible way.
    #
    ServerName www.example.com:80    (←行頭にある # を削除)
                  
    AddDefaultCharsetの項目には通常使用する文字コードが設定されています。 CentOS5では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/ にアクセスしてみてください。 コンテンツが何も置かれていない場合、「Apache 2 Test Page powered by CentOS」というタイトルが書かれ たページが表示されます。 このページが表示されていれば正しくWebサーバが動作しています。

    SuitePROでは、初期状態でドメイン名を設定していない場合はドメイン名部分をIPアドレスに変えても表示させることが出来ます。
    デフォルトでは /var/www/html ディレクトリがドキュメントルートに設定されています。 このディレクトリに「index.html」というファイル名でトップページのHTMLファイルを置くと お客様のホームページが表示されるようになります。

Webサーバの同時接続数設定

prefork MPMの項目では同時に起動するプロセス数などを調整できます。

CentOS5のApache2.2では、Apacheのプロセスの設定(prefork MPM)を以下2つの設定ファイルで管理しております。

/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/swtune.conf


CentOS5の初期値のままではApacheの動作が不安定になる場合がございますので、 弊社にてServerLimitとMaxClientsの値を 128 に設定してご提供しております。 ※初期値については、下記をご参照ください。

なお、設定されている値については、お客さま側で任意の値を設定してご利用いただくことが できます。ただし、SuitePROでは同時に実行できるプロセス数の上限値が192に制限されております。 prefork MPMの設定は、/etc/httpd/conf/httpd.conf、/etc/httpd/conf.d/swtune.confの両方に 記述する必要がございますので、この点ご注意ください。

/etc/httpd/conf/httpd.conf

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves

StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      128  (初期設定値 256)
MaxClients       128  (初期設定値 256)
MaxRequestsPerChild  4000
    
/etc/httpd/conf.d/swtune.conf
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves

StartServers       8  (初期設定値  1)
MinSpareServers    5  (初期設定値  1)
MaxSpareServers   20  (初期設定値  5)
ServerLimit      128  (初期設定値 10)
MaxClients       128  (初期設定値 10)
MaxRequestsPerChild  4000
    

自動起動の設定

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

OSの再起動と同時に Apache を自動起動したい場合は、chkconfig で httpd をon に設定してください。 chkconfig の設定方法は、オンラインマニュアル内 サービスの自動起動設定に掲載しておりますのでご参照ください。

バーチャルドメイン設定

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接続を行い、コンテンツをアップロードすることにします。 以下のコマンドを順番に実行してください。
      [root@localhost ~]# mkdir /var/www/homepage.example.com
      [root@localhost ~]# chown nttpc /var/www/homepage.example.com
      
  4. 以下のコマンドを実行し、書き換えた内容を有効にしてください。
      [root@localhost ~]# service httpd reload
      
  5. ユーザー用アカウント(例ではnttpc)でサーバにFTP接続して、 /var/www/homepage.example.com ディレクトリに http://homepage.example.com/ 用のコンテンツをアップロードしてください。 トップページのファイル名は index.html にしてください。
  6. ブラウザで 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を運用することは出来ませんので、ご注意ください。
初期状態ではCentOS5に標準で付いているセルフサインの証明書がインストールされているためアクセスした時に警告が表示されます。 警告が表示されないようにするためにはブラウザが対応している信頼された認証局に申請を行い、 独自の証明書を作成してサーバにインストールする必要があります。

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

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

[ 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
    # the HTTPS port in addition.
    #
        #Listen 443
        
    #   SSL Engine Switch:
    #   Enable/Disable SSL for this virtual host.
        #SSLEngine on
        
    書き換えが終了したらファイルを保存してテキストエディタを終了してください。
  3. 以下のコマンドを実行し、書き換えた内容を有効にしてください。
    [root@localhost ~]# service httpd reload