[ADP開発日誌]0.61リリース OpenBlocks600D対応+WOL(Wake On Lan)

以前に、ADPをOpenBlocks600Dに対応させた話を書きましたが、予告(?)どおりADP 0.61のリリースを行います。ブログビューワーの方は後ほどということで・・・必要な方はコメント欄にほしいとリクエストください(気持ち急ぎます)。
 
OpenBlockS600Dのバイナリ版を実行させる場合は以下のパッケージがインストールされている必要があります。
  • libboost-regex1.35.0
  • openssl
  • unixodbc

場合によっては(ソースからコンパイルされる方は)さらに以下のパッケージが必要です。
  • libboost1.35-dev
  • libssl-dev
  • unixodbc-dev
 
ちなみにWindows版のバイナリは、特に依存関係はないので、そのまま実行できます。
 
0.60でパフォーマンスを上げたのですが、バグがぼろぼろ出まして修正しました。だいぶ品質が向上したかと思います。もっとも、もっと本格的なテストプログラムを記述しないとダメだと思いますが・・・そのノウハウの蓄積は今後に期待ですね・・・。
ただ一部の修正(メモリの管理関係)でパフォーマンスが下がったのでこのあたりはまた変更する必要があります。オープンソース&マイナープロジェクトの良いところはバグを恐れずにガシガシ修正できるところですね、お金を頂戴するプロジェクトではここまで冒険はできません・・・。
 
また、今回のリリースではwol(Wake On Lan)述語(関数)も追加しています。文字通りWOLパケットを送出する述語です。
何でこんな述語を追加したのかと言いますと、前回の記事のとおり最近モバイル環境を構築したのですが、これに加えてVPNを構築すると外部からイントラ環境にログオンすることができ、そうするとリモートディスクトップで私のマシンにログオンしたくなるのですが、ログオンするためには電源が入っていなければならず、とは言っても何時ログオンするかどうか解らないマシンの電源を入れっぱなしにする訳にもいかない、という訳でWOLで電源を入れることになり述語を追加しました。
WOLを送信するマシンは、LED電球並の消費電力のOpenBlocks600Dにすればよろしいでしょう。外部からはウエブから入るようにします。つまりブログビューアと同様にADPでWEBページをホストします。
というわけで、以下、WOLのコードになります。
 
wol.awp
#!/bin/adp -
<%;
+keycode("password");	# パスワードを指定
+machines("00-11-22-33-44-55", "machine1");	# MACアドレスとマシン名(適当でよい)を指定
+machines("66-77-88-99-aa-bb", "machine2"); # 複数あるときは同じように複数行にわたって記述する
+baddr("192.168.1.255"); # ブロードキャストアドレスを指定
,query("KEY").keycode, $mac =query("MAC"), wol($mac, =baddr);
%>
<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ネットワークブート</title>
</head>
<body>
ネットワークブート
<%,query("MAC",$mac),%><%=$mac%>BOOT中<%;%>
<br>
<form action="wol.awp" method="post" OnSubmit="return confirm('起動しますか?')">
キーコード:<input type="text" name="KEY" value=""><br>
起動マシン:
<select name="MAC">
	<%,machines($mac, $name) ,%>
		<option value="<%=$mac%>"><%=$name%>
	<%,next;%>
</select>
<input type="submit" value="boot">
</form>
</body>
</html>
※2012/05/21 Ver 0.81のリリースにあわせて更新
 
ファイル名はwol.awpとします。form actionの引数を変えればファイル名自体はなんでも構いません(まぁ解らないようにした方がよい)が、拡張子はawpにする必要があります。
awpとは「Adp Web Page」の略で、ADPでWEBページをホストするモード(AWPモード)の拡張子になります。
Ver0.61では、拡張子がawpまたはcgiのみAWPモードになります。
 
これをApacheでcgiスクリプトとして、ホストすればOKなのですが、その前にスクリプト使い方の説明を、
先頭の3行目から6行目が設定になります。最低限のセキュリティということで、
パスワードの指定(3行目)と起動対象のマシンのMACアドレスと名前(4,5行目)と
起動対象のマシンがあるブロードキャストアドレスを指定(6行目)になります。
 
スクリプトの動作環境の設定ですが、PerlやPHPのCGIと同様にセットアップして頂けれたよいのですが、以下、apacheでのセットアップを簡単に説明します。
adpの実行ファイルを、/bin に保存します。/binがダメな方は、上記のスクリプトの1行目でadpのパスを指定します。
apacheのconfファイルですが、DirectoryのOptionsにExecCGIを追加し、AddHandlerで .awpを追加します。
以下、サンプルを載せます。
    <Directory "/var/www/html">
        Options FollowSymLinks ExecCGi +Includes
        DirectoryIndex index.html index.php index.awp
        AddHandler  cgi-script .awp
        AddHandler  cgi-script .cgi
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

Windows+IISでも動作可能です・・・設定方法は・・・まぁがんばってみて下さい。
(ご要望がありましたら設定方法を記載します・・・)
2011-02-18 | コメント:0件



OpenBlockS 600

Windows7,2008R2に引き続き、これまた1年越しの作業になりましたが、我がohfuji.nameをホストするマシンをOpenBlockS 600(正確にはOpenBlockS 600D相当)に置き換えました。
 
OpenBlockS 600とは、ぷらっとホーム社さんが製造・販売しているマイクロサーバーで、こちらが製品情報になります。ちなみに2月現在キャンペーンをやっておられます。
 
OpenBlockS 600自体の解説はいろいろな場所で行われているので、そちらにおまかせしますが、特質すべきは、抜群の低消費電力で、私がエコワットで測定した結果は9Wでした。またファンレスでストレージはコンパクトフラッシュを使うので音が出なくてかつ障害に強く、商業利用はもちろん、自宅サーバーとしても重宝するかと思います。
 
OSですが、OpenBlockS 600はSSD Linuxがプリインストールされています。また600DはDebianがプリインストールされています。メモリは1GB積んでいますのでDNSサーバーやメールサーバーとしては申し分ないスペックです。
難点が、CPUにPOWER-PCを使用しているところで、私のようなプログラミングをする人間にとっては開発環境を別途用意しないといけないのと、さらにそのCPUの動作周波数が600MHzとお世辞にも速いと言えないところで、Apacheで静的なページを運用するならともかく動的なページは難があるかと思います。特に普通のサーバーでも重たいWordpressをOpenBlockS 600で運用するのは厳しいかと思います。
 
では、このブログ(Wordpressなんですが・・)はどうしているのかと言いますと、このページはADPで作成したブログビューアーで表示しています。我がADPもOpen BlockS 600Dに移植しまして、このとおり動作しておる次第です。このページを頻繁に訪問される方は気がついておられたかと思いますが、最近Wordpressが重くなっていたので、どげんかせんといかんと思っておったところです。このような厳しい条件を克服するのはソフトウェアエンジニアとしてロマンを感じたりします。
しばらく運用してみてOKであれば、OpenBlockS 600D版のADPと共にブログビューアー(Adp WorPdress bLOG viewer - AWPLOG)のソースを公開しようかと思っております。

2011/06/23 追記:節電の為、自宅サーバー類は仮想マシンとして別のサーバーに集約しましたので、現在このサーバーはOpenBlocks 600D上では動作していません。
2011-02-07 | コメント:0件



Windows2008R2 DNSサーバーで逆引きができない(イベントID:5504)

しつこくWindows2008R2ネタですが、覚書ということで、
Windows2008R2に付属のDNSサーバーで、IPアドレスの一部が逆引きができずにイベントビューアーにID:5504が記録されました。また一部で逆引きが通ったりするので厄介でした。 

いろいろ探しましたが、結局以下のページ
Forum FAQ: How to troubleshoot DNS Event 5504 error の4番目の解決策の
 
dnscmd /Config /EnableEDnsProbes 0
 
でOKでした。
ネットを探すと他にも、
DNS event 5504 - server encountered an invalid domain name in a packet というのがあったのですが、このページにあるShilpesh Desai MSFTさんの『Accordig to KB 198410, it should have non-zero value. - KB198410によるとこのレジストリの値を0以外にする。』に対して、Jharris1993さんが
『Huh? Did you read the KB article? (head in hands, shaking head in wonder) - はぁ、ちゃんとKB読んだ?』
『The correct statement is: According to KB-198410, it should have a zero value if the key exists. - 正しくは:KB198410によるとキーが存在するときはこのレジストリの値を0にする。』
とShilpesh Desai MSFTさんをバカにしていますが、私もKBを読みましたが、Shilpesh Desai MSFTさんの説明は、間違いではないでしょう。なぜなら通常はこのレジストリキーは存在せず、その場合、値zeroと解釈されるので、トラブルシュートを行うならzero以外の値にすべきでしょう。もっともそれでトラブルが解決するとも思えなかったのでこの方法は試しませんでしたが・・・
2011-01-28 | コメント:0件



IIS7.5でクラシックASPの拡張子をASP以外にする

さらにWindowsネタが続きますが、まぁ覚書ということで。
IIS6(Windows2003)では、マッピングを追加すれば、クラッシクASP(VBScriptで記述するASP)のファイル拡張子をasp以外(例えばcgiとか)にすることができましたが、Windows2008R2に付属のIIS7.5でかつアプリケーションプールを32ビットで動作させた場合、単純なハンドラの追加以外にちょっとしたひと手間が必要になります。

(1)ハンドラの追加
ハンドラーマッピング『管理ツールから、役割→Webサーバー(IIS)→インターネットインフォメーションサービス(IIS)マネージャ 』から、『サーバー名→サイト→WEBサイト名』で、右ペイン『(機能ビュー→)ハンドラーマッピング』でASPClassicと同様にハンドラを追加します。
ここまでは普通の手順になります。
 
 
(2)preCondition設定
続いて、同機能ビューから『構成エディタ』を起動します。構成エディタ画面の『セクション→system.webServer/hander』で『コレクション』の行にあるボタンをクリックします。
上のペインで、追加したハンドラを選択し、下のペインにあるpreCondition設定の値を空欄にします(bitness64を削除します)。
 
 
2011-01-27 | コメント:0件



Windows2008R2ではNTBACKUPでバックアップできないらしい

ここしばらく、Windowsネタが続きますが、サーバー移行の覚書ということで。
Windows2008(R2) では、NTBACKUPからWindows Server Backupというソフトに置き代わり、バックアップの使い方もかなり変わったのですが、昔のNTBACKUPを使いたいとう欲求に駆られるでしょう。私もその一人だったのですが、残念ながらNTBACKUPを使うことができませんでした。
ちなみに、リストアのみでしたらリストア用のNTBACKUPがダウンロードできるので使えます。ただ、R2の方はインストールにはまるかと思います。以下のサイトをご参考に、
NTBackupバックアップファイルをWS2008 & R2で復元  
上記サイトのリンク先Running NT Backup under Windows 7にありましたが、Windows2003からNTBACKUP.EXEを持ってきてNTBACKUPをバックアップとして使う方法を試してみましたが、Windows 2008 R2ではNTBACKUPでバックアップはできないようです。以下試したことを列挙します。
  • Windows 7 64ビット版では動作した(Windows 2003SP2 32ビット版のNTBACKUP使用)。

  • Windows 2008 R2では、「シャドーコピーを使ってバックアップを準備中」で止まる。イベントビューアにVSSのエラーが出力される。

  • Windows 2003SP2 32ビット版のNTBACKUPの場合、イベントID:20(ボリューム シャドウ コピー サービス エラー: ボリューム シャドウ コピー インフラストラクチャをセーフ モードで使用することはできません。)、8193(ボリューム シャドウ コピー サービス エラー: ルーチン CoCreateInstance の呼び出し中に予期しないエラーが発生しました。hr = 0x80040154)が出力される。

  • Windows 2003SP2 64ビット版のNTBACKUPの場合、イベントID:8205(ボリューム シャドウ コピー サービス エラー: IVssCoordinator から IVssShim に QueryInterface を呼び出している最中にエラーが発生しました。hr = 0x80004002。)が出力される。Running NT Backup under Windows 7でも同様のエラーが出た人がいるようで、質問している人がいましたが返答はありませんでした。

  • ダメ元で、http://support.microsoft.com/kb/940032/jaを試してみたが、やはりダメだった。

  • Windows 7 x64でNTBACKUPが動作していたので、Windos 7にインストールしていたアプリ(Visual Stduio 2010、SQL Server 2005、を入れてみたがダメ
 
日本では嵌ったという方がいらっしゃらないようなので報告まで。 
私の場合は、結局NTBACKUPを使うのをあきらめてWindows Server Backupを使うようにしました。
2011-01-26 | コメント:2件
Previous Page | Next Page