2021/07/16(金) [n年前の日記]
#1 [debian][linux] Debian buster + Apache2 の設定作業その2
_昨日の作業
に引き続き、自宅サーバ代替機(キューブPCケース機、Intel D945GSEJT使用)、Debian Linux 10 buster 32bit版 + Apache2 2.4.38-3+deb10u5 で、Apache2 の設定を続行中。
◎ mod_rewriteを有効化。 :
URLの書き換えやリダイレクトをしてくれる mod_rewrite を有効化する。コレを利用することで、本来は *.cgi?xxxx というURLで提供されている hns の各リンクを、xxxx.html に置き換えることができたりする。
記述例。
_[Debian/Apache2] mod_rewriteを有効にする - かえでのWebログ
a2enmod rewrite systemctl restart apache2
記述例。
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ adiary.cgi/$1 [L] </IfModule>
_[Debian/Apache2] mod_rewriteを有効にする - かえでのWebログ
◎ mod_statusを有効化。 :
Apache2の状態を確認できる mod_status を有効化する。
以前は以下のような指定だったみたいだけど…。
http://SERVERNAME/server-status にアクセスすれば状態が見れる。
_Ubuntuでmod_statusを使用してApacheのパフォーマンスを監視する方法
_Ubuntu 10.04 LTS - WEBサーバー - mod_statusを使う : Server World
a2enmod status
cd /etc/apache2/mods-available/ cp status.conf status.conf.orig vi status.conf以下を追加・修正して、LAN内のみで確認できるようにする。Require ip 192.168.1.0/24 を追加することで、192.168.1.* のPCからアクセスできるように指定。
<IfModule mod_status.c> <Location /server-status> SetHandler server-status Require local Require ip 192.168.1.0/24 </Location> ExtendedStatus On #SeeRequestTail On <IfModule mod_proxy.c> # Show Proxy LoadBalancer status in mod_status ProxyStatus On </IfModule> </IfModule>
以前は以下のような指定だったみたいだけど…。
Allow from 127.0.0.1 Allow from 192.168.1.0/24最近の Apache2 は、Require ip 192.168.1.0/24 みたいな記述に変わったようだなと…。
http://SERVERNAME/server-status にアクセスすれば状態が見れる。
_Ubuntuでmod_statusを使用してApacheのパフォーマンスを監視する方法
_Ubuntu 10.04 LTS - WEBサーバー - mod_statusを使う : Server World
◎ hns関係の設定を始めた。 :
hns関係の設定メモは別記事に残しておこう…。
[ ツッコむ ]
#2 [hns][debian][linux] Debian 10 buster上でhnsを動かすべく設定作業
Debian Linux 10 buster 32bit版 + Apache2 2.4.38-3+deb10u5 + Perl 5.28.1 で、hns を ―― この日記ページシステムを動かすべく作業中。
◎ defined()を修正。 :
hns は昔のPerlで動かす作りなので、あちこちの記述が今のPerlと合ってない。修正しないといけない。
まず、defined( @... ) がエラーを出していた。昨今の Perl は defind() を省いて記述するらしい。
lib/ObjectTemplate.pm
defined( %... ) もエラーを出すけれど、そのあたり、手元のスクリプトでは、以前修正していた模様。
まず、defined( @... ) がエラーを出していた。昨今の Perl は defind() を省いて記述するらしい。
lib/ObjectTemplate.pm
if (defined (@{"${pkg}::ISA"})) { ↓ if ( @{"${pkg}::ISA"} ) {
defined( %... ) もエラーを出すけれど、そのあたり、手元のスクリプトでは、以前修正していた模様。
◎ 正規表現指定時に「{」があるとエラー。 :
昨今の Perl は、正規表現の指定時に 「{」が入っているとエラーになる。「\{」にする。
lib/HNS/Diary.pm
lib/HNS/Template.pm
lib/HNS/Hnf/Command.pm
lib/HNS/Hnf/UserVar.pm
lib/HNS/Diary.pm
$head =~ s/%user{([A-Z]+)}/$self->user_var->Eval($1)/ge; # user var ↓ $head =~ s/%user\{([A-Z]+)}/$self->user_var->Eval($1)/ge; # user var
$user_var =~ s/%user{([A-Z]+)}/$self->user_var->Eval($1)/ge; # user var ↓ $user_var =~ s/%user\{([A-Z]+)}/$self->user_var->Eval($1)/ge; # user var
lib/HNS/Template.pm
$template =~ s/%{?([A-Za-z0-9_]+)}?/$$params{$1}/g; ↓ $template =~ s/%\{?([A-Za-z0-9_]+)}?/$$params{$1}/g;
lib/HNS/Hnf/Command.pm
$$attr =~ /^#{.*#(\d{4})(\d{2})(\d{2})((\d+)(S(\d+))?)?}$/) { ↓ $$attr =~ /^#\{.*#(\d{4})(\d{2})(\d{2})((\d+)(S(\d+))?)?}$/) {
lib/HNS/Hnf/UserVar.pm
$template =~ s/%user{([A-Z]+)}/($1 eq $name) ? "'$name' FORMAT ERROR: self-reference" : $self->Eval($1)/ge; #call recursible ↓ $template =~ s/%user\{([A-Z]+)}/($1 eq $name) ? "'$name' FORMAT ERROR: self-reference" : $self->Eval($1)/ge; #call recursible
◎ theme.ph が見つからない。 :
index.cgi の中で、カスタムテーマファイル $theme_ph を require しようとして見つからないと言い出す。昨今の Perl は検索パスの中から「.」が除外されたのでそういうことが起きる。ひとまず、「./」を頭につけて誤魔化す。
index.cgi
ここまで修正して、ようやく hns が Debina Linux 10 buster 上で動くようになった。数日ぶりに懐かしい(?)ページが表示された。
index.cgi
unless (-f "$theme_ph"){ die "no theme file : $theme_ph"; } require "$theme_ph"; ↓ unless (-f "./$theme_ph"){ die "no theme file : ./$theme_ph"; } require "./$theme_ph";
ここまで修正して、ようやく hns が Debina Linux 10 buster 上で動くようになった。数日ぶりに懐かしい(?)ページが表示された。
◎ hns-index2を動かすべく作業。 :
hns は Namazu v2 for hns というプログラム群を動かすことで検索機能を持たせることができる。
_Namazu v2 for hns による日記の全文検索
~/diary/bin/hns-index2 を実行することで、検索用インデックスを作成する。この hns-index2 を動かせる状態にしないといけない。
今回は、Namazu v2 for hns をローカルアカウントに再インストールすることにする。
必要なパッケージをインストール。もしかすると不要なパッケージが混じっているかもしれないけど…。
旧自宅サーバ機(Vine Linux機)から、既に、~/ は持ってきているので、~/namazuv2forhnssetup/ に関連ファイルが入っていた。それらファイルを使って再インストール作業をする。
namazu2 をインストール。
namazu_for_hns をインストール。
hns-index2 を実行してみる。
locale 関係のエラーが出た。hns-index2 は Perlスクリプトなので、テキストエディタ等で中を覗くことができる。hns-index2 内の LC_ALL を指定してるあたりを以下のようにしてみたらエラーが出なくなった。
また、一部のPerlスクリプトがエラーを出している。「{」を「\{」にしないといけない。
これで hns-index2 が動いてくれるようになった。
_Namazu v2 for hns による日記の全文検索
~/diary/bin/hns-index2 を実行することで、検索用インデックスを作成する。この hns-index2 を動かせる状態にしないといけない。
今回は、Namazu v2 for hns をローカルアカウントに再インストールすることにする。
必要なパッケージをインストール。もしかすると不要なパッケージが混じっているかもしれないけど…。
sudo apt install nkf chasen kakasi mecab sudo apt install jcodepl libunicode-maputf8-perl sudo apt install libtext-kakasi-perl libtext-chasen-perl libtext-mecab-perl libmecab-perl sudo apt install libnkf-perl libfile-mmagic-perl libfile-spec-perl libwww-perl libimage-size-perl sudo apt install namazu
旧自宅サーバ機(Vine Linux機)から、既に、~/ は持ってきているので、~/namazuv2forhnssetup/ に関連ファイルが入っていた。それらファイルを使って再インストール作業をする。
namazu2 をインストール。
mkdir ~/lib cd ~/namazuv2forhnssetup/namazu-2.0.21/ make clean ./configure --prefix=$HOME/diary/namazu2 --with-pmdir=$HOME/lib make make installこれで、~/diary/namazu2/ 以下に色々なファイルがインストールされた。
namazu_for_hns をインストール。
cd ../namazu_for_hns-2.0-pl5 ./setup-filter.sh $HOME/diary/namazu2 ./setup-u.sh $HOME/diary/namazu2これで、~/diary/bin/ 以下に色々なファイルがインストールされた。
hns-index2 を実行してみる。
cd ~/diary/bin ./hns-index2
locale 関係のエラーが出た。hns-index2 は Perlスクリプトなので、テキストエディタ等で中を覗くことができる。hns-index2 内の LC_ALL を指定してるあたりを以下のようにしてみたらエラーが出なくなった。
LC_ALL="ja_JP.UTF8" export LC_ALL
また、一部のPerlスクリプトがエラーを出している。「{」を「\{」にしないといけない。
Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/%{ <-- HERE ?([a-z]+)}?/ at /home/mieki256/diary/namazu2/share/namazu/filter/hnf.pl line 244. Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/%{ <-- HERE ?([a-z]+)}?/ at /home/mieki256/diary/namazu2/share/namazu/filter/hnf.pl line 244. Useless use of greediness modifier '?' in regex; marked by <-- HERE in m/^\w+:{1,1}? <-- HERE / at /home/mieki256/diary/namazu2/share/namazu/filter/mp3.pl line 155.以下のファイルを修正。
- ~/diary/namazu2/share/namazu/filter/hnf.pl の244行。
- ~/diary/namazu2/share/namazu/filter/mp3.pl の155行。
これで hns-index2 が動いてくれるようになった。
◎ hns-index2の文字化け対策。 :
hns-index2 の出力する文字コードは euc-jp なのだけど、Debian Linux の標準の文字コードは UTF-8 なので、何が出力されているのか分からない。
nkf を使って変換する。
一応他の操作もメモ。ゴミファイルを削除するなら以下。
インデックスを作り直すなら以下。
nkf を使って変換する。
$ ./hns-index2 | nkf -w 検索対象のファイルを調べています... インデックスすべきファイルはありません
一応他の操作もメモ。ゴミファイルを削除するなら以下。
./hns-index2 -gc | nkf -w
インデックスを作り直すなら以下。
./hns-index2 clean | nkf -w何か表示がおかしい場合、これを使ってインデックスを作り直せば解決することが多い。
◎ mknmzrc を変更。 :
~/diary/namazu2/etc/mknmzrc を修正。以下に対応させる。
- LAN内でも検索結果を使えるようにする。
- mod_rewrite に対応させる。
$ADDRESS = 'hoge@fuga.com'; $hnf::diary_uri = ""; $hnf::author = 'hoge@fuga.com'; $hnf::link_templ = '%year%month%day.html#%year%month%day0'; # one day
◎ crontabで指定。 :
一般的には hns-index2 を cron で定期的に実行するものだろうけど、hns-index2 だけを実行すると相変わらず結果が文字化けする。
「| nkf -w」をつければ文字化けしないが、crontab 内にパイプは書けない。別途スクリプトを書いて、そのスクリプトを crontab 内で指定する。
~/diary/bin/hns-index2-cron.sh を作成。中身は以下。
パーミッションを変更。
./hns-index2-cron.sh を実行してみて正常に動作するか確認。
crontab -e で、毎日処理するように指定。
「| nkf -w」をつければ文字化けしないが、crontab 内にパイプは書けない。別途スクリプトを書いて、そのスクリプトを crontab 内で指定する。
~/diary/bin/hns-index2-cron.sh を作成。中身は以下。
#!/bin/sh /home/USERNAME/diary/bin/hns-index2 | nkf -w
パーミッションを変更。
chmod 755 ~/diary/bin/hns-index2-cron.sh
./hns-index2-cron.sh を実行してみて正常に動作するか確認。
crontab -e で、毎日処理するように指定。
30 6 * * * /bin/sh /home/mieki256/diary/bin/hns-index2-cron.sh時、分、日、月、曜日、コマンド、の順で記述するらしい。
◎ 検索ページのカスタマイズ。 :
公式ドキュメントにも書いてあるけど一応メモ。
検索ページの表示テンプレートは以下にある。
以下が、日本語表示のテンプレート。
テンプレートは、基本的に HTML で記述されている。一部、<!-- FILE --> のような特別な意味のあるコメントや、{cgi} のように namazu.cgi で自動的に変換される文字列があるので、それらはそのままに。
既にインデックス作成済みの場合、テンプレート修正後に、~/diary/namazu2/index/ にある以下のファイルを削除してから、hns-index2 clean を実行してインデックスを更新する。
とにかく、テンプレートファイルを修正したら、特定ファイルを削除してから hns-index2 clean を走らせる…と覚えておけば良さそう。
検索ページの表示テンプレートは以下にある。
~/diary/namazu2/template/
以下が、日本語表示のテンプレート。
NMZ.body.ja NMZ.foot.ja NMZ.head.ja NMZ.result.normal.ja NMZ.result.short.ja NMZ.tips.ja
テンプレートは、基本的に HTML で記述されている。一部、<!-- FILE --> のような特別な意味のあるコメントや、{cgi} のように namazu.cgi で自動的に変換される文字列があるので、それらはそのままに。
既にインデックス作成済みの場合、テンプレート修正後に、~/diary/namazu2/index/ にある以下のファイルを削除してから、hns-index2 clean を実行してインデックスを更新する。
NMZ.body.ja NMZ.foot.ja NMZ.head.ja NMZ.result.normal.ja NMZ.result.short.ja NMZ.tips.jaインデックスが更新されないと NMZ.*.ja は作成されない。
とにかく、テンプレートファイルを修正したら、特定ファイルを削除してから hns-index2 clean を走らせる…と覚えておけば良さそう。
[ ツッコむ ]
#3 [nitijyou] 雑貨を購入
ホーマックと100円ショップSeriaに寄って色々購入。
◎ クッションを買い替えた :
PC作業時、椅子にクッションを載せて、その上に座っているけれど、そろそろ汚れが目立ち始めたので新しいクッションを購入。Seriaで、38x38cm のクッション、40x40cmのクッションカバーを購入。
しかし、帰宅後、椅子に載せてみたら、小さい…。どうやら 50x50cm以上の大きさじゃないとダメっぽい。またどこかで探してこないと。
しかし、帰宅後、椅子に載せてみたら、小さい…。どうやら 50x50cm以上の大きさじゃないとダメっぽい。またどこかで探してこないと。
◎ 台所の止水栓を購入。 :
台所の止水栓が壊れたとのことで、ちょうどホーマックに行く予定だったから買ってきた。流し台ゴミ受、とレシートには書いてある。直径 8.5cm、深さ2cm。税込1,078円。結構高い…。その分、ある程度は頑丈であることを期待。
100円ショップ Seria にも寄ってみたけど、そちらは10cm以上のサイズしかなく。どうやら直径8.5cmというのは昭和のチマチマした台所の規格っぽい気配がする。今となってはマイナーなサイズなのではないかと想像したけど、どうなんだろう。
ついでに、3m延長電源コードも購入。DCMブランド品。税込437円。3M製コード用フックSサイズ透明も購入。415円。延長コードは脱衣所に設置した扇風機を回すために使う。
100円ショップ Seria にも寄ってみたけど、そちらは10cm以上のサイズしかなく。どうやら直径8.5cmというのは昭和のチマチマした台所の規格っぽい気配がする。今となってはマイナーなサイズなのではないかと想像したけど、どうなんだろう。
ついでに、3m延長電源コードも購入。DCMブランド品。税込437円。3M製コード用フックSサイズ透明も購入。415円。延長コードは脱衣所に設置した扇風機を回すために使う。
[ ツッコむ ]
以上、1 日分です。