Apacheの導入

Apache のインストール

1.Apacheのインストール

UNIX版でプログラムをインストールするには、にソースをコンパイルしてインストールします。Linuxでは、RPMパッケージとして入手できるものもあります。ここでは、ソースをコンパイルしてインストールする方法を説明します。

Webサーバに対する理解を深めよう

URL(Universal Resource Locator)は、いくつかのセクションによって構成されています。たとえば、http://www.rfs.jp/のようなURLは3つの部位に分けられます。

<メソッド>://<ホスト>/<絶対パスURL>

上の例では、メソッドはhttp、ホストはwww.rfs.jpを、絶対パスURLは、そのホストのトップディレクトリとなります。このアドレスをブラウザに入力してEnterを押すと、そのリクエストがいくつかのサーバを経由して目当てのWebサーバにたどり着きます。次に、WebサーバによってURLがファイル名に変換され、そのファイルが送り返されることになります。
上記以外にも、CGIやデータベースと連携して、高度な処理をした後にリクエストを送り返すこともありますが、それはまたの機会に説明します。

Apacheのダウンロード

インストールの準備として、上記のサイトから最新のバージョンをダウンロードしましょう。RedHat系Linuxはディストリビューションの公式ページからSRPMSをダウンロードします。

Apacheのコンパイル

Apacheを上記サイトからダウンロードしたら、設定作業用のディレクトリ(今回は「/usr/src」)にコピーし、下記の操作でインストールします。

圧縮ファイルの解凍
# tar xvfz apache_<varsion>.tar.gz
.....(ファイルが解凍される)

展開されたディレクトリに移動
# cd apache_<varsion>/

モジュールを追加する必要がない場合は、設定を行うshellスクリプトを実行します
# sh ./configure
.....

設定が完了したらコンパイルを行います
# make
.....

rootとしてログイン
# su

最後にインストール
# make install

Apacheの設定ファイル

インストール後、「<ソースディレクトリ>/apache_<viersion>/src」に「httpd」と呼ばれるバイナリファイルが作成されます。
次に、コンフィギュレーション(設定)ファイルを編集します。デフォルトでは、これらのファイルは「/usr/local/apache/conf」ディレクトリに、srm.conf-dist、access.conf-dist、httpd.conf-distが作成されます。これらのファイル名をそれぞれsrm.conf、access.conf、httpd.confとしてコピーし、必要に応じてこれらのファイルを編集します。

サーバの停止と起動

設定が終われば、あとは起動の確認です。サーバを起動するためには、単にhttpdを実行するだけです。このとき、httpd.confが読み込まれるので、もしこのファイルがどこか他にあれば、-f の引数で本当のロケーションを与えます。

# /usr/local/apache/bin/apachectl start

問題なくサーバが起動されれば、即時にコマンドプロンプトに戻ります。サーバの初期化の間になにか不都合が生じた場合、画面にエラーメッセージが表示されます。

Apacheを停止させる方法は、起動方法とよく似ています。

# /usr/local/apache/bin/apachectl stop

再起動は次のとおりです。

# /usr/local/apache/bin/apachectl restart

Apache起動の確認

ブラウザを立ち上げて、URLにlocalhostか、自分のサーバのIPアドレスを入力してEnterキーを押します。Apacheが動いていれば、デフォルトの画面が表示されます。

起動スクリプトの作成

サーバを再起動させるたびにApacheを手動で起動させなくても済むように、Apacheサーバの起動スクリプトを/etc/rc.d/rc.httpdのファイル名で作成してみましょう。

# vi /etc/rc.d/rc.httpd
#! /bin/sh
/usr/local/apache/bin/apachectl start

作成した起動スクリプトに実行権をつけます。

# chmod 755 /etc/rc.d/rc.httpd

次に、/etc/rc.d/rc.localへ、rc.httpdを起動するスクリプトを追加。

if [ -f /etc/rc.d/rc.httpd ]; then
/etc/rc.d/rc.httpd; fi;

次はいよいよApacheの設定にチャレンジです。


2.httpd.conf の設定

ウェブサーバの主要な機能は、ブラウザがリクエストしたURLに該当するファイルを送信することです。リクエストがHTMLではなくCGIプログラムの場合は、プログラムの内容を表示する代わりにCGIプログラムを実行して、その出力を送信します。

ウェブサーバの設定は複雑な面もありますが、必要最低限の設定は実はそれほど多くありません。最初にHTMLファイルを表示できるように設定し、あとからCGIプログラムの起動やそのほかさまざまな機能を設定していくのも手です。

指示子について

Apacheの設定は、「httpd.conf」というテキスト形式の設定ファイルで行います。サーバの環境によって設定ファイルの置かれている場所が違いますから、正しい場所がわからないときは、サーバ管理者に聞きましょう。

Apache の設定ファイルは指示子とコメントで成り立っています。

指示子
指示子はウェブサーバの動作を指定するコマンドを設定します。
コメント
コメントは不要な指示子をコメントアウトしたり、注釈を記述するのに便利です。

指示子の記述方法

指示子は次のような形式になっています。

<指示子> 引数 引数

ウェブサーバのルートディレクトリの設定を例にすると、以下のような記述方法になります。指示子と引数の間はスペースかタブで区切ります。

ServerRoot   /usr/local/apache

Apache が自動作成するデフォルトの設定ファイルでは、指示子の頭文字が大文字で、それに小文字が続いていますが、これは見栄えを考慮したもので、実際には大文字・小文字の区別はありません。以下のどれでも正しく認識されます。

ServerRoot    /usr/local/apache
SERVERROOT    /usr/local/apache
serverroot    /usr/local/apache

引数に空白文字が含まれている場合は、引数をダブルクォーテーション( " )の引用符で囲む必要があります。

BrowserMatch "RealPlayer 4\.0"
force-response-1.0

コメント

指示子を削除したいときは、次のようにシャープ記号( # )でコメントアウトします。

# ServerRoot   /usr/local/apache

コンテナ指示子

指示子には特殊な使い方があります。HTMLのタグのように前タグと終わりタグで指示子を囲むことができます。コンテナタグの中で設定した指示子は、Apache全体には影響されません。タグで指定したサーバ内のファイルやディレクトリだけに適用されます。

たとえば、任意のディレクトリのみに設定を行いたい場合、<Directory>タグを使って次のように設定します。

#
CGIを実行させたいディレクトリ領域に、オプション「ExecCGI」を追加
<Directory "/home/httpd/cgi-bin">
    Options Indexes FollowSymLinks ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

これで「cgi-bin」ディレクトリとそのサブディレクトリに設定が反映されます。

コンテナタグの中にさらにコンテナタグをネストすることができます。タグをネストする場合は、インデントを使って見栄えをよくしたほうがいいでしょう。

<VirtualHost 123.123.123.12>
    ServerName    www.domain.co.jp
    DocumentRoot    /home/httpd/ssl/

    <Location /client>
        DirectoryIndex   
secound.html
    </Location>

</VirtualHost>

標準的な設定

Apacheの設定は /usr/local/apache/conf (Redhat系:/etc/httpd/conf) という設定用ディレクトリの中の「httpd.conf」で行います。特別な使い方やチューンナップをしないなら、以下の行を確認するだけで正常に動作します。

  • 管理者のメールアドレス
    ServerAdmin you@domain.co.jp
  • confやlogディレクトリを格納するディレクトリ
    ServerRoot /usr/local/apache
  • エラーログ・アクセスログの出力ファイル
    ErrorLog logs/error_log
    TransferLog logs/access_log
  • サーバのプロセス番号を記録するファイル
    PidFile /var/run/httpd.pid
  • DNSに登録されたサーバ名
    ServerName www.domain.co.jp
  • HTMLファイルを置くルートディレクトリ
    DocumentRoot "/home/httpd/html"

Apacheの設定用ディレクトリにはhttpd.conf以外にも、他の設定ファイルがあります。srm.conf、access.confのことですが、これらはApacheの古いバージョン用ファイルで、最新のApacheには必要ありません。magicとmime.typeは、Apacheを実行するために編集することはめったにありません。

設定用ディレクトリには以下の設定ファイルがあります。

  • httpd.conf
  • srm.conf
  • access.conf
  • mime.type
  • magic

3.停止と再起動

Apacheの停止と再起動

Apacheは最初に起動された親プロセスと、クライアントから要求があるたびに生まれる子プロセスによって処理をこなします。通常、シグナルは親プロセスに送信します。親プロセスに送信することができるシグナルはTERM、HUP、USR1 です。

親プロセスにシグナルを送信します。

# kill -TERM 'cat /var/run/httpd.pid'

入力の結果を読むことができます。

# tail -f /var/log/httpd/error_log

Apache 1.3 からは、Apache を起動、停止、再起動するapachectlスクリプトがあります。

TERM シグナル: 停止

親プロセスに TERMシグナルを送信すると、数秒後に子プロセスが完全に終了し、それから親プロセスが終了します。

HUP シグナル: 再起動

親プロセスに HUP シグナルを送信すると、TERMシグナルのように子プロセスを終了するが、親プロセスは終了しません。親プロセスは設定ファイルを再読み込みして、ログファイルを再び開きます。それから、新しい子プロセスを生んでリクエストの受信を続行します。

※再起動したときに設定ファイルにエラーがあれば、親プロセスは再起動しないで、エラーを出して終了します。これを避けるためには、以下を参考にしてください。

USR1 シグナル: 完全再起動

USR1 シグナルは、親プロセスに子を終了させるように通知します。親プロセスは設定ファイルを再読み込みし、ログファイルを再び開きます。

このコードは常に、MaxClientsMinSpareServersMaxSpareServersStartServersに関連付けられています。

古いログについてなにかを行う前に、USR1シグナルを送った後、間を置くことをお勧めします。例えばヒットのほとんどが、低いバンド幅のユーザのために10 分以内になっていれば、古いログについてなにかを行う前に 15 分待つことができます。


4.ApacheのRPMインストール

RPMインストール

RedHad系(Vine,Turbo)のLinuxはRPMでアプリケーションをインストールできるので、ご利用のデストリビューションサイトからRPMファイルをダウンロードしてください。

Apacheのダウンロード

RPMはインストール対象のアプリケーションが既にインストール済みか、確認することができます。

rpm -q httpd

既にインストール済みの場合は、下記のようにそのバージョンも合わせて出力されます。

httpd-2.0.40-21

RPMをインストール

ダウンロードしたRPMのディレクトリに移動し、下記のコマンドでインストールします。

rmp - ivh apache-****.i386.rpm


Apacheのインストール

次に、サーバのためのコンフィギュレーションファイルを編集します。デフォルトでは、これらのファイルは/etc/http/confディレクトリに、srm.conf、access.conf、httpd.confが作成されていますから、これらのファイル名のバックアップを取った後、必要に応じて設定ファイルを編集します。

デフォルトのインストール場所
  • /etc/http/conf/
    httpd.conf,srm.conf...
  • /usr/sbin/ httpd
  • /var/log/httpd/error_log,
    access_log, referer_log, agent_log
  • /var/run/ httpd.pid, httpd.lock

Apacheの停止と起動

サーバを起動するためには、下記のようにserviceコマンドを使ってhttpdを実行します。

service httpd start

もしサーバの起動がOKなら、サーバに接続するためにブラウザを使い、ドキュメントを読むことができます。

Apacheの終了

Apacheを終了させるには以下のようなコマンドを使用します。

service httpd stop

関連記事