2013/10/07(月)FreeBSD 9.2R リリース

2017/10/12 5:42 サーバ運営・管理
掲載が遅れましたが、9/30 にリリースされました。
FreeBSD 9.1R または FreeBSD 8.3R/8.4R からのアップデートが可能のようです。
また、FreeBSD 10のα版がお目見えしています。

アナウンスによれば(適当な意訳です):
・ZFS ファイルシステムは、TRIM をサポートした.
・virtio(4) ドライバを amd64とi386 アーキテクチャー向け GENERICカーネルコンフィギュレーションに追加した.
・ZFS ファイルシステムは、lz4 圧縮を新たにサポートした.
・OpenSSL のバージョンを 0.9.8y に更新した.
・DTrace を GENERIC カーネルコンフィギュレーションにてデフォルト有効に変更した.
・DTrace のバージョンを1.9.0 に更新した.
・Sendmail のバージョンを 8.14.7 に更新した.
・OpenSSH のバージョンを 6.2p2 に更新した.
・headブランチ(先進開発チームの意)から、unmapped I/O サポートを組み込んだ.
#ちょっと、最後だけ具体的な内容がわかりません・・・

となっています。
新たに設定されたサポート期限は、以下の通りです。
20131007.png

2013/09/30(月)サーバ監視ツール munin 1.4.x → 2.0.x

2017/10/12 5:40 サーバ運営・管理
この手のツールには、zabbix や Nagios などあるのですが、どちらかといえば大規模向けであり、実際は専用の監視サーバを用意しないと使い物にならない代物で、中小規模には不向き感が強い。

筆者は munin 1.2 の頃から使ってはいますが、アップデート作業の負担が大きい感があり、久々に重い腰を上げて対応してみたというところです。

まだ蓄積を始めたばかり(以前の監視データは思い切って削除・・・)なので、観るべきデータはスカスカですが。。。こんな感じで各種情報がグラフの形で得られます。
20130930_1.png

全体の感じはこんな感じ。目の前のディスプレイはまだワイドタイプではないので、横が切れています。
20130930_2.png

というか、最近はワイドタイプディスプレイ前提のWebアプリケーションやWebサイトが当たり前になってきたのです・・・あぁ。。orz

今回から、FreeBSD の Ports にて構築することにしました。
/usr/ports/sysutils/munin-node ・・・ 監視対象のサーバにインストール
/usr/ports/sysutils/munin-master ・・ 監視を行うサーバにインストール

監視を行うサーバには、当然のことながら Apache などの Web サーバが稼動していなければなりません。munin は、監視を行うサーバにて、監視対象のサーバから独自プロトコルで情報を取得し、統計情報の蓄積と HTML・グラフ生成を行うような仕組みになっています。

詳しい構築方法は、各所で紹介されているのでとりあえずそちらに任せるとして、
忘れがちなのは、監視対象のサーバにて、具体的な監視対象を設定する操作。

FreeBSD にて munin-node をインストールすると、/usr/local/etc/munin 配下に設定ファイルが作成されています。ここの munin-node.conf を適宜変更するのですが、これだけでは駄目で、 /usr/local/etc/munin/plugins 配下に具体的な監視対象をシンボリックリンクの形で設定する必要があります。

まず、/usr/local/etc/munin/plugins にディレクトリを移動しておいて、
rootユーザ にて、
munin-node-configure --suggest
を実行。そうすると、監視対象サーバにおいて、実際に監視対象にできる内容などが表示されます。
Plugin                     | Used | Suggestions
------                     | ---- | -----------
amavis                     | no   | no
apache_accesses            | no   | yes
apache_processes           | no   | yes
apache_volume              | no   | yes
利用可能はものは、Suggestions のところに yes が表示されます。
ここで、
munin-node-configure --shell
とすると、設定するための unix コマンドが表示されます。
上記の例とは合いませんが、こんな感じ:
root# munin-node-configure --shell
ln -s '/usr/local/share/munin/plugins/if_' '/usr/local/etc/munin/plugins/if_usbus'
ln -s '/usr/local/share/munin/plugins/if_errcoll_' '/usr/local/etc/munin/plugins/if_errcoll_usbus'
ln -s '/usr/local/share/munin/plugins/munin_stats' '/usr/local/etc/munin/plugins/munin_stats'
この部分をカレントディレクトリ(/usr/local/etc/munin/plugins) にて、コマンドラインにて実行すれば設定完了。
このあと、監視対象サーバをリブートすれば設定完了。
以前のバージョンより動作も軽いです。

2013/09/26(木)Apache 2.4.6 + mod_perl2

2017/10/12 5:38 サーバ運営・管理
記事が消えてしまったので、再度書き直し...orz
Apache は有名な Web サーバアプリケーションで、当方でも多用しています。
現行バージョンは 2.0.65(Ver 2.0系)、2.2.25(Ver 2.2系)、2.4.6(Ver 2.4系) の3つ。
現時点で最も普及しているのは、おそらく 上記のVer2.2系でしょう。

ですが、Ver 2.4系への以降が始まっています。
Linux の Debian や Fedora あたりはサポートの主力を Ver 2.4系に移行したとか。
当方でも FreeBSD ではありますが、このブログを含むWebサーバを Apache 2.4に移行しました。
20130926.png

題名の Apache 2.4.6 + mod_perl2 ですが、この組み合わせではそのままではインストール自体ができません。正式対応もしていません。
Apache 2.4 に対応したパッチを mod_perl2 に施す必要があります。
#mod_perl 2.0.8 用のパッチはありませんが、mod_perl 2.0.7用のパッチを一部変更で対応できます。

また、Perl 5.18 で mod_perl2 を動作させるには、 mod_perl 2.0.8 を導入する必要があります。
公式サイト(?)には掲載がありません)

特に新規案件で Apache 2.4 に移行しようか否か迷っているサーバ管理者も居られると思いますが、まだ時期尚早だと思います。ソフトウェア対応でまだ苦労しますので、、
mod_perl2 が Apache 2.4 対応になれば検討してもいいでしょう。

mod_perl2 は現在、Apache 2.4 対応作業が進められていますが、提供形態の検討を経て、作業が始まったのは先月くらいからのようです。

また、最近の mod_perl2 は、ソースコードから構築作業の際、
uninitialized value $v in concatenation (.) or string at
Apache-Test/lib/Apache/TestRun.pm line 1100
のようなエラーが出て、構築処理が中断してしまいます。
# mod_perl 2.0.5 あたりからこの現象は確認できるが、何故か一向に対処されない。

これの対処は、上記ファイルの 1100行目付近を
    while (my($k, $v) = each %args) {
      if (defined $v) {
        $v =~ s/\|/\\|/g;
        $body .= "\n\$Apache::TestConfig::Argv{'$k'} = q|$v|;\n";
      }
    }
のように変更して、再度構築作業をやり直せば大丈夫です。

2013/09/24(火)FreeBSD - ices0 が配布パッケージから除外(icegenerator の導入)

2017/10/12 5:37 サーバ運営・管理
ices0 というのは、インターネットラジオ放送において、エンドレスで繰り返し音楽などを流すためには欠かせないソフトウェアのひとつです。
これを「ストリーミング」などと言います。

有線放送におけるBGMを流すために不可欠なものと思って結構です。
今般、2ヶ月ぶりにサーバの各種モジュールをアップデートしようとしたら、FreeBSD の配布モジュール Ports において、24000余りのモジュールが更新・削除などされている模様。。orz

その過程で、提起の ices0 の提供が無くなってしまい、MP3 形式で保存してある数多くの音楽をストリーミング出来なくなりました。
ices0 の代わりになるものを探さなければならない。
ちょっと調べると icegenerator を代わりに使えということらしい。仕方が無いので、これを導入すること にしました。

しかし、いざ導入となるとあまり情報がありません。しかも結構古く、更新が2006年あたりで止まっている。。。大丈夫かいな? と心配でしたが、案の定少し嵌りました。。
以下、自分メモ。

MP3 形式のストリーミングには、この icegenerator のほかに
・icecast2 (現バージョン 2.3.3、libshout,lame など別途必要)
・id3lib (現バージョン 3.8.3、曲目メタ情報の処理に必須)

を予めインストールする必要があります。
上記をインストールした環境で icegenerator をインストールしないと面倒です。
icegenerator は、FreeBSD の場合は Ports からインストールが無難。
先ず、
# cd /usr/ports/audio/icegenerator
として、該当モジュールのディレクトリへ移動。
ここで、Makefile を以下の赤文字部分追加:
CONFIGURE_ARGS=   --exec-prefix=$PREFIX --with-shout=/usr/local --with-id3=/usr/local

ここで、
# make install
とすると、自動的にインストール作業が始まりますが、コンパイルエラーが2箇所出て途中で止まってしまうので、コンパイルエラーで指摘された部分をエラーメッセージを参考に手動修正しなければなりませんでした。

コンパイルが通って、インストールが終われば今度は設定ファイルの作成。
icecast2 の設定は、基本的に以前の設定を変える必要無し。
icecast2 の設定は、ここ を参考に。

問題は、icegenerator の設定。一応 ここ にわかりやすくまとめられてはいるが、鵜呑みにできま せん。
自らの環境に合わせて変えるのは言うまでもないですが、
SOURCE=source
は、このままでOK.ですが、
BITRATE=48000
は、WinAMP では上手く再生できるものの、当方には これ↓ (BB-shout) があり、
webradio01.jpg
接続してみると、どういうわけかエラーになります。
1時間ほど試行錯誤繰り返してみると、どうもここは、
BITRATE=48
のように 1kbps 単位で指定しないと駄目っぽい。BB-shout のバグなのか、icegenerator のバグか判りませんが、ともかくこの指定で動作するようになりました。

2013/09/19(木)Apache 2.4 では、HTMLヘッダの自動修正をする??

ここ1ヶ月、某会社のシステム構築の仕事の依頼を受け、せっせと組み上げておりました。
「頑丈な造りを」ということで、脱Windows、自動バックアップ付きの仕様です。
1台の機器にてRAID 構成にするよりは、2台の機器(うち、1台は既存機器)を使って、LANを通して自動バックアップ構成をとったほうが安価で機能的にもほぼ同等で確実な構成に出来るのですが、この点、頑なに理解しない技術屋も結構居ます。

先日、新規サーバ1台とセットで設置しに行ったわけですが、現場でサーバ上で稼動させるデータベースに自動バックアップの構成を構築した後にデータを投入し、GUIインタフェースとなるWebブラウザのため のサーバ Apache 2.2(現行は 2.2.25) をサービス開始するわけですが、不可解な現象に数時間悩む・・・

通常、
20130919_1.png

のように、表示されるわけですが、何故か
20130919_2.png

のように、CGIが吐き出すHTMLをテキストでそのまんま出してしまう。。
要するに text/plain で表示されてしまうわけです。

何をやっても駄目で、どういうわけか IE8 ではきちんとページが表示されるが、手元の Firefox と Chrome は text/plain モードな表示です。

現場で数時間悩んだものの、とりあえず IE8 で簡単な説明をして(IE8 ではまともに表示しないので、アップデートをお願いしておいた)、現場を引き上げ、その後から仕事場でプロトコル解析です。

ほどなく原因が判りました。通常、CGIからHTMLなページを表示させるには、
Content-type: text/html; charset=utf-8

といったヘッダ行を(標準出力へ)最初に出し、更に(標準出力へ)空の行を1行出して、本体との区別を行い、そこからHTML本体を(標準出力へ)流し込む形を取ります。このヘッダ行に問題があって、

4637Content-type:

みたいな状態になっていました。問題の部分はここ
# HTMLヘッダ出力
sub out_header {
  my ($mimetype,$hstr) = @_ ;
  print $hstr if ($hstr ne "") ;
  print "Content-type: $mimetype\n\n" ;
}


これを呼び出すところで、
out_header('text/html; charset=utf-8',length($outstr),undef) ;

のようになっていたわけです。
($outstr には、HTML ページ本体を文字列の形で格納している。length はその長さを返す)
構築作業中、Apache 2.4 上で制作していたためか、このような現象には一切遭遇せず、納品サーバで動作確認していなかったのが原因ですが、レベルの低いところで悩みまくっていましたorz

・この現象は、Apache 2.2.x で発生し、 Apacxhe 2.4.x では発生しないようです。
・Apache 2.4.x では、CGIが出すヘッダが狂っていても、本体部分をチェックして適切なヘッダに書き換えるようです。
・Apache 2.2.x でも、ブラウザが IE8 では発生せず、HTMLなページが表示されます。しかし、IE9 以降では、text/plain な表示になります。
・IE8 では、不明ヘッダは text/html として処理するが、IE9 以降や Firefox,Chrome においては、text/plain の処理となるようです。

2013/08/13(火)Twitter への自動連携がダメダメだった件・・・

2017/10/12 5:32 サーバ運営・管理
とある友人に指摘されたのですが・・・
1日2~3回、当方の私設観測所で常時観測している気温の自動ツイートと、
1日2回自動ツイートしている、日の出・日の入り時刻が上手く行っていないことに気がつき、昨夜遅くに対処しました。

今年5月か6月くらいに自動観測機器が風雨の影響で不具合起こし、修理したのでその影響かと思っていたのですが、原因調べたら、Twitter API のバージョンアップに対応していなかったのが原因だったです。はい 。

こんな感じで、当方のTwitter アカウントにて自動ツイートされます。
20130813.png


ご指摘頂き、ありがとうございました(^^)。

2013/07/19(金)参議院議員選挙開票日が近づいていますね

今回から、ネット選挙活動が大幅解禁になりましたが、有権者にとっては中途半端で、気を使うので今ひとつ感もありますが・・・

北海道選挙区における立候補者です:
20130719_election.jpg

このうちの上位得票2名が議員になります。北海道選挙区は2人区です。
筆者は既に不在者投票にて、投票を済ませました。
普段から、少なからずサークルみたいなもので政治勉強会に参加していたので、候補者選びは苦ではなかったのが大きい。

選挙になると、「この期間だけしつこい人」が少なからず居ります。
最近思うのですが、普段疎遠がちな人に対して、この時だけ「後援会に入ってくれ」とか「投票よろしく」とか言われても「なんだかなぁ・・・??」という感だけがあり、旧態のそういうやり方はどうよ? と思っ てしまいます。

 そんなことよりも有権者も含めて普段から地域や国政に関心を持ち、常に情報発信していて、「仕事が見える」候補者ばかりであれば、何もしなくても自然に関心を呼び、民意を反映しやすくなる土壌が形成されや すい、と思うし、それを望んでいるのですが、一向に隠蔽体質のようなものは変わりません。日頃の何気ない交流が重要だと思います。

 また、最近では世論操作しているのはすぐバレますから、そういう姑息な手段で庶民を煽るマネはせずに、正々堂々とやって欲しいものだと思います。

2013/07/09(火)PDFJ を Perl 5.16 で動作させることに成功

以前、こんな話題を掲載しました。 → PDFJ は perl5.12 では動作しない模様

相変わらず、原因を追いかけるほど暇もカネも無いので、ほったらかしだったですが、今般開発中の案件に使えたら使いたいと思い、諸般の事情も手伝って、無理やり時間割いてみました。。orz

Google 殿に尋ねると、Perl 5.12 でも動いているよという情報も・・・
「うーむ、ウチでは Perl 5.12 にしたら動作しなくなったんだけどな!!」と思いつつ・・

FreeBSD では、ports にも PDFJ-0.90 が入っていて、Perl 5.14 で動作するようなパッチが当てられているようです。なので、これを ports にてインストール。でも、相変わらず 「PDF ファイルが壊れています」とAdobe Reader に怒られます。。

テキストエディタで「壊れている PDFファイル」を覗いてみる。すると、エラー内容などがテキストで吐き出されている。orz こんな感じ:
error in 'BODY': error in 'Block': error in 'break': error in 'do': error in
 'eval': eval error: 'print' trapped by operation mask at (eval 2122) line 2,
 line 3873.
: '
print "page",$page->pagenum,"\n" if $Args{'XPDFJ:verbose'} >= 0;
$Args{hfpage} ||= $page->pagenum;
' at libs/XPDFJ.pm line 589, line 3873.
ここで再び Google殿に尋ねると、perl 5.10 にて同じ現象で嵌った方が、、
PDFJをperl5.10で動かす 〔紀子さん@へぼぷろぐらまの日常〕

もう4年前のものなんですが、例の Perl 5.10用パッチ入れても動作しないという現象。
「ウチでは、Perl 5.10 では動作したなぁ」と思いつつ、どう対処したかというと

 『とりあえず該当行をコメントしてしまうという暴挙に出、まぁ解決』

 ぉ、、・・・orz
 でも、この暴挙を試そうと、該当箇所を探すが。。。
 XPDFJ.pm 上に無い。。散々探したあげく、モジュールで提供されているインクルードファイルに stddef.inc というファイルがあり、その中にありました。orz

 行番号なんかあてになりません。XPDFJ.pm にてインクルードした後の行番号が表示されている模様。。 stddef.inc の 1135行目あたりにありました。
#            <eval>;
#              print "page",$page->pagenum,"\n" if $Args{'XPDFJ:verbose'} >= 0;
#              $Args{hfpage} ||= $page->pagenum;
#            </eval>
こんな感じで「暴挙」を実施したところ・・・
動作するようになりました。たぶん、ページ番号振る部分ですかね。。

ひょっとして、これも Safeモジュール絡みかも??
エラーに print文の部分が含まれているからです。
追いかける暇なんぞ、なかなか持てないので、とりあえず文句言われない限りはこのままになると思います。。

2013/07/04(木)「造ります!」と言いだしてかれこれ4年・・・

20130704.jpg

・・・だそーです。国道5号線のとある案内表示より。

当初、札幌方面だけの出入り可能なように計画された話もあったらしいですが、
両方向から出入りできる「フル(full)」のインターチェンジになります。

料金見ると、現在の千歳IC より苫小牧寄りの設置になるため、札幌からだと現在の千歳IC で出るより +100円ですね。