Boostモジュールの設定について

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
kenppx's picture

いつもお世話になっております。最近、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

エラーログ

qchan's picture

ApacheやPHPのエラーログを見れたらそこから何か手がかりがあるかも知れません。

Boostいいですよね。一番手っ取り早くコストパフォーマンスが高い気がします。
私はBoostではドメイン直下ではなく、サブディレクトリにDrupalを配置した時にハマったことがあります。
その時は結局ドキュメントルート以外での運用は難しいという結論に至ったんですけども。

cacheフォルダ内にキャッシュされたhtmlのソースを見てみると、以下のようなタグが表示されて
 いますが、実際のサイトではこのタグが表示されていない。

のタグがフィルタされて見えてないようです。もう一度確認してもらえますか。

タグが表示されるようにしました。

kenppx's picture

qchan様、ご回答ありがとうございます。
Boostは素晴らしいモジュールですね。私はpanelsとviewsをモリモリ使いまくる作戦でサイトを構築
しているので、Boostモジュールは何としてでも導入したいと考えています。

ApacheやPHPのエラーログを見れたらそこから何か手がかりがあるかも知れません。

エラーログを確認した所、以下の様になっていました。

[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をコメントアウトしたところ

kenppx's picture

前述のエラーに該当する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 の代替

qchan's picture

エラーだけ見ると、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]

kenppx's picture

[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動きました!

kenppx's picture

もう一度、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のクローラーです…

kenppx's picture

とりあえず、正常にキャッシュページは表示されています。
ブラウザでサイトにアクセスすると、キャッシュが生成されています。
次はにクローラーで巡回させて、自動的にキャッシュを生成するにはどうしたら良いのかです。

現在私はdrupal7でサイトを構築しているのですが、d7バージョンのBoostモジュールには
クローラーがついていないようです…。下記のページの情報によりますと、

http://drupal.org/node/1434362

Deprecated in Drupal 7.x-1.x:
Built in crawler to automatically regenerate cached files: evaluate other crawling modules, document.

Drupal7バージョンではビルトインクローラーは実装されないので、他のクローラーモジュールを検討して
みたいな事が書いてあります。他の代替手段はどのような物が考えられるでしょうか?

drupalのクローラーモジュールを探すか、phpのクローラースクリプトを走らせる
等の方法になるのでしょうか?
皆様のお知恵を拝借できれば幸いです。

Boostが生成する.htaccessについて

magpoc's picture

Drupal6でboost 6.x-1.20を試しているところです。
私もさくらインターネットなんですが、.htaccessにOptionsを使用できない(Internal server errorになる)ため、キャッシュディレクトリに生成された.htaccess内のOptionsをコメントアウトしました。
ところが、Boostの管理画面で設定を保存したり、cronを走らせたりすると、.htaccessが再生成されてOptionsがまた追加されてしまいます。
設定をみてみたのですが、これをとめる設定は見つけられませんでした。
何かうまい手立てはないものでしょうか? お教え頂けたら幸いです。

kenppx's picture

こちらの書き込みが参考になると思います。

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さんへのお礼)

magpoc's picture

なるほど^^; ソースを修正するという最終手段がありましたね。
うまくいきました。ありがとうございました。