Linux

Apache2 + PHP4 のインストール

(2003/12/11 作成)

Apache2 + PHP4 をインストールし、ついでにApache2でmod_deflateモジュールを有効にする方法について解説します。
mod_deflateはHTMLファイルなどをサーバー側で圧縮してから送信するモジュールで、apache1系でのmod_gzipに相当します 。


ファイルの入手先

ここでは、2003年12月現在の最新版であるApache 2.0.48 とPHP4.3.4を例にして説明します。
各ファイルは次のサイトからダウンロードしてください。

Apache2 (httpd-2.0.48.tar.gz)

http://www.apache.jp/misc/download.html

PHP4 (php-4.3.4.tar.gz)

http://www.php.net/downloads.php


Apache2のビルド

まず、apache2のソースを解凍し、解凍先ディレクトリに移動します。

$ tar xzvf httpd-2.0.48.tar.gz -C /usr/local/src
$ cd /usr/local/src/httpd-2.0.48

そしてコンフィグ設定をします。

$ ./configure --enable-so --enable-shared --with-mpm=worker --enable-deflate --enable-headers

ちなみに--with-mpm=workerはApache2をスレッドモードで動かすためのオプションです。
設定をカスタマイズしたい方は、公式サイトの日本語ドキュメントを参考にしてください。

そしてコンパイル&インストールします。

$ make
# make install

本来だとここでApache2の設定ファイルの編集をするのですが、それは後回しにしてPHPのインストールに進みます。


PHPのインストール

まずはソースの解凍。

$ tar -xzvf php-4.3.4.tar.gz -C /usr/local/src
$ cd /usr/local/src/php-4.3.4


次にコンフィグの設定ですが、PHPはこれがややこしくて、設定による動作環境の違いが様々な混乱をユーザーに引き起こ しています。私の環境では次のように指定しているので参考にしてくください。

$ ./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--enable-roxen-zts \
--enable-zend-multibyte \
--with-pgsql \
--with-mysql \
--enable-track-vars \
--enable-mbstring \
--enable-mbregex \
--with-gd \
--with-png-dir=shared \
--with-jpeg-dir=shared \
--with-zlib-dir=shared \
--with-zlib
        

説明

--with-apxs2 Apache2の動的モジュールのインストール先
--enable-roxen-zts Apache2のコンパイル時に--with-mpm=workerを指定してスレッドモードにした場合にはこれが必要です。
--enable-zend-multibyte SJISでPHPスクリプトを記述できるようになります。
--with-pgsql PostgreSQLのサポート。PostgreSQLがインストールされていなければ不要。(というか、エラーになる)
--with-mysql MySQLのサポート。MySQLがインストールされていなければ不要。(というか、エラーになる)
--enable-track-vars フォームからの入力とCookieからの入力が簡単な記述で受け取れるようになります。
--enable-mbstring マルチバイト文字列を有効にする。PHPで日本語を扱うなら必須。
--enable-mbregex マルチバイト正規表現を有効にする。PHPで日本語を扱うなら必須。
--with-gd 画像作成・編集機能を有効にする。
--with-png-dir libpng(PNG画像作成用ライブラリ)の場所を指定
--with-jpeg-dir libjpeg(JPEG画像作成用ライブラリ)の場所を指定
--with-zlib-dir zlibの場所を指定
--with-zlib zlibを有効にする。PNG画像作成に必要

--with-gdはGDライブラリとがサーバーにインストールされていないとエラーになりますし、
--with-pgsqlや--with-mysqlについても同様です。

--with-png-dirや--with-jpeg-dir は、Red Hat Linux 8 の場合だとsharedでいいのですが、
他のディストリビューションやインストール環境によっては /usr/local/lib または
=/usr/local/src にする場合もあるようです。

その他のオプションについてはここ を参照してください。

 

そしてコンパイル、インストールします。

$ make
# make install
# cp php.ini-dist /usr/local/lib/php.ini

 


Apache2設定ファイルの修正

/usr/local/apache2/conf/httpd.conf を修正します。

まずPHPモジュールを有効にするため、次の行を追加してください。

LoadModule php4_module modules/libphp4.so

AddType application/x-httpd-php .php

mod_deflate用に次の内容を追加してください。

SetEnv gzip-only-text/html 1
SetOutputFilter DEFLATE
DeflateCompressionLevel 8
AddOutputFilterByType DEFLATE text/html text/plain text/xml

<Location />
  # Insert filter
  SetOutputFilter DEFLATE

  # Netscape 4.x has some problems...
  BrowserMatch ^Mozilla/4 gzip-only-text/html

  # Netscape 4.06-4.08 have some more problems
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
    
  # MSIE masquerades as Netscape, but it is fine
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

  # Don't compress images
  SetEnvIfNoCase Request_URI \

  \.(?:gif|jpe?g|png)$ no-gzip dont-vary

  # Make sure proxies don't deliver the wrong content
  Header append Vary User-Agent env=!dont-vary
</Location>
        

追加する場所はどこでもいい、わけではないので、似たような記述があるところを探して適当に挿入してください。
(mod_deflateの設定についてもっと詳しく知りたい方は ここを参考にしてください。)

次に、Apache2はデフォルトの言語コードが欧文ラテン文字になっていて、そのままだと日本語ページが文字化けすることがあるので、これを修正します。

LanguagePriority(言語の優先順位)で ja を一番最初にもってきてます。

(修正前)
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW

(修正後)
LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW


この少し下の方にAddDefaultCharset(デフォルトの表示文字コード)があるので修正します。

(修正前)
AddDefaultCharset ISO-8859-1

(修正後)
AddDefaultCharset off



PHP設定ファイルの修正

/usr/local/lib/php.iniを修正します。

日本語処理で文字化けしないようにするため、mbstring.languageの頭のセミコロンを取って有効にします。

(修正前)
;mbstring.language = Japanese

(修正後)
mbstring.language = Japanese


また、PHPの出力もApache2でのmod_deflateと同様に圧縮して送信したい場合は、zlib.output_compressionをオンにします。

(修正前)
zlib.output_compression = Off

zlib.output_compression = On



Apacheサーバの起動

/usr/local/apache2/bin/apachectl start


起動スクリプト ( /etc/rc.d/rc.local )に上の文を追加しておくとサーバー起動時に自動実行するので便利です。

尚、停止する時は

/usr/local/apache2/bin/apachectl stop

リスタートする時は

/usr/local/apache2/bin/apachectl restart

です。



今回は最低限の設定しか解説していないので、記事中で紹介した日本語ドキュメントのサイトなどを参考にしながら各自の環境にあわせてカスタマイズしてください。

 


このサイトおよびこのサイトからリンクされているWEBページにあるソフトウェアあるいは情報が原因で生じたいかなる損害に対しても、このサイトの管理者、リンク先サイトの関係者は一切謝罪、補償をいたしません。
このサイトにある情報については、正しい情報であるよう努力していますが、そのことは正しさを保証するものではありません。
サイト内の情報は通告なく変更されます。インストール、改造、修正、その他、自己の行動は自責にてお願いいたします。