manekineko倉金家ホームページ

趣味の部屋/サーバー構築メモ その4

HTTPサーバー apache

2014年11月12日
ホームページを表示するHTTPサーバーapache2.4を立ち上げました。
でも前のバージョン(2.2)とは変わった部分があってバックアップしたホームページデータをそのままでは表示することができず、多少の修正が必要でした。


しばらくさぼってしまったけど、再びサーバー構築を開始します。
HTTPサーバーapache。
apacheのバージョンは今迄は2.2だったけど今度は2.4になっている。

さっそく設定ファイル/etc/httpd/httpd.confを見て、...わ、ずいぶん変わっている。少しあせり。

まずアクセスの許可あるいは拒否の書き方が変わっている。
今まで
Order Allow,Deny
  Allow from All
などと書いていたところが、
Require all granted
などとなっている。

調べてみると両方に対応するためには、上記の例だと、
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require all granted
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Allow,Deny
Allow from All
</IfModule>
と書けばいいとある。でも両方書くと長くなるし、とてもわかりにくい。

まったく古い書き方そのままでもOKなのだろうか?
もしそうでなければ .htaccessをすべて書き換えなくてはならない。
…どうやらだめらしい。困ったもんだ。しばらく古い書き方もOKにしてログに警告を出すくらいにしてくれればいいものを!
httpd.confの中だけの変更ならよいが、.htaccessに記載されるものの変更は...困る!

さらには .htacccesss の Options には None 以外は必ず + か - をつけなくてはいけないようだ。
Options -Indexes +FollowSymLinks
などと。今まで + は書いていなかった。ないとエラーになってページが表示されない。

で、対処!
1)各サイトのVirtualHostの記載を確認、修正。
2)全サイトの.htaccessをすべて書き換え。ただしapache2.4専用に。どうせ今後は皆2.4になる。
 apache2.2と2.4両対応の記述はそのうち暇があったらやろう。(ということはたぶんやらない。)
 しかるに、こまめに .htaccessを作っていたのがあだとなり、約200個のファイルを書き換え。
3)バックアップスクリプトをちょこっと修正し、.htaccessはバックアップから外す。
というだけの話なのだが、200個の .htaccessを確認して修正するのはけっこうな手間でした。

さらに前回もそうだったが、/home内にホームページ用ディレクトリを作るとなぜだかSELinuxに阻まれる。これは
~]# setsebool -P httpd_enable_homedirs 1
~]# setsebool -P httpd_read_user_content 1
でOK。/home内にホームページを作るのはごく普通だと思うんだけど。

apache2.4になってから、httpd.confの内容が少し変わっている。2.2からの移行の留意点:
1.HostnameLookupsの記述はない。必要なら自分で追加しろということのようだ。
 HostnameLookups On 追加。
2.MPMのパフォーマンスについての記述はない。そのままでは負荷が大きくなると、
server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), ... といったエラーが出る。以下追加。
 <IfModule prefork.c>
  StartServers       8
  MinSpareServers    5
  MaxSpareServers   20
  ServerLimit      256
  MaxClients       256
  MaxRequestsPerChild  4000
</IfModule>
3.同じLogLevelを指定してもErrorLogの出力内容が少しちがう。簡略化されているみたい。
 LogLevel notice だと 404エラーの File does not exist: のエラーが出力されない。
 LogLevel info を指定。(上記エラーログはfail2banのアタック検知に使う。)

以上でいちおう静的なテストページは表示されるようになった。
でも通常のページはMySQLを動かさないといけない。

引き続きMySQLの設定を行います。

.... MySQL(MariaDB)およびphpMyAdminを設定し、MySQLユーザとデータベースの登録を行い、あとは従来のホームページデータをバックアップコピー。

実際にホームページを表示させてみて、OKです。