Posted by kenppx on June 18, 2012 at 4:18am
いつもお世話になっております。最近、Drupal7でviewsとpanelsをモリモリ使ってサイトを構築しております。viewsとpanelsをモリモリ使うと、パフォーマンスが気になってきました。
そこで、静的ページをキャッシュさせて表示するBoostモジュールの導入を検討しているのですが、
うまくいきません。
こちらの導入方法に従って、設定したのですがうまくいきません。
http://drupal.org/node/545908
症状は以下の通りです。
①cacheフォルダ内に静的ページは問題なく生成される。
②ログアウトして、サイトにアクセスするとfront pageがInternal Server Errorが表示される。
③front page以外のページは表示されるが、どうもcacheされているhtmlを表示している形跡がない。
cacheフォルダ内にキャッシュされたhtmlのソースを見てみると、以下のようなタグが表示されて
いますが、実際のサイトではこのタグが表示されていない。
<!-- Page cached by Boost @ 2012-06-18 01:16:40, expires @ 2012-06-18 02:16:40, lifetime 1 hour -->
↑これはキャッシュされていれば、表示されますよね?
以上です。
恐らくはhtaccessの設定の問題でcacheフォルダ内の静的ページを参照できていないのが
原因だと思いますが、肝心のどのように設定したら良いのかがよく分かりません。
どなたか助けて頂けないでしょうか?よろしくお願いします。
Comments
エラーログ
ApacheやPHPのエラーログを見れたらそこから何か手がかりがあるかも知れません。
Boostいいですよね。一番手っ取り早くコストパフォーマンスが高い気がします。
私はBoostではドメイン直下ではなく、サブディレクトリにDrupalを配置した時にハマったことがあります。
その時は結局ドキュメントルート以外での運用は難しいという結論に至ったんですけども。
のタグがフィルタされて見えてないようです。もう一度確認してもらえますか。
タグが表示されるようにしました。
qchan様、ご回答ありがとうございます。
Boostは素晴らしいモジュールですね。私はpanelsとviewsをモリモリ使いまくる作戦でサイトを構築
しているので、Boostモジュールは何としてでも導入したいと考えています。
エラーログを確認した所、以下の様になっていました。
[Tue Jun 19 01:52:51 2012] [alert] [client 113.197.181.166] /home/example/www/test/cache/normal/example.sakura.ne.jp/test/.htaccess: Options not allowed here
[Tue Jun 19 01:52:52 2012] [error] [client 113.197.181.166] File does not exist: /home/example/www/favicon.ico
Option not allowed hereとなっています。これが原因かもしれませんね。
サーバーはさくらインターネットを使用しているのですが、Options ディレクティブ(←意味分かってません)
の使用が禁止されているようで、普段htaccessのoptionsディレクティブに関する記述をコメントアウトして
drupalを稼働させています。。
↓こちらのサイトを参考にさせて頂きました。
http://drupal.0829.info/installation-and-configuration/before-installati...
もしかすると、htaccessにBoostモジュールの設定を書き込んだ際にoptionsが含まれているのかも
しれませんね。ちょっと確認してみます。また、ご報告します。
optionsをコメントアウトしたところ
前述のエラーに該当するhtaccessのoptionsをコメントアウトしたところ、トップページはキャッシュされた
静的htmlが表示されるようになりました。キャッシュされたhtmlを示す、下記のタグの存在も確認できました。
一歩前進です。ありがとうございます!
<!-- Page cached by Boost @ 2012-06-19 01:36:35, expires @ 2012-06-19 02:36:35, lifetime 1 hour -->
ただ、トップページ以外のページには上記タグが見受けられません。恐らく、キャッシュされたhtmlを
表示できていないという事なのではないかと思います。
上記のタグは全ページに表示されるものなのでしょうか?
ちなみに、エラーログでは以下の様なものが表示されています。
[Tue Jun 19 02:39:09 2012] [error] [client 113.197.181.166] client denied by server configuration: /home/example/www/.ht
FollowSymLinks の代替
エラーだけ見ると、Apacheがアクセスを許していないように見えますが
ファイルのパミッションはどうなっていますか?
共用サーバーとのことなので、Apache側のhttpd.confは触れないんですよね?
Boostはコアの.htaccess置き換えることでApacheのrewrite機能を駆使してキャッシュページを見せるので、
さくらの共用サーバーは.htaccessへ書ける内容が特殊でめんどくさいかもしれないです。
キャッシュのディレクトリにも.htaccessファイルが作成されるはずですが、それも変えないといけないですね。
エラーとは別に
OptionsをコメントしたということはFollowSymLinksも消えているということなので
この記事はヒントになるかも知れません。
boost moduleのハックになるのでオススメは出来ませんが。。
500 Server Error on the first page request after cron runs | drupal.org
http://drupal.org/node/1440754#comment-5623342
[Tue Jun 19 02:39:09 2012]
[Tue Jun 19 02:39:09 2012] [error] [client 113.197.181.166] client denied by server configuration: /home/example/www/.ht
このエラーは私が自ら設定したhtaccessのために起きたものでした。すいません…。
boost moduleのハックに関してですが、qchan様から教えて頂いた方法と同じ方法で
htaccessの出力を変える事で、500 server Errorは回避する事ができました。
現時点ではトップページのみ、boostが働いている状態です。
トップページ以外のページではキャッシュされたhtmlが表示されません。
さくらのoption禁止を回避するために、FollowSymLinksをコメントアウトした事と関係は有りそうでしょうか?
ちなみに、キャッシュとして生成されたhtmlページのurlに直接アクセスすれば問題なく
そのキャッシュhtmlを見ることができます。urlの書き換え(?)が上手くいっていないという事でしょうか?
無事にboost動きました!
もう一度、Boost Installation & Settings→http://drupal.org/node/545908
をしっかりと読みまして、boostの設定をhtaccessにコピーしてみました。
しっかり読むと、以下の場所に設定をコピペしろとしっかり書いてありました。
RewriteBase /
(Left click once between these 2 lines, Right click and choose Paste)←ここコピペ。
Rewrite URLs of the form 'x' to the form 'index.php?q=x' .
ここにコピペしたら、前ページキャッシュされたhtmlが表示されました。
今まで、htaccessの一番下にコピペしていました…。お恥ずかしい限りです…。
qchan様、ご指導ありがとうございました。
テストサイトでしばらく、動作確認をして問題なければ実戦配備したいと思います。
次の問題はboost moduleのクローラーです…
とりあえず、正常にキャッシュページは表示されています。
ブラウザでサイトにアクセスすると、キャッシュが生成されています。
次はにクローラーで巡回させて、自動的にキャッシュを生成するにはどうしたら良いのかです。
現在私はdrupal7でサイトを構築しているのですが、d7バージョンのBoostモジュールには
クローラーがついていないようです…。下記のページの情報によりますと、
http://drupal.org/node/1434362
Drupal7バージョンではビルトインクローラーは実装されないので、他のクローラーモジュールを検討して
みたいな事が書いてあります。他の代替手段はどのような物が考えられるでしょうか?
drupalのクローラーモジュールを探すか、phpのクローラースクリプトを走らせる
等の方法になるのでしょうか?
皆様のお知恵を拝借できれば幸いです。
Boostが生成する.htaccessについて
Drupal6でboost 6.x-1.20を試しているところです。
私もさくらインターネットなんですが、.htaccessにOptionsを使用できない(Internal server errorになる)ため、キャッシュディレクトリに生成された.htaccess内のOptionsをコメントアウトしました。
ところが、Boostの管理画面で設定を保存したり、cronを走らせたりすると、.htaccessが再生成されてOptionsがまた追加されてしまいます。
設定をみてみたのですが、これをとめる設定は見つけられませんでした。
何かうまい手立てはないものでしょうか? お教え頂けたら幸いです。
こちらの書き込みが参考になると思います。 Posted
こちらの書き込みが参考になると思います。
Posted by kolebas on February 19, 2012 at 7:56pm
I have the same error. here it is that the directory cache is written to a file .htaccess Options +FollowSymLinks , If you replace it on the Options +SymLinksIfOwnerMatch , it all works .However, when cleaning the cache file is overwritten.
//$string .= "Options +FollowSymLinks\n";
$string .= "Options +SymLinksIfOwnerMatch\n";
boost.module st.1384
drupal7のboostモジュールに関する記述です。
私の場合は上記の様に、boostモジュールの1384行にある2つの変数を以下のように
書き変えまして、htaccessに出力される結果を強制的にコメントアウトされた文字列に
してしまうと言う手段で対応しています。
//$string .= "#Options +FollowSymLinks\n";
$string .= "#Options +SymLinksIfOwnerMatch\n";
.htaccessの中身修正(kenppxさんへのお礼)
なるほど^^; ソースを修正するという最終手段がありましたね。
うまくいきました。ありがとうございました。