Slackware 14.1 には Apache という世界最高峰の http サーバーがインストールされています。初期状態だとまともに使うことができないので、Wordpress が動かせる程度に設定を変更してみましょう!
Apache のコアに MPM (Multi-Processing Module) というモジュールがあります。Apache をどんな風に動かすかを決定するモジュールなんですが、何故か Slackware 14.1 では event というモジュールが有効になっています。
/usr/sbin/httpd -V | grep MPM
# 実行結果
#Server MPM: event
使用可能な MPM は event, prefork, worker の 3 種類が入ってます。
cd /usr/lib64/httpd/modules/ && \ls *mpm*
mod_mpm_event.so mod_mpm_prefork.so mod_mpm_worker.so
MPM は上記以外にもあるみたいです。が、Wordpress とかの PHP で書かれた Web アプリケーションを使用する場合は、prefork を使うことになっています。
MPM を含め、Apache のモジュール (特定の機能の集まり) はコンフィグファイル (/etc/httpd/httpd.conf) の LoadModule ディレクティブ (指令) で使用するか否かを決定します。早速 event MPM を prefork MPM に変更しましょう!
# mpm_event_module をコメントアウトします
#LoadModule mpm_event_module lib64/httpd/modules/mod_mpm_event.so
# mpm_prefork_module をロードします
LoadModule mpm_prefork_module lib64/httpd/modules/mod_mpm_prefork.so
# ついでにこの行をアンコメントしてもいいでしょう
Include /etc/httpd/extra/httpd-mpm.conf
# PHP を使うには、この行をアンコメントします
Include /etc/httpd/mod_php.conf
httpd-mpm.conf ファイルで MPM の細かい挙動を指定することができます。パフォーマンス・チューニングしたい際は、このファイルをインクルードしましょう。
Apache のコンフィグファイルを変更したら、apachectl コマンドでチェックし、リスタートします。モジュールのオンオフをする時はストップ&スタートすれば間違いないと思います。リスタートはサブプロセスを kill した後、親プロセスがコンフィグファイルを再読み込みします。ストップ&スタートは親プロセスも再起動します。
sudo /usr/sbin/apachectl configtest
# 実行結果
#Syntax OK
/usr/sbin/httpd -V | grep MPM
# 実行結果
#Server MPM: prefork
# Apache をストップ&スタートします
sudo /usr/sbin/apachectl graceful-stop && sudo /usr/sbin/apachectl start
さて、実際に web アプリやなんかを動かす時は、普通バーチャルホストを使うと思います。httpd-vhosts.conf というファイルがあるので、これをインクルードするように設定しましょう。
# 下の行をアンコメントします
Include /etc/httpd/extra/httpd-vhosts.conf
それから httpd-vhosts.conf に VirtualHost コンテナを書きましょう。デフォルトで dummy-host と dummy-host2 というバーチャルホストが書いてあるので、これを参考にしましょう。なお、一番最初に書いてあるバーチャルホストがデフォルトのホストになります。つま り、存在しないホスト名 (IP アドレス直打ち含む) にリクエストが来た際は、デフォルトのホストへの要求とみなされます。セキュアにするなら、デフォルトのホストはすっからかんのディレクトリを DocumentRoot に指定し、2つ目以降のバーチャルホストに Web アプリケーション等の設定をしましょう。
※上の /wp-admin と /wp-login.php 、どっからでもアクセスできちゃいます…。
--- httpd-vhosts.conf.a 2014-01-20 08:57:29.258542680 +0900
+++ httpd-vhosts.conf 2014-01-20 08:57:31.927542680 +0900
@@ -41,18 +41,12 @@
AllowOverride all
Require all granted
</Directory>
- <Directory ひ♡み♡つ/wp-admin>
- Satisfy any
- Order deny,allow
- Deny from all
- Allow from ひ♡み♡つ 127.0.0.1
- </Directory>
- <Files wp-login.php>
- Satisfy any
- Order deny,allow
- Deny from all
- Allow from ひ♡み♡つ 127.0.0.1
- </Files>
+ <Location /wp-admin>
+ Require ip ひ♡み♡つ 127.0.0.1
+ </Location>
+ <Location /wp-login.php>
+ Require ip ひ♡み♡つ 127.0.0.1
+ </Location>
# Ensure we can run (fast)cgi scripts
ScriptAlias /munin-cgi/munin-cgi-graph /usr/local/munin/www/cgi/munin-cgi-graph
設定したら、コンフィグファイルをチェックしてリスタートします。
sudo /usr/sbin/apachectl configtest
# 実行結果
#Syntax OK
sudo /usr/sbin/apachectl graceful
バーチャルホストを追加したら、ログローテートの設定も忘れずに行いましょう。/etc/logrotate.d/httpd を編集します。
# デフォルトでは /var/log/httpd ディレクトリ内のログだけをローテートします
#/var/log/httpd/*_log {
# /var/www/sites 以下に hoge だの piyo だのといったホスト用のディレクトリを
# 設置し、それらの中の log ディレクトリに access_log, error_log といった
# そのホスト専用のログファイルがある、という想定です。
/var/log/httpd/*_log /var/www/sites/*/log/*_log {
# なんやかんや
}
日本語に優しい設定にしましょう。mod_negotiation を有効にし、httpd-languages.conf をインクルードします。これもコンフィグファイルの該当の行をアンコメントするだけです。httpd-languages.conf は下のように設定します。
DefaultLanguage ja
# ja を先頭にします
LanguagePriority ja en 以下省略
# 他はいじりません
WordPress でプリティ URL を使うには mod_rewrite が必要ですが、これも httpd.conf の該当の行をアンコメントするだけです。
(コウヅ)