(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をスレッドモードで動かすためのオプションです。
設定をカスタマイズしたい方は、公式サイトの日本語ドキュメントを参考にしてください。
そしてコンパイル&インストールします。
本来だとここで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
です。
今回は最低限の設定しか解説していないので、記事中で紹介した日本語ドキュメントのサイトなどを参考にしながら各自の環境にあわせてカスタマイズしてください。
|