速くて安いサーバーないかな~なんてネットで検索してたらレンタルサーバーの比較をしているページ(http://rs-hikaku.com/)を見つけました。
速くて安いのなら乗り換えようかとバリューサーバー(ValueServer)
cronに登録してMovabletypeの再構築をrebuild-pagesで自動的に毎日行っているのですが、以前の記事で書いた内容でヘテムル(heteml)では動いていたのにバリューサーバー(ValueServer)
でも動かないままあきらめるのも嫌なので動くまでやってやろうと以下の事を追加で行い動かすことができました。
SSHでrebuild-pagesを実行したらエラー
まず動かない原因を探るためTera Termをインストールして、バリューサーバー(ValueServer)
/usr/bin/perl /virtual/user-dir/public_html/mt/tools/rebuild-pages
とrebuild-pagesを実行してみたところ
BEGIN failed--compilation aborted at /virtual/user-dir/public_html/mt/tools/rebuild-pages line 14.
というエラー。どうやらcronの設定が悪いのではなく、スクリプトでエラーが出ているようです。
/mt/tools/にあるrebuiled-pagesを開いて14行目を見ると「use Web::Scraper;」とありました。PerlモジュールのWeb::Scraperで引っ掛かっているようで、どのフォルダーを探してもWeb::Scraperが見当たらないのでエラーとなっているようです。
Web::Scraperを入れる
PerlモジュールのWeb::Scraperをどうやって入手すればいいのかわからなかったのですが、以下のサイトを参考にSSHでbinというディレクトリを作ってWeb::ScraperをインストールするためのcpanmとWeb::Scraperに必要なHTML::TreeBuilder::XPathをそれぞれインストールしました。
cpanmを/virtual/user-dir/binにインストール
% cd /virtual/user-dir % mkdir bin % cd bin % curl -LO http://xrl.us/cpanm % chmod +x cpanm
Web::ScraperとHTML::TreeBuilder::XPathを/virtual/user-dir/binにインストール
% cd /virtual/user-dir % cpanm -l bin Web::Scraper % cpanm -l bin HTML::TreeBuilder::XPath
これで、/virtual/user-dir/bin/lib/perl5/Web/Scraperができあがりました。
rebuiled-pagesにパスを追加
rebuiled-pagesの8行目あたりにPerlモジュールの参照先を指定する部分があります。ここにはWeb::Scraperのある場(/virtual/user-dir/bin/lib/perl5)が指定されていませんので追加します。
#編集前 use lib ("$FindBin::Bin/../lib", "$FindBin::Bin/../extlib");LWP::UserAgent::Localのあるディレクトリ(/mt/lib/)または/mt/extlib/にWeb::Scraperをインストールしておけば、これは不要だったかもしれませんがあまりSSHになれていないので、変なことにならないようここは参考通りにしておきます。
#編集後 use lib ("$FindBin::Bin/../lib", "$FindBin::Bin/../extlib", "/virtual/user-dir/bin/lib/perl5");
最後にlocal.pmのパスを修正
/virtual/user-dir/public_html/mt/lib/LWP/UserAgent/Local.pmの".$script_name"を"/virtual/user-dir/public_html/mt/$script_name"に修正します。
#88行目あたり #修正前
my $pid = open2( \*RESPONSE, \*REQUEST, "./$script_name" ) #修正後 my $pid = open2( \*RESPONSE, \*REQUEST, "/virtual/user-dir/public_html/mt/$script_name" )
#94行目あたり #修正前 open RESPONSE, "./$script_name|" or die "Couldn't spawn $script_name"; #修正後
open RESPONSE, "/virtual/user-dir/public_html/mt/$script_name|" or die "Couldn't spawn $script_name";
できた!
それぞれ修正したファイルをアップロードして、パーミッションも700にして、再度SSHで
/usr/bin/perl /virtual/user-dir/public_html/mt/tools/rebuild-pages
と打ってrebuiled-pagesを実行したらキター!!
ってことで一件落着。
【追記】これでcronもうまくいくはずだったのですが、うまくいかず以下のページで解決。