さくらのレンタルサーバで全文検索システムNamazu(2.0.21)の検索インデックスが更新されなくなったので修正対応

久しぶりに自サイトのメンテナンスをしていると…

Namazuの検索インデックスが更新されてないことに気づいたので調査開始

まずはインデックスを更新するshファイルを直接叩いてみると

% ./autoindex.sh
Can’t use ‘defined(@array)’ (Maybe you should just omit the defined()?) at /home
/yamasita/lib/File/MMagic.pm line 1122.
Compilation failed in require at /home/yamasita/namazu/bin/mknmz line 35.
BEGIN failed–compilation aborted at /home/yamasita/namazu/bin/mknmz line 35.

ん?やっぱり何かエラーが吐かれて止まっているようだ。

さくらのレンタルサーバの環境(Perlのバージョンとか?)変わったのかもなーと思い

Perlのバージョン選択を確認すると、Perl 5.8.9でした

念のために、昔まとめてた手順↓を参考に再度Namazu 2.0.21を再インストール

 ⇒Namazu 2.0.21をさくらレンタルサーバに再インストール〔投稿日時: 2014/10/01〕

すると、configureを実行した所でエラーになり

checking for File::MMagic perl module… Can’t use ‘defined(@array)’ (Maybe you
should just omit the defined()?) at /home/yamasita/lib/File/MMagic.pm line 1122.

どうやら、MMagic perl moduleに問題があるようなのでWeb検索して調べてみると

最新バージョンはFile-MMagic-1.30らしく、丸ごと入れ替えでも良かったんだけど

ついでなので最新バージョンのソースをちょっと確認してみて

サーバ上のファイル(MMagic.pm,v 1.26.4.5)を1行修正して対応してみました。

% chmod +w MMagic.pm
% vi MMagic.pm

    #elsif (defined(@$entry)) {
    elsif ('ARRAY' eq ref $entry && @$entry) {

% chmod -w MMagic.pm

で、もう一度configureを実行すると上手く行ったので、makeとmake installし再インストール完了

検索インデックス更新するshファイルを叩いて、動作確認!

% ./autoindex.sh
Unescaped left brace in regex is illegal here in regex; marked by <– HERE in m/%{ <– HERE ?([a-z]+)}?/ at /home/yamasita/namazu/share/namazu/filter/hnf.pl line 247.
Compilation failed in require at /home/yamasita/namazu/bin/mknmz line 419.

あれ?違うエラーになった。。。

Google先生に質問(検索)してみたら、ブレースをエスケープしてないのが原因みたいだったので

サーバ上のファイル(hnf.pl)を開いて、また該当の1行を修正対応

% vi hnf.pl

  #$uri =~ s/%{?([a-z]+)}?/$param{$1}/g;
  $uri =~ s/%\{?([a-z]+)\}?/$param{$1}/g;

今度こそ…検索インデックス更新するshファイルを叩くとやっと更新されだし一安心

Webサイトからの検索もちゃっとできるようになったのは良いけど、Wordpress内のファイルも検索でき(汗)

検索インデックス更新するshファイルを修正するはめに

mknmzコマンドの引数に’–exclude=/home/yamasita/www/wp/.*’を追加して、Wordpressのフォルダを除外するようにしてやっと対応が終わりました

Perlのソースをかなり久しぶりに触ったけど、何とかなって一安心。ふぅー

新入社員の頃(1999年)に、全文検索システムNamazuを使い出した記憶があるのでかれこれ20年くらい利用してることになりそう

6~7年に一度くらいの頻度でさくらのレンタルサーバで動かなくなって対応してる感じっぽいなぁ

今風?なら、Googleカスタム検索を利用して検索窓を設置する方がお手軽かもですね

楽しみながら攻めつづける!(NSR250Rオーナーとの交流メイン)
https://www.yamasita.info/

Let’s Encrypt無料SSLサーバ証明書でWordPressも常時SSL化

前回、さくらのレンタルサーバ独自ドメインの自サイトをSSL化してて

サブドメイン設定してるWordPressの方は常時SSL化してみましたよ!

SAKURA RS WP SSLプラグインが用意されてたのでインストールして有効にしようとしたらエラーになり?
どうやらPHPのバージョンが新しい5.6か7.1でしか動作しないようだったので、PHP5.6にバージョンアップ設定して有効化すると、すんなり常時SSL化されて楽勝でしたよ

しかし問題もあって、自サイト内のPHPが文字化けしててデバックして確認すると文字コードがUTF-8になってたので
php.iniの設定に↓デフォルト文字コードの設定を追加し

default_charset = none

ちゃんと、元通り文字コード:EUCで表示されて文字化けしないように直りました。ほっ