Apache

Apache
Linux用WWWサーバの代名詞。
apache2.4からは設定方法が色々と変更されているので注意。

インストール

1. 前準備
ソースから入れる前にpkgconifgを統一しておく。
他の場合でもやった方がよさそうだが、書くのが面倒くさいので省略。
(Linux入れたら、とりあえずLAMP構築するだろうからここだけで大丈夫だべ)

# cd /usr/local/lib64
# ln -s /usr/lib64/pkgconfig .
# cd /usr/local/lib
# mkdir /usr/lib/pkgconfig
# ln -s /usr/lib/pkgconfig .

後は、https通信用にOpenSSLも入れておく。


2. APRのビルド・インストール
apacheのソースと一緒にビルドする方法もあるらしいが、
自分の環境では上手くいかなかったので別々にビルドする -> 一括ビルドも出来た

# tar zxvf apr-1.4.6.tar.gz
# cd apr-1.4.6
# ./configure --prefix=/usr/local/apr
# make
# make test
# make install



3. APR-Utilのビルド・インストール

# tar zxvf apr-util-1.5.1.tar.gz
# cd apr-util-1.5.1
# ./configure --with-apr=/usr/local/apr --prefix=/usr/local/apr-util
# make
# make test
# make install



4. Apacheのビルド・インストール
initの名前を“httpd”にするとyumとかで入れた物と被ってエラーになる場合がある。
よって、今回は“apache”という名前にしてインストールする。
PCREがまだ入ってない場合は、apacheのソースをビルドする前に入れておく事。

# tar zxvf httpd-2.4.3.tar.gz
# cd httpd-2.4.3
# vi config

 
※全部一行で書く

--prefix=/usr/local/apache
--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-ssl=/usr/local/openssl --with-pcre=/usr/local/pcre
--enable-ssl --enable-suexec --enable-rewrite --enable-auth-digest --enable-dav --enable-so
# ./configure `cat ./config`
# make
# make install



5. aprとapacheの一括ビルド

いつの間にか、ポータブルランタイムとapacheの一括ビルドが出来るようになっていた。
Apache PRPから、apr / apr-iconv / apr-utilをダウンロードし、
それぞれを下記の様に配置すれば、apacheと同時にビルドする事が出来る。
一括ビルドを行う時は./configureに「--with-included-apr」を付与して、srclib内を参照するようにする。

httpd-2.4.**/srclib/apr
httpd-2.4.**/srclib/apr-iconv
httpd-2.4.**/srclib/apr-util


設定

I. apacheスクリプトのコピー

# cp ${Apache_SrcDIR}/build/rpm/httpd.init /etc/init.d/apache
# chmod 755 /etc/init.d/apache
# ln -s /etc/init.d/apache /etc/init.d/httpd
# ln -s ../init.d/apache /etc/rc3.d/S96apache

 
systemdの場合は次のファイルを作成する

# vi /usr/lib/systemd/system/apache.service
# echo 'd /var/run/apache 755 root root -' > /usr/lib/tmpfiles.d/apache.conf
# systemctl enable apache
# cat /usr/lib/systemd/system/apache.service
---
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:httpd(8)
Documentation=man:apachectl(8)

[Service]
Type=simple
PIDFile=/var/run/apache/httpd.pid
Environment=CONFIG=/usr/local/apache/conf/httpd.conf
ExecStart=/usr/local/apache/bin/httpd -f ${CONFIG} $OPTIONS -DFOREGROUND
ExecReload=/usr/local/apache/bin/httpd -f ${CONFIG} $OPTIONS -k graceful
ExecStop=/usr/local/apache/bin/httpd -f ${CONFIG} $OPTIONS -k graceful-stop
KillSignal=SIGCONT
PrivateTmp=true

[Install]
WantedBy=multi-user.target
Alias=httpd.service



II. ユーザーの準備

# adduser www -d /var/apache -s /sbin/nologin
# rm -rf /var/apache
# mkdir -p /var/apache/html
# chown -R root.www /var/apache



III. apacheの設定

# cd /usr/local/apache/conf

 
※以下のファイルを設定していく。他は必要の応じて

# vi httpd.conf
# vi extra/httpd-default.conf
# vi extra/httpd-languages.conf


アクセス制限

apache2.2系統とapache2.4系統ではアクセス制限のやり方が変わっているので注意
A. apache2.2
全てのアクセス許可する

Order allow,deny
Allow from all

全てのアクセスを拒否する

Order deny,allow
Deny from all



B. apache2.4
全てのアクセスを許可する

Require all granted

全てのアクセスを拒否する

Require all denied



また、apache2.2系統でIPv6をAllow/Denyすると、バグ影響で細かいIPv6指定が出来ない。
内部処理的には、IPv6アドレスを指定してもIPを2進数に直した際の前方完全一致となる為、
広範囲のIPv6アドレス制御しか出来なくなる

  • 参考:CentOS bugs
  • 参考:serverfault
    0010 1010 . 0000 0001 . 000 |
       42     .     1     . 0   |
    
    0010 1010   0000 0001 : 000 | 0 0001 1110 1000
             2a01         :     |  1e8
                                |
                                ^ cut here

バグを回避する場合は、APR-v1.4.7以上にアップデートするか、
apache2.4系にアップグレードすると修正されている。

モジュール改変

一部のApacheモジュールはApache2.2用に作られている為、
APIが大幅に変更されたApache2.4ではビルドが通らず、追加インストール出来ない物がある。
しかし、有名なモジュールについてはCentOSやopenSUSE辺りが、
Apache2.4でもビルド出来るようにするパッチをリリースしているので、それらを当てればビルドが通る様になる。


mod_auth_kerb
ApacheでSingleSign-Onを実装する場合に必須となるモジュール
パッケージ管理で入れる時は自動でインストール出来るのだが、
Apacheをソースからインストールしている時は、モジュールもビルドする必要がある。
 
・ドキュメント類

ドキュメントKerberos Module for Apache
オリジナルソースsourceforge
適用ファイル名mod_auth_kerb-5.4.tar.gz

 
・オリジナルパッチ

ディストリパッチ配布元適用済みパッチリスト
CentOShttpd24-mod_auth_kerbdelegation.patch
fixes.patch
handle-continue.patch
httpd24.patch
longuser.patch
rcopshack.patch
s4u2proxy.patch
openSUSEKerberos Module for Apacheconfigure.patch
cache_auth.patch

 
・適用方法

[1] オリジナルソース(mod_auth_kerb-5.4.tar.gz)をダウンロード
[2] パッチ適用済みソース(mod_auth_kerb-5.4.src_patch.tar.gz)を下記添付ファイルリストからダウンロード
[3] ダウンロードした2つのファイルを解凍
[4] パッチ適用済みソースの(README、configure.in、src/mod_auth_kerb.c)をオリジナルに上書き
-----
$ md5sum mod_auth_kerb-5.4.src_patch.tar.gz 
e9260e537e498b88429074c12185e817  mod_auth_kerb-5.4.src_patch.tar.gz

添付ファイル: filemod_auth_kerb-5.4.src_patch.tar.gz 415件 [詳細]