2008年8月29日金曜日

Papervision3D 2.0 Beta1 & Flex SDK 3.1.0 & FlashDevelop 3.0.0 Beta8

スズキです。

"Papervision3D 2.0"がBeta1になり、
zipでダウンロードできるようになりました。
http://blog.papervision3d.org/2008/08/25/svn-changes-new-project-manager/

サンプルも見たことのないものがあったので、最新の"Flex SDK"で、
http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3
"FlashDevelop"使って試してみました。
http://www.flashdevelop.org/community/viewtopic.php?f=11&t=3470

"Flex SDK"は知らない間に"3.1.0.2710"に、
"FlashDevelop"も"3.0.0 Beta8"になってます。

無事、サンプルは確認できたのですが、せっかくなので、
以前、記事にしたテクスチャー使って
http://suz-lab.blogspot.com/2008/02/blog-post.html
地球を作ってみようと思ってます。
(バンプマップはどのくらい効果あるんだろう?)

できたら、"Google App Engine"に公開予定。
http://suz-lab.appspot.com/

週末、がんばろう。

--
http://suz-lab.blogspot.com/

2008年8月22日金曜日

jQueryを使ったかっこいいログインフォーム

スズキです。

下記サイトにて紹介されています。
http://nettuts.com/javascript-ajax/build-a-top-panel-with-jquery/

勉強がてらに、"Google App Engine"に組み込んでみようかなー。
http://suz-lab.appspot.com/

--
http://suz-lab.blogspot.com/

2008年8月20日水曜日

"Seasar Conference 2008 Autumn"に参加予定(2008/9/6)

スズキです。

昔はよくこの手のイベントに参加していたのですが、
近頃、何かと忙しくなって、そしてそれを言い訳にして、
だんだんと参加しなくなってしまいました。

ようやく、その忙しさもある程度落ち着いてきたので
(暇なわけではない)、また、技術系のイベントに参加していこうと
思っています。

ということで、まず、表記に参加する予定です。

参加予定セッションは下記となります。(一言コメント付)

▼13:00 - 13:45 SAStrutsとS2JDBCの最新機能
http://event.seasarfoundation.org/sc2008autumn/Session#a1
(そろそろ、本腰いれて試そうと思っている。)

▼14:00 - 14:45 T2 -the WEB2.0 Connector-
http://event.seasarfoundation.org/sc2008autumn/Session#c2
(この辺の考え方は、今の業務に通じるものがあるはず。)

▼15:00 - 15:45 AutumnだけどSpring
http://event.seasarfoundation.org/sc2008autumn/Session#a3
(SpringBatchは知っておきたい)

▼16:00 - 16:45 Teeda再考 - 使い方から拡張方法まで -
http://event.seasarfoundation.org/sc2008autumn/Session#c4
(Teedaの復習として、業務でも使ってるし)

ブログでお世話になってる人もいっぱいくるんだろうなー、
でも、誰がどのブログ書いてる人なのかわからないのが残念。

--
http://suz-lab.blogspot.com/

Pythonと日本語

スズキです。

"Google App Engine"で日本語(Python)という記事にを書いて
http://suz-lab.blogspot.com/2008/08/google-app-enginepython.html
「抜かれるならド肝だよね」さんから書きコメントをいただきました。
http://d.hatena.ne.jp/kimpo/

下記、その引用となります。
http://www.haloscan.com/comments/iretsuzuki/9139723967226038452/

> Python のデフォルトエンコーディングは
> インストール時のデフォルトが「ascii」になっているので,
> 日本語のデータをエンコーディング指定なしで入出力すると
> 必ずエラーになるそうです。
>
> 「#!-*- coding:utf-8 -*-"」のようにエンコーディング指定すれば,
> 好きなエディタ&好きなエンコーディングを使用しても
> 基本的に問題ないそうですが,
> 指定しないと非 ascii文字を使った場合,
> Python2.5以降ではエラーとなってしまい
> コンパイルが通らないみたいです。

つまり、日本語がエラーになってしまう問題は、
"Google App Engine"ではなく、おおもとのPythonの問題のようです。
とにかく、「#!-*- coding:utf-8 -*-"」ってことですね。

ありがとうございました。

--
http://suz-lab.blogspot.com/

2008年8月19日火曜日

"Google App Engine"で日本語(Python)

スズキです。

"Google App Engine"でPythonスクリプトに下記のように日本語書いて、
表示させようとしたら、
Internal Server Error
になってしまいました。

print "Content-Type: text/plain"
print ""
print "鈴木研究室"

で、日本語でもOKの状態にするには、下記のように先頭に、
#!-*- coding:utf-8 -*-"
の記述が必要となります。

#!-*- coding:utf-8 -*-"
print "Content-Type: text/plain"
print ""
print "鈴木研究室"

"Google App Engine"の問題なのか、Pythonの問題なのかは、
今の僕にはよくわかりません。

とりあえず、日本語O.K.

--
http://suz-lab.blogspot.com/

2008年8月18日月曜日

YAML Editor (Eclipse Plugin)

スズキです。

"Google App Engine"やり始めて、
app.yamlとかindex.yamlとか編集するようになったので、
下記のYAML編集用Eclipseプラグインを入れてみました。
http://code.google.com/p/yamleditor/

Eclipse3.4でも大丈夫です。

HTML/CSS/Javascriptのプラグインも入れなきゃ。

--
http://suz-lab.blogspot.com/

Javascriptの日付フォーマット変換ライブラリいろいろ

スズキです。

フィードの日付操作するのに必要だなーと思い、
ググりながら調べた結果です。(上二つが日本語です)

▼DateFormatter.js
http://clonedoppelganger.net/javascript/DateFormatter.html
▼dateformat.js - 日付フォーマット変換ライブラリ
http://www.enjoyxstudy.com/javascript/dateformat/
▼Date Formatting And Format Validation Functions
http://www.mattkruse.com/javascript/date/
▼JavaScript Date Format
http://blog.stevenlevithan.com/archives/date-time-format
▼JavaScript date parsing and formatting, Part 1
http://www.xaprb.com/blog/2005/12/12/javascript-closures-for-runtime-efficiency/
▼JavaScript Date Format Object
http://www.comet.co.il/en/articles/date/article.html
▼JavaScript (ActionScript) Date.format
http://jacwright.com/projects/javascript/date_format

とりあえず、日本人が日本人対象に使うので、
日本語の曜日と旧暦の月名を表示することができる、
DateFormatter.js
を使うことにしました。
(PHPのdate関数のフォーマットパターンと互換性あり)

次は、"Google App Engine"に入れ込みだね。

--
http://suz-lab.blogspot.com/

"Google App Engine"にjQuery

スズキです。

"Google Google AJAX Feed API"に続いて、
jQueryも導入して見ました。

ただし、jQueryは"AJAX Libraries API"を使った読み込みです。
http://code.google.com/apis/ajaxlibs/
下記のようにgoogle.load(...)を利用します。

-------- index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>suz-lab - app</title>
    <script type="text/javascript"
src="http://www.google.com/jsapi?key=XXX"></script>
    <script type="text/javascript">
      google.load("jquery", "1");
      google.load("feeds" , "1");
    </script>
    <script type="text/javascript" src="js/app/index.js"></script>
  </head>
  <body>
    <h1>suz-lab - app</h1>
    <h2>ニュース</h2>
    <div id="feed">test</div>
  </body>
</html>
--------

で、"Google Google AJAX Feed API"で取得したデータを、
for文ではなく、jQuery.each(...)で処理してみました。
あと、DOM系の処理も下記のように、$(...)に置き換えてます。

-------- js/app/index.js
google.setOnLoadCallback(function() {
  var feed = new google.feeds.Feed("http://feeds.feedburner.com/suz-lab");
  feed.load(function(result) {
    if(!result.error) {
      var html = "<dl>";
      jQuery.each(result.feed.entries, function(key, val){
        var date = new Date(val.publishedDate);
        html += "<dt>" + (date.getMonth() + 1) + "/" + date.getDate() + "</dt>"
        html += "<dd><a href='" + val.link + "'>" + val.title + "</a></dd>"
        html += "<dd>" + val.content + "</dd>"
      });
      html += "</dl>";
      $("#feed").html(html);
    }
  });
});
--------

あと、やりたいことは、
-CSSできれいにする。
-日付を適当なフォーマッターつかって整形する。
-jTemplate使う。
-記事の本文をLightBox系のプラグインで表示する。
といった感じでしょうか?

Javascriptでできることは、できるだけJavascriptでやろう。

--
http://suz-lab.blogspot.com/

2008年8月14日木曜日

"Google App Engine"に"Google Google AJAX Feed API"

スズキです。

さらに調子に乗って、"Google App Engine"のindex.htmlに
"Google Google AJAX Feed API"を使ってみました。
http://code.google.com/apis/ajaxfeeds/documentation/

まだ、サンプルをペタッっと張っただけです。
http://suz-lab.appspot.com/

次は、jQueryと組み合わせよう。
(ぜんぜんPython使ってない...)

--
http://suz-lab.blogspot.com/

Eclipseプロジェクトの構成とapp.yaml(Google App Engine)

スズキです。

昨日、"Google App Engine"のエントリ書いたら、
いきなりはてブが二つついていたので、調子にのって、
今度は表記に関して、また書きます。

▼Eclipseプロジェクト構成
suz-lab
-py/ : Pythonソースを配置
-htdocs
--css/ : CSSを配置
--html/ : HTMLを配置
--img/ : 画像(gif|jpg|png)を配置
--js/ : Javascriptを配置
-app.yaml
-index.yaml

ファイルの種類ごとにフォルダわけしています。
htdocs下は静的コンテンツを置くことにし、ブラウザでの直接確認も
できる状態にしています。
pyフォルダはプロジェクトのソースフォルダとして登録しています。

URLとフォルダ/ファイルをマッピングするapp.yamlですが、
下記のようにしています。

-------- app.yaml
application: suz-lab
version: 1
runtime: python
api_version: 1
handlers:
#"/"でアクセスした場合はindex.htmlを参照
- url: (.*)/
static_files: html\1/index.html
upload: html(.*)/index.html
#"/"以下はhtdocs以下にマッピング
- url: /(.*)
static_files: html/\1
upload: html/(.*)
--------
※上記の空白は全角にしてあります。

とりあえず、HTML/CSS/Javascriptを自然な形で使うための、
"Google App Engine"の設定のつもりです。

次は、jQuery関係を入れ込もう。

--
http://suz-lab.blogspot.com/

2008年8月13日水曜日

Google App Engine & Eclipse & PyDev

スズキです。

そろそろやっておかないと、一生やらないような気がしたので、
Eclipse&PyDevの組み合わせで開発、確認、配置できる環境を
見据えて挑戦してみました。

とは言っても、すでにネット上に情報はいろいろとあるので、

EclipseとPyDevの設定はこちら、
▼Configuring Eclipse on Windows to Use With Google App Engine
http://code.google.com/appengine/articles/eclipse.html

アプリケーションの作成はこちら、
▼Hello, World!
http://code.google.com/intl/ja/appengine/docs/gettingstarted/helloworld.html

本番環境への配置はこちら、
▼アプリケーションのアップロード
http://code.google.com/intl/ja/appengine/docs/gettingstarted/uploading.html

を参考に試しています。

上記で、Eclipseからテストサーバの起動と確認まではできるように
なるのですが、さらにEclipseで本番サーバへのアップロードも行うため、

"Run > Run Configurations ..."でdev_appserver.pyの設定と同様に
"Python Run"のConfigurationを作成し、"Main Module"を
C:\Program Files\Google\google_appengine\appcfg.py
とし、"Program argumants"を
--passin --email=xxxxxxxx@gmail.com update ${project_loc}
にすることで、Eclipseから本番サーバへアップロードできるようになります。

ただし、コンソールにパスワードの要求が出るので、
それを入力する必要もあります。(--passinの効果かな?)

というわけで、
http://suz-lab.appspot.com/
の完成です。

せっかくなんで、独自ドメイン(suz-lab.com)でも取得するか。

--
http://suz-lab.blogspot.com/

2008年8月12日火曜日

Windowsのコマンドプロンプトで実行時間を計測

スズキです。

いろいろ調べましたが、お手軽で決定的な情報がなかったので、
下記バッチをつくり計測することにしました。

見ての通り、ぜんぜん厳密なものではありませんが、
今回の目的を考えると、この程度でOKでしょう。

--------
@echo off

rem 開始時間の取得
set b_time=%time%
set b_result=%b_time:~9,2%
set /a b_result=b_result+%b_time:~6,2%*100
set /a b_result=b_result+%b_time:~3,2%*6000
set /a b_result=b_result+%b_time:~0,2%*360000

実行時間計測プログラム実行

rem 終了時間の取得
set e_time=%time%
set e_result=%e_time:~9,2%
set /a e_result=e_result+%e_time:~6,2%*100
set /a e_result=e_result+%e_time:~3,2%*6000
set /a e_result=e_result+%e_time:~0,2%*360000

rem 実行時間の取得
set /a diff=e_result-b_result
echo %diff%
--------

やっぱりWindowsは苦手だ...

--
http://suz-lab.blogspot.com/

2008年8月11日月曜日

Xvfb&firefox&ImageMagickでWebサイトのキャプチャー(Linux)

スズキです。

Flashをflv/aviなどの動画ファイルに変換する方法の調査での
副産物です。

といっても、リンク集...
▼Web サイトのサムネイルを Linux で生成
http://blog.enjoitech.jp/detail.php?aid=7
▼webnail - webサイトをサムネイル化
http://pink.cc/archives/2006/07/webnail_web.html
▼Xvfb上でのfirefox起動
http://blog.guideme.jp/archives/60
▼SimpleAPI の仕組みについて考察してみる
http://www.drk7.jp/MT/archives/001042.html
▼CentOS5 で WEBサイトのスクリーンショット
http://server.lunq.net/?p=125
▼Linuxサーバー環境でのサイトサムネイル化:PHPで実行
http://www.res-system.com/weblog/item/603
▼ウェブサイトのスクリーンショットを取る方法
http://mick.blog16.jp/index.php/main/2008/02/25/p144

情報多すぎ、これぐらいにしとくか。

--
http://suz-lab.blogspot.com/

2008年8月6日水曜日

名前解決時の鶏と卵問題を解決するために/etc/host.confを調整

スズキです。

現在、PowerDNSのバックエンドMySQLを下記のように
名前で指定しています。
gmysql-host=db.localdomain

しかし、このdb.localdomainの名前は、まさに上記の
PowerDNSで管理しているので、起動時に鶏と卵問題が
発生してしまいます。
つまり、起動時にdb.localdomainの名前解決を使用とすると、
そのDNSがそもそも無い、ということです。

解決方法は簡単で、/etc/hostsファイルに

127.0.0.1 db.localdomain

のように記述しておけばいいのですが、
そうすると、逆にDNS(ラウンドロビン)での負荷分散や
フェールオーバー/バックがきかなくなります。

理想は、まずDNSで名前解決して、無い場合に、
hostsファイルで名前解決してくれればいいのですが、
それが、/etc/host.confで調整することができます。

hosts.confのデフォルトは大体下記のように
なっていると思います。

order hosts,bind

これは、まず、hostsファイルで名前解決して、解決できなければ、
/etc/resolv.confで指定しているDNSを用いて
名前解決することを意味しています。

この順序を下記のように変えると、

order bind,hosts

まず、DNSで名前解決して、なければhostsファイルを
使うことになります。これで解決です。

次こそ、ようやく、SquidのDNSラウンドロビンかな。

--
http://suz-lab.blogspot.com/

PowerDNSでのMySQL設定

スズキです。

PowerDNSをOpenLDAPのバックエンドで運用しようといたのですが、
私のOpenLDAPに対するスキル不足で、MySQLバックエンドでの運用に
切り替えました。
http://suz-lab.blogspot.com/2008/08/powerdns.html

まずは設定ファイル(/etc/pdns/pdns.conf)です。
下記のように、launchを設定して、mysqlのデータベース名と
接続先ホストを指定します。

launch=gmysql
gmysql-dbname=powerdns_internal
gmysql-host=db.localdomain

次にMySQL側ですが、デフォルトで、powerdnsユーザーで接続するので、
このユーザーを作成します。そしてこのユーザーが見れるデータベースとして、
powerdns_internalデータベースを作成します。
(デフォルトのデータベースはpowerdnsです)

そのあと、このデータベースに対して、下記SQLを実行して
テーブル群を作成します。

CREATE TABLE domains (
id INT auto_increment,
name VARCHAR(255) NOT NULL,
master VARCHAR(128) DEFAULT NULL,
last_check INT DEFAULT NULL,
type VARCHAR(6) NOT NULL,
notified_serial INT DEFAULT NULL,
account VARCHAR(40) DEFAULT NULL,
primary key (id)
) type=InnoDB;

CREATE UNIQUE INDEX name_index ON domains(name);

CREATE TABLE records (
id INT auto_increment,
domain_id INT DEFAULT NULL,
name VARCHAR(255) DEFAULT NULL,
type VARCHAR(6) DEFAULT NULL,
content VARCHAR(255) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
primary key(id),
CONSTRAINT `records_ibfk_1`
FOREIGN KEY (`domain_id`)
REFERENCES `domains` (`id`)
ON DELETE CASCADE
) type=InnoDB;

CREATE INDEX rec_name_index ON records(name);
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);

CREATE TABLE supermasters (
ip VARCHAR(25) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) DEFAULT NULL
);

最後に下記SQLにてDNSレコードを追加して終了です。

INSERT INTO domains (name, type)
VALUES ('localdomain', 'NATIVE');

INSERT INTO records (domain_id, name, content, type, ttl, prio)
VALUES (1, 'localdomain', 'ns.localdomain postmaster@localdomain 1',
'SOA', 60, NULL);

INSERT INTO records (domain_id, name, content, type, ttl, prio)
VALUES (1, 'localdomain', 'ns.localdomain', 'NS', 60, NULL);

INSERT INTO records (domain_id, name, content, type, ttl, prio)
VALUES (1, 'localdomain', 'mail.localdomain', 'MX', 60, 0);

INSERT INTO records (domain_id, name, content, type, ttl, prio)
VALUES (1, 'ns.localdomain', '192.168.3.58', 'A', 60, NULL);

INSERT INTO records (domain_id, name, content, type, ttl, prio)
VALUES (1, 'mail.localdomain', '192.168.3.59', 'A', 60, NULL);

INSERT INTO records (domain_id, name, content, type, ttl, prio)
VALUES (1, 'www.localdomain', '192.168.3.58', 'A', 60, NULL);

これで、nslookupなどで名前が引けるはずです。
(入力データがまだあまいと思いますが、その辺は実験しながらということで)

次はSquidのDNSラウンドロビンだ!
(Squidの設定は終わってるつもりだけど...)

--
http://suz-lab.blogspot.com/

2008年8月5日火曜日

Squid2.6でリバースプロキシの設定

スズキです。

久しぶりに表記の設定をしたのですが、
2.5のやり方だとうまくいかす、びっくりしました。

2.5のやり方は、設定ファイルに
httpd_accel_...
という項目を書くはずだったのですが、
Squidを起動すると下記のようなエラーが発生しました。
parseConfigFile: line 4327 unrecognized: 'httpd_accel_...'
つまり、こんなパラメータ名知らねーよ、ってことです。

そんなはずでは...とググってみると、2.6では
http_port 80 transparent
と書けばいいようです。

あと、既存のhttp_accessの設定全部コメントアウトして、その代わり、
http_access allow all
と設定すると、無事リバースプロキシとして動作しました。
(どこからでもアクセスできるようにしています)

これで、Squid-ApacheのクラスタリングをPowerDNSで
フェイルオーバー、フェイルバックする骨組みができました。

次はVirtualPC増やして検証です。
(その前に、PowerDNSについて書かないと...)

--
http://suz-lab.blogspot.com/

CentOS(Linux)のresolv.confをDHCP使用時に上書きしないようにする

スズキです。

表記に関してですが、
自前でDNSを構築すると、当然"/etc/resolv.conf"
のnameserver設定をその自前DNSにすると思います。

ですが、DHCPを利用している場合、OS起動時に
"/etc/resolv.conf"のnameserverがDHCPにより取得されたものに
上書きされてしまいます。

これを防ぐには、CentOS(Linux)の場合、
/etc/sysconfig/network-scripts/ifcfg-eth0
に下記のように、"PEERDNS=no"を指定します。

DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=XX:XX:XX:XX:XX:XX
IPV6INIT=yes
IPV6_AUTOCONF=yes
ONBOOT=yes
TYPE=Ethernet
PEERDNS=no

これで、いちいち修正する必要がなくなります。

--
http://suz-lab.blogspot.com/

VirtualPCの複製

スズキです。

VirtualPCを導入したきっかけは、手軽に冗長構成の実験をしたかったからです。
で、そろそろ二台目が必要になってきたのですが、よくよく考えると、
一台目のコピーでいけるんじゃないか?と思い試してみました。

まずは一台目のバーチャルマシンハードドライブイメージ(vhd)と
バーチャルマシン設定ファイル(vmc)を適当な名前でコピーします。

次に、VirtualPCコンソールから、新規>既存バーチャルマシンを追加する
で上記でコピーしたバーチャルマシン設定ファイル(vmc)を指定します。

で、バーチャルマシン設定ファイルの設定(たぶん上の作業後、勝手に起動)で
ハードディスク(1)を上記でコピーしたバーチャルマシンハードドライブイメージ(vhd)
に変更します。

最後に設定後のバーチャルマシンを起動すると、一台目と同じ内容の
(Linux)マシンが立ち上がります。

ということで、0からインストールするよりずっと早い時間で、
二台目が作成できました。

VirtualPCのおかげで、近頃サーバまわりの独学が快適です。

--
http://suz-lab.blogspot.com/

かっこいいサイト

スズキです。

がらでもありませんが、社内の勉強会で、
自分がかっこいいと思うHTMLベースのサイトを
三つ挙げてコメントすることになったので...

▼アップル
http://www.apple.com/jp/

いきなり有名どころです。
"MacBook Air"っぽいサイトです。
さりげなくアコーディオンなども使われていて、
"Technology meets Design"(たぶんネイティブチェックに引っかかる)
なAppleらしいサイトではないか、と思います。

▼Amazon.co.jp
http://www.amazon.co.jp/

こちらも、言わずと知れた有名どころです。
自分でコントロールできない商品画像でも、
サイトの中に無理なく収まるデザインにしてるんじゃないか?
と思います。また、横幅を%で指定してる(らしい)ので、
全画面表示にしても気持ちいいです。

▼エステー
http://www.st-c.co.jp/

パステル調、とは言いすぎだと思いますが、
かわいい色を、きれいに使っています。
この色使いは、今の自分に一番かけている能力だと自覚しています。

苦手な分野だけあって、勉強になった。

--
http://suz-lab.blogspot.com/

Antで"WEB-INF/classes"ディレクトリを削除&作成

スズキです。

Antでビルドするときに、下記のように何も考えないでやると、
クラス/リソースファイルは"WEB-INF/classes"への
上書きとなってしまいます。

<target name="compile">
  <javac
      srcdir="${src.main}"
      destdir="${classes.main}"
      classpathref="project.classpath"
      encoding="MS932"
      debug="on"/>
  <copy todir="${classes.main}">
    <fileset dir="${resources.main}"/>
  </copy>
</target>

まあ、上書きでもほとんど問題にならないのですが、
たまに、ファイル削除して、他のファイルが
そのファイルを参照し続けている場合、
上記のビルド環境ではファイルが残っているため問題ないが、
他の環境にデプロイしたときに、動かない!
ってことになります。

なので、下記のように、ビルド・リソースコピー前に
"WEB-INF/classes"の削除&作り直しを
念のため行うようにしました。

<target name="compile">
  <!-- 削除 -->
  <delete dir="${classes.main}"/>
  <!-- 作成 -->
  <mkdir dir="${classes.main}"/>
  <javac
      srcdir="${src.main}"
      destdir="${classes.main}"
      classpathref="project.classpath"
      encoding="MS932"
      debug="on"/>
  <copy todir="${classes.main}">
    <fileset dir="${resources.main}"/>
  </copy>
</target>

では、PowerDNSに戻ります。

--
http://suz-lab.blogspot.com/

2008年8月4日月曜日

PowerDNSでの"recursor"の指定

スズキです。

pdnsとpdns-recursorのIPアドレス指定に関してです。
▼PowerDNSのインストール&起動
http://suz-lab.blogspot.com/2008/08/powerdns.html

上記では、

--------/etc/pdns/pdns.conf
local-address=127.0.0.1
--------/etc/pdns-recursor/recursor.conf
local-address=192.168.x.x

としていましたが、pdns.confにてrecursorが指定できるので、
次のように指定したほうがスマートでしょう。

--------/etc/pdns/pdns.conf
local-address=192.168.x.x
recursor=127.0.0.1
--------/etc/pdns-recursor/recursor.conf
local-address=127.0.0.1

LDAPバックエンドの前に、ログ系をやろう。

--
http://suz-lab.blogspot.com/

PowerDNSのインストール&起動

スズキです。

未だ、何故かDNSにはまってます。

以前、冗長構成などを考慮したDNSの構成として、
MyDNSやUnboundについて軽く書いていました。
▼MyDNSとNagiosを用いたフェイルオーバー/フェイルバック
http://suz-lab.blogspot.com/2008/07/mydnsnagios.html
▼DNSキャッシュサーバにUnbound
http://suz-lab.blogspot.com/2008/07/dnsunbound.html

でも、調べてるうちに、PowerDNSがいろんな意味で
一番いいんじゃないか?と思えてきました。
http://www.powerdns.com/

理由は
-CentOS5.2で簡単に導入可能
-コンテンツDNS(pdns)とキャッシュDNS(pdns-recursor )に分離
-バックエンドにDB/LDAPなどが利用可能
といったところです。

早速、
yum install pdns
yum install pdns-backend-ldap
yum install pdns-recursor
でインストールです。
(バックエンドはLDAPに挑戦)

でこのまま、
service pdns start
で立ち上げると、"pdnsのバックエンドを指定してない!"
と怒られます。なので、
"/etc/pdns/pdns.conf"を下記のようにします。
launch=ldap

これで一応立ち上がるのですが、
service pdns-recursor start
の方は、pdnsとIP/PORTがぶつかって起動できません。

なので、下記のように、
pdnsは127.0.0.1:53、pdns-recursorは192.168.x.x:53
とバインドするIPアドレスを変えて立ち上げます。
--------/etc/pdns/pdns.conf
local-address=127.0.0.1
--------/etc/pdns-recursor/recursor.conf
local-address=192.168.x.x

とりあえず、これで、両方立ち上がります。

次は、コンテンツDNS(pdns)をLDAPバックエンドで
機能する予定(未定)です。

--
http://suz-lab.blogspot.com/