ホームページをインターネットで公開するとき、ftp で ISP で指定された場所に html 文章などのファイルを置くとと簡単に公開することができますが、それは裏で Web Server と言うプログラムが動いているからなのです。世の中には商用として Web Server は数ありますが、この Apache は GNU版として無償なのです。しかもよくできている! 「この本」 「ここで買う」
Hyper Text Transfer Protocol = HTTPといい、例えば IE(クライアント) から http://www.hoge.com と打った場合、Web Server はアクセス要求のあったクライアントに対し、"index.htm" ファイルを送るよぉ〜っていい、クライアントはその "indexhtml."を受け取り表示手順のことを乱暴ですがプロトコル=手順といいます。実際のところ普通の人は、HTTPの手順など知らず気ままにネットサーフィンなんかしていますが、この方法さえ判れば簡単に、あるサイトが更新されたとか、動画のファイルが存在しているなどわかります。他のメール(SMTP)や、ファイル転送(FTP)なども手順は違いますが、プロトコルに従ってアクセスすれば簡単に相手とお話することができるのです。
1.Apache2本体のダウンロードと、そのファイルを展開します。
% cd /opt/local/src
% wget http://www.apache.jp/dist/httpd/httpd-2.0.39.tar.gz
% gzip -cd httpd-2.0.39.tar.gz | tar xf -
% cd httpd-2.0.392.DSO化を行うべきコンパイルオプションと、インストール先ディレクトリを指定します。
% env CFLAGS=-O3 \
./configure --prefix=/opt/local/apache2 \
--enable-module=so \
--with-mpm=worker \ ※
--enable-cache \
--enable-disk-cache \
--enable-mem-cache \
--enable-file-cache
% make※.MPM(マルチ・プロセッシング・モジュール)は、Apache2 からの実装でプロセス制御を、スレッド化、リクエストの細分化等の処理を行ってくれます。但し、デフォルト値は prefork(非スレッド)となっており、旧Apache と同じ動作を行う様にコンパイルされます。私の環境では prechild のコンパイルがエラー(socket.h の互換性)となってしまいました。
MPM名 意味 prefork デフォルト:安定性や古いソフトウェアとの互換性を必要とするオプション(スレッド非対応) perchild 異なるホストを異なるユーザ IDで動作させるオプション(スレッド対応) worker 非常に大きなスケーラビリティを必要とした場合のオプション(スレッド対応) 3.インストールを行います。インストールに失敗した場合は、問題点を指摘してくれますので指示通り最初から進めてください
% su
# make install4.Apache の httpd.conf 内容を設定する。
# vi /opt/local/apache/conf/httpd.conf
Listen 80
ServerName www
User nobody
Group #-1 → nobody※.MPM の動作は httpd.conf 中の <IfModule MPM名.c>セクションパラメタ値によって動作を変える事ができます。
パラメタ 意味 StartServers Apache起動時のサーバプロセス数 MaxClients クライアントからの最大同時接続数 MinSpareThreads スペアとして待機しているスレッドの最小数 MaxSpareThreads スペアとして待機しているスレッドの最大数 ThreadsPerChild 各サーバプロセスがコンスタントに起動するスレッド数 MaxRequestsPerChild サーバプロセスが処理するリクエストの最大数 5.Apache の起動を行います。
# /opt/local/apache2/bin/apachectl start
6.マシン起動時に自動的に Apache を起動する。
# cd /etc/init.d
# vi apache2
# chmod +x apache2
# ln -s /etc/init.d/apache2 /etc/rc3.d/S50apache2
# ln -s /etc/init.d/apache2 /etc/rc3.d/K98apache27.Apache のコンパイル情報を見る方法・・・
# /opt/local/apache2/bin/httpd -l
core.c
mod_access.c
mod_auth.c
mod_file_cache.c
mod_cache.c
mod_disk_cache.c
mod_mem_cache.c
mod_include.c
mod_log_config.c
mod_env.c
mod_setenvif.c
worker.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_cgid.c
mod_negotiation.c
mod_dir.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_so.c