tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

apacheをソースからインストール+ちょこっとαでmoduleについてとかメモ

はじめに

ちょっと前に
さくらvpsの設定自分メモ - webサーバ(apache) - 入れて設定からの適当なドメインで適当なhtml表示してみる
で、yumapacheをインストールしましたが、せっかくなのでソースからもインストールしておくメモ

ダウンロードURLはこのへんから好きなものを使います

インストール

======== ダウンロード&解凍 ========
# cd /usr/local/src/
# wget http://ftp.kddilabs.jp/infosystems/apache//httpd/httpd-2.2.26.tar.gz

※ 解凍
# tar -zxvf httpd-2.2.26.tar.gz

======== configure ========
※ 移動してからconfigureで環境設定
# configureオプションについては↓で補足します
# cd httpd-2.2.26
# ./configure --prefix=/usr/local/apache2 \
--enable-cache \
--enable-disk-cache \
--enable-mem-cache \
--enable-logio \
--enable-headers \
--enable-ssl \
--enable-rewrite \
--enable-so

checking for chosen layout... Apache
checking for working mkdir -p... yes
checking build system type... x86_64-unknown-linux-gnu
・・・省略・・・
checking openssl/ssl.h presence... no
checking for openssl/ssl.h... no
no OpenSSL headers found
checking for SSL-C version... checking sslc.h usability... no
checking sslc.h presence... no
checking for sslc.h... no
no SSL-C headers found
configure: error: ...No recognized SSL/TLS toolkit detected

※エラーなのでOpenSSLを追加する
# sudo yum install openssl-devel

# ./configure --prefix=/usr/local/apache2 \
--enable-cache \
--enable-disk-cache \
--enable-mem-cache \
--enable-logio \
--enable-headers \
--enable-ssl \
--enable-rewrite \
--enable-so

======== make & make install ========
※ makeでコンパイル、インストールを行う
# make
# make install

======== 確認 ========
※ /usr/sbin/httpdのほうが立ち上がってると立ち上がらない
# ps aux | grep httpd
root      1151  0.0  0.2 177872  4304 ?        Ss   Mar20   0:21 /usr/sbin/httpd
apache    5065  0.0  0.1 177872  3220 ?        S    Mar23   0:00 /usr/sbin/httpd
apache    5066  0.0  0.1 177872  3260 ?        S    Mar23   0:00 /usr/sbin/httpd
apache    5067  0.0  0.1 177872  3260 ?        S    Mar23   0:00 /usr/sbin/httpd
apache    5068  0.0  0.1 177872  3260 ?        S    Mar23   0:00 /usr/sbin/httpd
apache    5069  0.0  0.1 177872  3260 ?        S    Mar23   0:00 /usr/sbin/httpd
apache    5070  0.0  0.1 177872  3200 ?        S    Mar23   0:00 /usr/sbin/httpd
apache    5071  0.0  0.1 177872  3244 ?        S    Mar23   0:00 /usr/sbin/httpd
apache    5072  0.0  0.1 177872  3220 ?        S    Mar23   0:00 /usr/sbin/httpd
apache    6682  0.0  0.1 177872  3196 ?        S    Mar24   0:00 /usr/sbin/httpd
root     14448  0.0  0.0 107468   924 pts/0    S+   04:05   0:00 grep httpd

※ エラーになる
# /usr/local/apache2/bin/apachectl start
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

※ /usr/sbin/httpdのほう落としてから再度立ち上げる
# apachectl stop
# /usr/local/apache2/bin/apachectl start
# ps aux | grep httpd
root     14460  2.5  0.1  56676  2776 ?        Ss   04:05   0:00 /usr/local/apache2/bin/httpd -k start
daemon   14461  0.0  0.0  56676  1744 ?        S    04:05   0:00 /usr/local/apache2/bin/httpd -k start
daemon   14462  0.0  0.0  56676  1744 ?        S    04:05   0:00 /usr/local/apache2/bin/httpd -k start
daemon   14463  0.0  0.0  56676  1744 ?        S    04:05   0:00 /usr/local/apache2/bin/httpd -k start
daemon   14464  0.0  0.0  56676  1744 ?        S    04:05   0:00 /usr/local/apache2/bin/httpd -k start
daemon   14465  0.0  0.0  56676  1744 ?        S    04:05   0:00 /usr/local/apache2/bin/httpd -k start
root     14467  0.0  0.0 107468   928 pts/0    S+   04:05   0:00 grep httpd

途中で「configure: error: ...No recognized SSL/TLS toolkit detected」となりましたが
こちらを参考にしてOpenSSLを追加してから再度実行したらうまく行きます。

ブラウザで確認

こちらも以前、
お名前.comで取得したドメインをさくらVPSで使う的なメモ
ドメインは取得して設定してあるので取得したドメインでアクセスしてみます
こんな感じで表示されればひとまずオッケー

以降はついでにconfigureオプションとmoduleについてメモっっておきます

configureオプションについて

指定の仕方

・組み込みたいmoduleを--enableオプションで指定する
・mod_logioを見込みたい場合、mod_を除いた「logio」を取って--enable-logioと指定する

今回追加したのmoduleの説明
オプション 説明
--prefix=PREFIX Apacheインストールフォルダのパスを指定
デフォルトは/usr/local/apache2
--enable-cache ドキュメントキャッシュ機能を有効にする
--enable-disk-cache ディスクキャッシュに対応させる
--enable-mem-cache メモリキャッシュに対応させる
--enable-logio 実際の送信転送量、受信転送量を access.logへ記録する
--enable-headers httpヘッダーのコントロールを有効にする
--enable-ssl SSL/TLSのサポートを有効にする
--enable-rewrite アクセスURLの書き換えや環境変数に応じたリダイレクトを可能にする
--enable-so DSO(Dynamic Shared Objects)モジュールを有効にする
staticリンクではなくダイナミックリンクにすることでhttpdのサイズを小さくできる

moduleについて

静的モジュールと動的モジュールについてはこんな感じ

  静的(static) 動的(dynamic)
追加方法 ソースからのインストール時に、
configureのオプションとして追加
DSO、apxsを用いて
モジュールソースをインストールする
httpd.confのLoadModuleディレクティブで指定する
特徴 Apache 本体にモジュールを組み込む方法
Apache が起動時に自動的に組み込まれる
httpd.conf ファイルにLoadModuleを設定しない
・不要なモジュールを取り除くためにはリコンパイルが必要
・起動時に動的に組み込む方法
コンパイルされたモジュールは modules ディレクトリにインストールされる
httpd.conf ファイルの LoadModuleディレクティブによる設定ができる
・再びコンパイルせずに自由に追加できる。
moduleの調べ方
※静的モジュールの確認方法
# apachectl -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

※ 静的+動的モジュールの確認
# apachectl -M
Loaded Modules:
 core_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 ・・・省略・・・
  disk_cache_module (shared)
 cgi_module (shared)
 version_module (shared)
Syntax OK

※ もしくはgrepなどでhttpd.confのLoadModuleディレクティブを確認
# grep -rn 'LoadModule' /etc/httpd/conf/httpd.conf
150:LoadModule auth_basic_module modules/mod_auth_basic.so
151:LoadModule auth_digest_module modules/mod_auth_digest.so
・・・省略・・・

参考サイト

proxyやsslのモジュールを使ってみる
http://www.atmarkit.co.jp/ait/articles/1107/29/news121.html

Apache2.2のconfigureオプション
http://solaris10.sakura.ne.jp/index.cgi?page=apache2.2-configure

Apache->インストール
http://www.slogical.co.jp/tech/apache_install.html

Apacheに組込まれているモジュール確認
http://d.hatena.ne.jp/jitsu102/20080524/1211608688

Apache に組み込む方法(静的と動的)
http://wiki.minaco.net/index.php?Apache%2F%E9%9D%99%E7%9A%84%E5%8B%95%E7%9A%84