4月からTLAS2(Turbolinux Appliance server 2.0)で稼動させている独自サーバなんですが、他サーバで運営しているサイトをこちらに移転させる事になりまして、再構築をしようと動作テストを行っていたら「500 Internal Server Error」を吐きまくるwww
なんじゃコリャとなりまして調査をしていくと、設置していた「.htaccess」が引っかかっていた模様。「.htaccess」を外したら普通に動くし…
中身はPHPの動的ページを静的ページに偽装する「RewriteEngine」についてのみ。という事はこの「RewriteEngine」に問題があるのかな?
前のサーバでは普通に動いていたので構文的には問題ないハズと踏んでいたのですが、ググってみると「Apache2.x」からは正規表現の書き方が厳密化されたとの情報を発見。
この辺を中心に書き直して何度も動作チェックするもまったくダメでお手上げ…こういう時は初心に帰って、最小構成で確認してみよう!という事で以下の内容で再度チャレンジ♪
RewriteEngine Onえー!ただOnにしただけなのにこれでも「500 Internal Server Error」が止まらないw
という事は「RewriteEngine」そのものが使用不可の状態。これはサーバ側を調整しなきゃイカンのですね…
※備忘録的な内容なので、解決策を探している方は最後まで読んでからで!
httpd.confを書き換えてみる
最初はサーバ側で「.htaccess」が無効になってるんだと思い、有効化する方法をググる。Site Cooler:[Apache] .htaccessを有効にするほうほうなるほど。という事で早速サーバの設定ファイル「httpd.conf」を書き換えてみる。Options FollowSymLinks AllowOverride None デフォルトで上記のようになっている箇所を下記のように変更します。
</Directory>
Options All
AllowOverride All
<Directory/>
TLAS2の場合「httpd.conf」は"/etc/httpd/conf/httpd.conf"のディレクトリにあるようです。telnetで接続してviコマンドで書き換え、サーバ再起動して動作確認すると…やっぱりダメ(>_<)
ちなみに上記のSite Coolerさんの設定で「</Directory>…</Directory>」って表記してある部分は「<Directory />…</Directory>」の間違いなんじゃないかな?Apacheのバージョンによって違うのかな?
このままコピペして設定書き換えて再起動したらWebサーバ死んだ…これ気が付くまでメチャクチャ悩んだので要注意!!
んーここはまたも初心に帰って「.htaccess」の基本技「Basic認証」を入れてみる。すると…あれれ?普通に動く!
って事で「.htaccess」の使用そのものには問題がなく、「RewriteEngine」のみが引っかかっている事が判明!!
モジュールの読み込みを確認する
どうも「RewriteEngine」だけがダメっぽいので、「RewriteEngine」で使う「mod_rewrite」モジュールそのものがインストールされてないor読み込まれてないのかもしれないと考え、サーバでどのモジュールが読み込まれているか確認する。一番簡単な方法は「get_modules.php」とか適当なファイル名でPHPファイルをサーバにアップして確認。ちなみにソースはこれだけでOK!
このファイルにブラウザからアクセスすると、サーバに読み込まれているモジュールの一覧が表示されます。この中に「mod_rewrite」が入っていればOKなんですが…おもいっきり入ってるじゃないですかwwwprint_r(apache_get_modules()); ?>
あ、確認終わったら念のためこのファイルを削除するの忘れないでください。
という事でモジュールは問題ナイというのが判明。じゃあなんなんだよ?!
tlas.confを書き換えればいいっぽいのが判明
悩んだ挙句TLASの運用に絞ってググってみると近いカンジの記事が♪Explain:TLAS2ディレクトリ内の一覧非表示ずばりそのものじゃないんですが、この記事はすごくヒントになりました!
・ディレクトリ内の一覧非表示につきましては下記設定ファイル編集にて全仮想サイト有効となります。■編集対象ファイル
/etc/httpd/conf.d/tlas.conf変更箇所:tlas.confの23行目-28行目
変更内容:
※変更前
-----------------
# This should be changed to whatever you set DocumentRoot to.Options Indexes FollowSymLinks Includes MultiViews
AllowOverride AuthConfig Indexes Limit-----------------
※変更後
-----------------
# This should be changed to whatever you set DocumentRoot to.#Options Indexes FollowSymLinks Includes MultiViews
Options FollowSymLinks Includes MultiViews
#AllowOverride AuthConfig Indexes Limit
AllowOverride ALL
-----------------
「httpd.conf」はサーバ全体の設定をコントロールするんだけど、TLASでは仮想サイトの設定は「tlas.conf」でコントロールするといのが判明!「httpd.conf」で設定変えても「tlas.conf」の設定が優先されるらしいのでダメだったんですねw
「tlas.conf」見たらRewriteEngine普通に使ってるしwww
tlas.confを書き換える
「tlas.conf」を書き換えるワケですが、必ずバックアップ取ってから作業しましょう。バックアップ取らないで失敗したこと何回もありますよ…。しつこいようだけどtelnetで接続。そういえばtelnetクライアントはいろいろ試してみたけどやっぱり「TeraTerm」がイイっぽいですw
後継版の「UTF-8 TeraTerm Pro with TTSSH2」がオススメ!
あとUNIXコマンドなんてあんまり使う機会がナイのですぐ忘れてしまう…という時のためにpenguin-19さんの「知っておきたいUNIXコマンド」のコマンド一覧も出しておきましょう。
login: xxxxxちなみにviエディタの使い方は「viエディタの使い方」で確認しておきましょう!
Password:*****
Welcome to Turbolinux.
[xxxxx]$ su ←←root権限になるの忘れないで
Password:*****
[root]# vi /etc/httpd/conf.d/tlas.conf ←←viコマンドでエディタ起動
以下の部分を[↓]で探します。25行目前後かと。
<Directory /home/.sites/>[Esc]押してから[i]でインサートモードに切り替えて書き換えします。ちなみに「TeraTerm」の場合は[Alt]+[v]でペーストもできるので便利です!
Options Indexes FollowSymLinks Includes MultiViews
AllowOverride AuthConfig Indexes Limit
で、下記の通り書き換えてみる。
<Directory /home/.sites/>書き換え完了したら[Esc]押してコマンドモードにして[Shift]+[z][z](※大文字で「ZZ」って事ですね)で保存&エディタ終了。
Options Indexes FollowSymLinks Includes MultiViews
#AllowOverride AuthConfig Indexes Limit ←←念のため「#」でコメントアウトで
AllowOverride All ←←この行を追加!
あとは
[root]# /etc/rc.d/init.d/httpd stopでApacheを再起動すると設定が反映されます。
[root]# /etc/rc.d/init.d/httpd start
これで作業完了ですw
では早速「.htaccess」をアップしてみると…動いた!!
いやーこれだけで1日使っちゃいましたよ…