- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2016-09-19T23:40:13+09:00","default:nowsky","nowsky")
#author("2019-11-17T01:32:40+09:00","default:nowsky","nowsky")
*Apache [#d1379e89]
[[Apache:+http://httpd.apache.org/]]
Linux用WWWサーバの代名詞。
apache2.4からは設定方法が色々と変更されているので注意。
~
*インストール [#l4783199]
&size(16){&font(b){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>Linux/Source/OpenSSL]]も入れておく。
~
&size(16){&font(b){2. APRのビルド・インストール};};
apacheのソースと一緒にビルドする方法もあるらしいが、
%%自分の環境では上手くいかなかった%%ので別々にビルドする -> [[一括ビルドも出来た>#aprbuild]]
# tar zxvf apr-1.4.6.tar.gz
# cd apr-1.4.6
# ./configure --prefix=/usr/local/apr
# make
# make test
# make install
~
&size(16){&font(b){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
~
&size(16){&font(b){4. Apacheのビルド・インストール};};
initの名前を“httpd”にするとyumとかで入れた物と被ってエラーになる場合がある。
よって、今回は“apache”という名前にしてインストールする。
[[PCRE>Linux/PCRE]]がまだ入ってない場合は、apacheのソースをビルドする前に入れておく事。
# tar zxvf httpd-2.4.3.tar.gz
# cd httpd-2.4.3
# vi config
&font(b){※全部一行で書く};
--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
~
&size(16){&font(b){5. aprとapacheの一括ビルド};};
#aname(aprbuild)
いつの間にか、ポータブルランタイムとapacheの一括ビルドが出来るようになっていた。
[[Apache PRP:+https://apr.apache.org/download.cgi]]から、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
~
*設定 [#i61f7aa6]
&size(16){&font(b){I. apacheスクリプトのコピー};};
# cp /usr/local/apache/bin/apachectl /etc/init.d/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
initスクリプトはこっちの方が良いかも
# cp ${Apache_SrcDIR}/build/rpm/httpd.init /etc/init.d/apache
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
~
&size(16){&font(b){II. ユーザーの準備};};
# adduser www -d /var/apache -s /sbin/nologin
# rm -rf /var/apache
# mkdir -p /var/apache/html
# chown -R root.www /var/apache
~
&size(16){&font(b){III. apacheの設定};};
# cd /usr/local/apache/conf
&font(b){※以下のファイルを設定していく。他は必要の応じて};
# vi httpd.conf
# vi extra/httpd-default.conf
# vi extra/httpd-languages.conf
~
*アクセス制限 [#qeaec962]
apache2.2系統とapache2.4系統ではアクセス制限のやり方が変わっているので注意
&size(16){&font(b){A. apache2.2};};
全てのアクセス許可する
Order allow,deny
Allow from all
全てのアクセスを拒否する
Order deny,allow
Deny from all
~
&size(16){&font(b){B. apache2.4};};
全てのアクセスを許可する
Require all granted
全てのアクセスを拒否する
Require all denied
~
----
また、apache2.2系統でIPv6をAllow/Denyすると、バグ影響で細かいIPv6指定が出来ない。
内部処理的には、IPv6アドレスを指定してもIPを2進数に直した際の前方完全一致となる為、
&font(b){広範囲のIPv6アドレス制御};しか出来なくなる
-参考:[[CentOS bugs:+https://bugs.centos.org/view.php?id=9313&history=1]]
-参考:[[serverfault:+https://serverfault.com/questions/484239/apache-ipv4-deny-directive-blocks-ipv6-addresses]]
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系にアップグレードすると修正されている。
~
*モジュール改変 [#jca360bb]
一部のApacheモジュールはApache2.2用に作られている為、
APIが大幅に変更されたApache2.4ではビルドが通らず、追加インストール出来ない物がある。
しかし、有名なモジュールについてはCentOSやopenSUSE辺りが、
Apache2.4でもビルド出来るようにするパッチをリリースしているので、それらを当てればビルドが通る様になる。
~
&size(16){&font(b){mod_auth_kerb};};
ApacheでSingleSign-Onを実装する場合に必須となるモジュール
パッケージ管理で入れる時は自動でインストール出来るのだが、
Apacheをソースからインストールしている時は、モジュールもビルドする必要がある。
&font(b){・ドキュメント類};
| ドキュメント | [[Kerberos Module for Apache:+http://modauthkerb.sourceforge.net/]] |
| オリジナルソース | [[sourceforge:+https://sourceforge.net/projects/modauthkerb/files/mod_auth_kerb/]] |
| 適用ファイル名 | mod_auth_kerb-5.4.tar.gz |
&font(b){・オリジナルパッチ};
|ディストリ|パッチ配布元|適用済みパッチリスト|
|CentOS|[[httpd24-mod_auth_kerb:+https://git.centos.org/tree/rpms!httpd24-mod_auth_kerb.git/b2b3b1132acba0201623b58fc0ad1a3e9e8dc3f2/SOURCES;jsessionid=1nf4zqhuagt051k2g9mccxzqm1]]|delegation.patch|
|~|~|fixes.patch|
|~|~|handle-continue.patch|
|~|~|httpd24.patch|
|~|~|longuser.patch|
|~|~|rcopshack.patch|
|~|~|s4u2proxy.patch|
|openSUSE|[[Kerberos Module for Apache:+https://build.opensuse.org/package/show/Apache:Modules/apache2-mod_auth_kerb]]|configure.patch|
|~|~|cache_auth.patch|
&font(b){・適用方法};
[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