認証局証明書ですか。まあ、言い方はいろいろ。
普通、サーバー用途で使うLinuxなのでroot証明書を持つ必要はさほどないんですけどね。
ちなみにroot証明書ってのは文字通り根っこの証明書。
これを持っていれば、この証明機関で発行された証明書が信頼できるわけです。
IEとかFirefoxなんかのブラウザはVerisignなんかの証明書を持っている(信頼している)から、僕らは高いお金を払ってVerisignから証明書を買うわけですね。
サーバー用途と言っても、時々はクライアントになることもあります。
たとえば、Webの認証にLDAPの情報を使う場合、LDAPクライアントになるわけですね。
こんなときにはroot証明書が必要になります。オレオレ証明書でもいいなら話は別ですが。
まあ、証明書ごときにお金を払ってはいられないので僕はCAcert.orgを利用してます。
最近、Nokiaの携帯かPDAにCAcertのroot証明書が採用されたらしく、もしかしたらほんとに流行ったらうれしいですね。
この人たち自身が言ってるように、こんなのお金を払うほどのものじゃない。
で、なんの話かというと、これまではroot証明書が必要になったらそのたびにコピーしてたわけです。
でも、最近いいものを発見しました。
ca-certificates。
そのまんまな名前です。
これをaptでインストールするとまともな証明機関のroot証明書はすべてインストールされます。まあ、なんて楽なんでしょう。
で、その中にCAcertのものももちろん含まれてます。すもももももももものうち。
ついでにc_rehashコマンドでインデックスを毎回作成する手間も省けます。
これは何かというと、証明書のインデックスを作成するコマンドです。
クライアント側で証明書ディレクトリを指定する場合にはこの作業が必須になります。僕はかつて、これでTLSをやめました。
まあ、そんな過去とももうおさらば。
IEやFirefoxの設定をよく見たらわかるように、root証明書ってのは更新作業が必要なんですね。
でも、そんなの自分でいちいち調べていられません。まさにapt向き!
これでまたひとつ自動化されました。
金曜日, 12月 30, 2005
土曜日, 12月 17, 2005
Google Sitemap
今度はGoogle Sitemapです。
自分のサイトにあるページをGoogleに調べてもらうだけじゃなくて、こっちから教えてあげるサービス(?)。
Sitemapのページにある作成ツールをサーバーにおいて実行。
できたXMLファイルをGoogleのページに登録します。
あとはGoogleがそのファイルを元に僕らのサイト内をクロール、してくれるはずなんですが、いつまでたっても結果にクエリの統計しか表示されない。。。
XMLファイルは1日に1度は取りに来てるし、ステータスもOKってなってるんですけどね。なんでだろ。
サイトの運営者としてはGoogleに登録されてるかは確かに気になるところだけど、ここまで協力的なのもなんか気持ち悪いなあ。
自分のサイトにあるページをGoogleに調べてもらうだけじゃなくて、こっちから教えてあげるサービス(?)。
Sitemapのページにある作成ツールをサーバーにおいて実行。
できたXMLファイルをGoogleのページに登録します。
あとはGoogleがそのファイルを元に僕らのサイト内をクロール、してくれるはずなんですが、いつまでたっても結果にクエリの統計しか表示されない。。。
XMLファイルは1日に1度は取りに来てるし、ステータスもOKってなってるんですけどね。なんでだろ。
サイトの運営者としてはGoogleに登録されてるかは確かに気になるところだけど、ここまで協力的なのもなんか気持ち悪いなあ。
木曜日, 12月 15, 2005
Adsense プレビューツール
広告を表示してがっぽり儲けるためのAdSense。
まあ、僕はちっとも儲かっていないんですが。
そんなAdSenseユーザーのためのツールのひとつ、プレビューツール。
見も蓋もないくらいそのまんまな名前です。
これをインストールするとそのページでどんな広告が表示されるか見ることができます。ただしIE専用。
リンク先にあるページからレジストリのキーファイルをダウンロードします。
ダブルクリックしてインストールすれば使えます。やたら簡単ですね。
後は見たいページを開いて、右クリック。「Google AdSense プレビュー ツール」を選ぶと広告が表示されます。
間違って競合他社の広告を表示してしまった日にはクビが飛んでしまうような人はこれを使ってちゃんとチェックしましょう。広告貼る前にちゃんと調べられるので便利かと。
Googleの競合他社にどんな広告主がいるか調べられてしまうような気もしますが、それはいいか。圧倒的なシェアですし。
AdSenseってなに?って人はこちらからどうぞ。
まあ、僕はちっとも儲かっていないんですが。
そんなAdSenseユーザーのためのツールのひとつ、プレビューツール。
見も蓋もないくらいそのまんまな名前です。
これをインストールするとそのページでどんな広告が表示されるか見ることができます。ただしIE専用。
リンク先にあるページからレジストリのキーファイルをダウンロードします。
ダブルクリックしてインストールすれば使えます。やたら簡単ですね。
後は見たいページを開いて、右クリック。「Google AdSense プレビュー ツール」を選ぶと広告が表示されます。
間違って競合他社の広告を表示してしまった日にはクビが飛んでしまうような人はこれを使ってちゃんとチェックしましょう。広告貼る前にちゃんと調べられるので便利かと。
Googleの競合他社にどんな広告主がいるか調べられてしまうような気もしますが、それはいいか。圧倒的なシェアですし。
AdSenseってなに?って人はこちらからどうぞ。
火曜日, 11月 22, 2005
AOL pictures
AOLが運営してた写真共有サービスがバージョンアップしました。
なんと、容量無制限。
こりゃいいです。
なんでもかんでもここにおいときゃいいです。まさに押入れ。
どうせ容量無制限ですからね。いっそ写真以外もなんでもおいとけばいいような気がします。死人を埋めたりするには向かないと思いますけど。
チェックしてるかどうか知らないけど、してても画像にデータ埋め込めばいいと。あ、埋めちゃった。
GmailFSみたいにAOLFSって誰か開発しないのかな。して欲しいな。
機能的にはFlickrのほうが上ですね。ほんとに保存用。失礼。
アルバムに編集する機能があるけど、同じようなFlickrの機能は無料版だと制限があるのでそこはいい。
でもタグに対応してないんですよね。
GmailとかFlickr使ってみて思ったのは、フォルダで分けるよりタグで整理する方が絶対に便利だな、と。
「あれ~、あれってどっちのフォルダに入れたっけ?」なんて絶対ないですから。
「とりあえずこのタグはついてるはずだ」で見つけられる。
結構ストレスが違います。
致命的なのはカレンダー機能がないことですね。「あ、この日にこれ撮ったんだあ」って楽しいのに。絶対必要です。
でも、本当のカレンダーにするサービスはあります。有料ですけど。
一年に一回しか使わないと思うんですけど儲かるんですかね。どうでもいいけど、中国って祝日は簡単に覚えられるからカレンダー売れなさそうだなあ。
他にも僕には絶対いらないけど、たぶんメインのサービスとして、「印刷してくれる」ってのがあります。日本でも届けてくれるのかは知りません。
こんな感じで、バックアップとしては最高です。
これで僕のサーバーにあるデータはほとんど、ネットのキャッシュになりました。
枕を高くして眠れます。
なんと、容量無制限。
こりゃいいです。
なんでもかんでもここにおいときゃいいです。まさに押入れ。
どうせ容量無制限ですからね。いっそ写真以外もなんでもおいとけばいいような気がします。死人を埋めたりするには向かないと思いますけど。
チェックしてるかどうか知らないけど、してても画像にデータ埋め込めばいいと。あ、埋めちゃった。
GmailFSみたいにAOLFSって誰か開発しないのかな。して欲しいな。
機能的にはFlickrのほうが上ですね。ほんとに保存用。失礼。
アルバムに編集する機能があるけど、同じようなFlickrの機能は無料版だと制限があるのでそこはいい。
でもタグに対応してないんですよね。
GmailとかFlickr使ってみて思ったのは、フォルダで分けるよりタグで整理する方が絶対に便利だな、と。
「あれ~、あれってどっちのフォルダに入れたっけ?」なんて絶対ないですから。
「とりあえずこのタグはついてるはずだ」で見つけられる。
結構ストレスが違います。
致命的なのはカレンダー機能がないことですね。「あ、この日にこれ撮ったんだあ」って楽しいのに。絶対必要です。
でも、本当のカレンダーにするサービスはあります。有料ですけど。
一年に一回しか使わないと思うんですけど儲かるんですかね。どうでもいいけど、中国って祝日は簡単に覚えられるからカレンダー売れなさそうだなあ。
他にも僕には絶対いらないけど、たぶんメインのサービスとして、「印刷してくれる」ってのがあります。日本でも届けてくれるのかは知りません。
こんな感じで、バックアップとしては最高です。
これで僕のサーバーにあるデータはほとんど、ネットのキャッシュになりました。
枕を高くして眠れます。
木曜日, 11月 17, 2005
Google Analytics
GoogleのWeb解析サービスです。
Googleの新サービスってことで、早速導入してみました。
ちょうどこのニュースを知る数日前にurchin(Google Analyticsの前身、というかパッケージソフト)が30日間無料で利用できるって見かけて、使ってみようと思ってたんですね。そしたらもう無料になってました。
利用にはGoogleのアカウントが必要ですが、Gmail以外のメールアドレスでも登録ができます。こういうとこ、Googleは寛大なんですよね。
で、表示されるHTMLをぺたっと貼ったらおしまいです。
「headタグとmetaタグの後ろ、/headタグの前に貼ってください」と書いてありますが、要は/headの直前に貼ったらいいですね。ややこしい。
Google曰く、12時間以内に統計情報が更新されるそうですが、実際は24時間くらいかかります。
まだサービス開始直後なので混み合ってるのかも知れません。最初の頃はほんとにページが開かないくらい重かったし。
Cookieを使っているので、リピーター率や訪問頻度なんかがわかるのがいいですね。これはログ解析ではできないですからね。
他には都市別のアクセスとか。役に立たないけど見てると楽しいです。IPのデータベースあれば誰でもわかるけど、普通持ってないですしね。同じようにプロバイダーごとのアクセスもわかります。
こんな機能が無料で使えるんだったら、みんな使っちゃうんじゃないですかね。あったほうが確実に便利だし。
そしてGoogleはますますインターネットの世界の情報を独り占めです。
多くのサイトがこれを導入すると、Googleはユーザーの流れをほとんど解析できちゃうんじゃなですかね。「A君は毎日これだけのサイトを閲覧して、あそこでこれを買った」とか把握できそう。だから無料なんだと思うけど。
まあ、僕はこういうやり方はエレガントで好きなんですが。
行動を把握されるのが好きって意味じゃないですよ。
Googleの新サービスってことで、早速導入してみました。
ちょうどこのニュースを知る数日前にurchin(Google Analyticsの前身、というかパッケージソフト)が30日間無料で利用できるって見かけて、使ってみようと思ってたんですね。そしたらもう無料になってました。
利用にはGoogleのアカウントが必要ですが、Gmail以外のメールアドレスでも登録ができます。こういうとこ、Googleは寛大なんですよね。
で、表示されるHTMLをぺたっと貼ったらおしまいです。
「headタグとmetaタグの後ろ、/headタグの前に貼ってください」と書いてありますが、要は/headの直前に貼ったらいいですね。ややこしい。
Google曰く、12時間以内に統計情報が更新されるそうですが、実際は24時間くらいかかります。
まだサービス開始直後なので混み合ってるのかも知れません。最初の頃はほんとにページが開かないくらい重かったし。
Cookieを使っているので、リピーター率や訪問頻度なんかがわかるのがいいですね。これはログ解析ではできないですからね。
他には都市別のアクセスとか。役に立たないけど見てると楽しいです。IPのデータベースあれば誰でもわかるけど、普通持ってないですしね。同じようにプロバイダーごとのアクセスもわかります。
こんな機能が無料で使えるんだったら、みんな使っちゃうんじゃないですかね。あったほうが確実に便利だし。
そしてGoogleはますますインターネットの世界の情報を独り占めです。
多くのサイトがこれを導入すると、Googleはユーザーの流れをほとんど解析できちゃうんじゃなですかね。「A君は毎日これだけのサイトを閲覧して、あそこでこれを買った」とか把握できそう。だから無料なんだと思うけど。
まあ、僕はこういうやり方はエレガントで好きなんですが。
行動を把握されるのが好きって意味じゃないですよ。
日曜日, 11月 06, 2005
Blogger と AdSense
Bloggerの機能にAdSenseとの連携が加わりました。
ちょっと見てみたところ、便利。
Bloggerの設定画面から手軽にAdSenseを設定できる、というのも利点です。
あっちこっちのページを開かなくていいですからね。シンプル。
僕がいいなあと思うのは、広告を載せるのにテンプレートを書き換えなくていいことですね。
なので「そろそろこのテンプレートも飽きたな、変えよう」なんて思ったときにHTMLを読んで広告を載せる場所を探さなくていいわけです。こりゃ便利だ!
こんなことで結構作業時間が減ったりしますね。
たぶんそんなに汎用的に作ってない(少なくともユーザーからはそう見えない)のでできないんですが、開放してくれれば他の広告にも使えそう。いいなあ。
あとはリンクの一覧も分離してくれると最高に便利です。
テンプレート変えるときになにも追加作業がいらなくなります、僕は。
ぜひぜひ早く実現して欲しいなあ。
で、ちょっと嫌なのは僕の個人情報筒抜け、ってところですね。
AdSenseとGoogleの検索は不正サイトの対策で組んでるって聞いたことがあるので、これでBloggerとも個人情報が行き来するわけですね。まあ、今までもしてたかも知れませんが。
GoogleのPersonalized HomeやGmail、Google TalkにBloggerを使ってる僕がAdSenseを使うと、Webでの活動がほぼ筒抜けです。
いつ何を検索して、どんなメールのやり取りをしていて、誰に電話をかけて、どんなメディアを持っていて、収入がどのくらい、ということがすべて分かってしまうわけですね。こわいこわい。
僕はGoogle好きなのでもっとがんばって欲しいなあと思ってます。
で、いろいろなサービスに手を出してましたが、ちょっと不安になってきました。
使い続けるにしてもアカウントを別々にしようかなあ、とか。ひとつじゃないと便利じゃなくなってしまいますけど。
よく欧米の映画で「いいニュースと悪いニュースがある。どっちから聞きたい?」なんてせりふがありますが、僕にとってはこのニュースはひとつで両方でした。
ちょっと見てみたところ、便利。
Bloggerの設定画面から手軽にAdSenseを設定できる、というのも利点です。
あっちこっちのページを開かなくていいですからね。シンプル。
僕がいいなあと思うのは、広告を載せるのにテンプレートを書き換えなくていいことですね。
なので「そろそろこのテンプレートも飽きたな、変えよう」なんて思ったときにHTMLを読んで広告を載せる場所を探さなくていいわけです。こりゃ便利だ!
こんなことで結構作業時間が減ったりしますね。
たぶんそんなに汎用的に作ってない(少なくともユーザーからはそう見えない)のでできないんですが、開放してくれれば他の広告にも使えそう。いいなあ。
あとはリンクの一覧も分離してくれると最高に便利です。
テンプレート変えるときになにも追加作業がいらなくなります、僕は。
ぜひぜひ早く実現して欲しいなあ。
で、ちょっと嫌なのは僕の個人情報筒抜け、ってところですね。
AdSenseとGoogleの検索は不正サイトの対策で組んでるって聞いたことがあるので、これでBloggerとも個人情報が行き来するわけですね。まあ、今までもしてたかも知れませんが。
GoogleのPersonalized HomeやGmail、Google TalkにBloggerを使ってる僕がAdSenseを使うと、Webでの活動がほぼ筒抜けです。
いつ何を検索して、どんなメールのやり取りをしていて、誰に電話をかけて、どんなメディアを持っていて、収入がどのくらい、ということがすべて分かってしまうわけですね。こわいこわい。
僕はGoogle好きなのでもっとがんばって欲しいなあと思ってます。
で、いろいろなサービスに手を出してましたが、ちょっと不安になってきました。
使い続けるにしてもアカウントを別々にしようかなあ、とか。ひとつじゃないと便利じゃなくなってしまいますけど。
よく欧米の映画で「いいニュースと悪いニュースがある。どっちから聞きたい?」なんてせりふがありますが、僕にとってはこのニュースはひとつで両方でした。
木曜日, 11月 03, 2005
cron.d
linuxにはプログラムを予約して実行する、CRONというプログラムがあります。
「それじゃあ、任せたよ」と言っておくとちゃんとやっておいてくれるわけです。コンピューターって素直。
awstatsの設定の仕上げでcronに登録したわけです。で、これが動いてない。
なんと、cron.dの中のファイル名には制約があったんですね。「.」は使えない文字でした。
awstats.confはawstatsというファイル名で動いていたので、awstats.juanmao.net.confはawstats.juanmao.netで動かそうとしたんですね。
でも統計結果が全然更新されていないので、変だなあと。
調べてみると、これはCRONの制限と言うよりはrun-partsコマンドの制限みたいですね。
これは指定したディレクトリの中の実行ファイルを実行する、というもの。
で、CRONはそれにあわせたみたいです。cron.dailyなんかを実行するときには使ってますしね。
ファイル名で実行する、しないを決めるなんて下手な設計です。問答無用で実行してしまえばいいのに。
もし特定のファイルだけ実行したいならシンボリックリンクのディレクトリを作ればいいだけじゃないか!そういえばinitはそうだし。
なんでそうなったのかは知らないけど、今も残ってるのはよくある「歴史的な理由」ってやつなんでしょうか。互換性を維持、みたいな。
違うプログラム名にすればいいだけのことだろ、とか考えてたらオプションでそういう動作はできるらしいです。ま、普通ですね。
ちなみにこのcron.d、下手にファイルを置くと将来インストールするアプリケーションと名前が衝突する可能性があるのであまり使わないほうがいいです。つまりこのディレクトリはアプリケーション用だったわけです。
特定のユーザーで実行したいならそのユーザーでcrontabを使いましょう。こっちなら問題なし。
www-dataとかシステムユーザでcrontabをインストールするのはちょっと嫌かもしれません。そんなときには/etc/crontabを使うといいわけですね。対話的にシェルを使わないユーザーはこっち、というわけです。
要するに、僕は一番よくないやり方でやってたみたいです。
さすがにこれだけ枯れたシステムだと、似たような方法がいくつもあるのには意味があるし、ちゃんとしたやり方も用意されていたということですね。
注意しないといけないですね。
「それじゃあ、任せたよ」と言っておくとちゃんとやっておいてくれるわけです。コンピューターって素直。
awstatsの設定の仕上げでcronに登録したわけです。で、これが動いてない。
なんと、cron.dの中のファイル名には制約があったんですね。「.」は使えない文字でした。
awstats.confはawstatsというファイル名で動いていたので、awstats.juanmao.net.confはawstats.juanmao.netで動かそうとしたんですね。
でも統計結果が全然更新されていないので、変だなあと。
調べてみると、これはCRONの制限と言うよりはrun-partsコマンドの制限みたいですね。
これは指定したディレクトリの中の実行ファイルを実行する、というもの。
で、CRONはそれにあわせたみたいです。cron.dailyなんかを実行するときには使ってますしね。
ファイル名で実行する、しないを決めるなんて下手な設計です。問答無用で実行してしまえばいいのに。
もし特定のファイルだけ実行したいならシンボリックリンクのディレクトリを作ればいいだけじゃないか!そういえばinitはそうだし。
なんでそうなったのかは知らないけど、今も残ってるのはよくある「歴史的な理由」ってやつなんでしょうか。互換性を維持、みたいな。
違うプログラム名にすればいいだけのことだろ、とか考えてたらオプションでそういう動作はできるらしいです。ま、普通ですね。
ちなみにこのcron.d、下手にファイルを置くと将来インストールするアプリケーションと名前が衝突する可能性があるのであまり使わないほうがいいです。つまりこのディレクトリはアプリケーション用だったわけです。
特定のユーザーで実行したいならそのユーザーでcrontabを使いましょう。こっちなら問題なし。
www-dataとかシステムユーザでcrontabをインストールするのはちょっと嫌かもしれません。そんなときには/etc/crontabを使うといいわけですね。対話的にシェルを使わないユーザーはこっち、というわけです。
要するに、僕は一番よくないやり方でやってたみたいです。
さすがにこれだけ枯れたシステムだと、似たような方法がいくつもあるのには意味があるし、ちゃんとしたやり方も用意されていたということですね。
注意しないといけないですね。
火曜日, 11月 01, 2005
awstats で複数のサイトを解析
引越ししたので、ついでにログも別にしました。
やっぱり、昔のページと今のページの訪問者を比べたくなるわけですよ。
うちはanalogとawstatsでログを解析してるので、片方は合計で片方はサイト毎にしようかなと。
analogのほうが解析としてはおおざっぱだし、複数のドメインに関する統計なんかもでるのでawstatsを分割することにしました。
awstats.confに書いてあるようにこれをawstats.juanmao.net.confという名前でコピーします。
ちなみにこの名前の付け方には意味があるので、ちゃんとawstats.{サイト名}.confにしないといけません。
実際にはもうちょっとゆるいですが、この書き方が推奨されてるのと、まあ確かに間違えようもない名づけ方なのでこうします。
で、ログファイルの場所とサイトのドメイン名を変更します。
そしたら実行。
/usr/lib/cgi-bin/awstats.pl -
config=juanmao.net -update
こんな感じでデータをアップデートします。
このアップデートの方法は統計をcgiで見る用です。ちょっと危険です。
最近awstatsに脆弱性が見つかったのでこのcgiにわんさかアクセスがありました。うちは認証かけていたので(たぶん)平気でしたが、そんな感じに危険です。
awstatsのページでも静的なhtmlで出力することが推奨されてます。そのうち気が向いたらそうするかも知れません。気にしない気にしない。
このところ大陸気質が伝染したのかおおざっぱになってきました。
古いログの分をすべてアップデートしたらCRONに登録しておきましょう。楽チンです。
このcgiを見るときは
http://your.domain/cgi-bin/awstats.pl?config=juanmao.net
でアクセスします。
で、「なるほど。うちには日本からアクセスが多いなあ。(当たり前)」とか分かったりするわけですね。
一番おもしろいのは検索キーワードですが、半分くらい文字化けします。気になる木になる。(←普通に変換されました)
日本語化パッチもあるのでお急ぎの方はそれを使いましょう。僕は本家にマージされるのをのんびり待ちます。
そういえばawstatsはWeb以外にもメールやFTPのログも解析できます。
メールのログも解析しようと設定ファイルを書いたんですが、eximのフォーマットにはテンプレートが用意されてないみたいです。残念。マイナーに対する迫害ですね。
しこしこ合わせればなんとかなるんでしょうが、それもまた今度にします。だって面倒ですからね。
やっぱり、昔のページと今のページの訪問者を比べたくなるわけですよ。
うちはanalogとawstatsでログを解析してるので、片方は合計で片方はサイト毎にしようかなと。
analogのほうが解析としてはおおざっぱだし、複数のドメインに関する統計なんかもでるのでawstatsを分割することにしました。
awstats.confに書いてあるようにこれをawstats.juanmao.net.confという名前でコピーします。
ちなみにこの名前の付け方には意味があるので、ちゃんとawstats.{サイト名}.confにしないといけません。
実際にはもうちょっとゆるいですが、この書き方が推奨されてるのと、まあ確かに間違えようもない名づけ方なのでこうします。
で、ログファイルの場所とサイトのドメイン名を変更します。
そしたら実行。
/usr/lib/cgi-bin/awstats.pl -
config=juanmao.net -update
こんな感じでデータをアップデートします。
このアップデートの方法は統計をcgiで見る用です。ちょっと危険です。
最近awstatsに脆弱性が見つかったのでこのcgiにわんさかアクセスがありました。うちは認証かけていたので(たぶん)平気でしたが、そんな感じに危険です。
awstatsのページでも静的なhtmlで出力することが推奨されてます。そのうち気が向いたらそうするかも知れません。気にしない気にしない。
このところ大陸気質が伝染したのかおおざっぱになってきました。
古いログの分をすべてアップデートしたらCRONに登録しておきましょう。楽チンです。
このcgiを見るときは
http://your.domain/cgi-bin/awstats.pl?config=juanmao.net
でアクセスします。
で、「なるほど。うちには日本からアクセスが多いなあ。(当たり前)」とか分かったりするわけですね。
一番おもしろいのは検索キーワードですが、半分くらい文字化けします。気になる木になる。(←普通に変換されました)
日本語化パッチもあるのでお急ぎの方はそれを使いましょう。僕は本家にマージされるのをのんびり待ちます。
そういえばawstatsはWeb以外にもメールやFTPのログも解析できます。
メールのログも解析しようと設定ファイルを書いたんですが、eximのフォーマットにはテンプレートが用意されてないみたいです。残念。マイナーに対する迫害ですね。
しこしこ合わせればなんとかなるんでしょうが、それもまた今度にします。だって面倒ですからね。
月曜日, 10月 24, 2005
レジストラ移管しました
レジストラ移管というのは、ドメイン登録会社を変更するってことですね。
jpドメインの場合は、指定事業者の変更というのかな。名前が違うのはドメインの管理構造が違うからです。
書き直してみたところでやっぱりわかりにくいですね。
今日はドメインにまつわる話です。
要は僕がこの「kumicho.net」を使うためにお金を払う相手を変えたということですね。
前からお名前.comは使いづらいと思っていたので、全部ムームードメインに変更しました。
ほんとは次の更新まで待つつもりだったんですが、さっさと済ませてしまいました。
その理由は、調べてみたら実質”ただ”だった、それにつきますね。それならさっさとやってしまおう、と思ったわけです。
上で触れてるように、netとかcomなんかとjpといった国別ドメインでは変更の手続きがちょっと違います。
netやcomの場合はドメインごとに申請する必要があります。変更先がムームードメインの場合は1年分の契約料が必要になります。
でも、契約期間も1年延びるので、先払いした感じですね。移管自体はまあ無料。
jpドメインの場合は”登録者番号”という単位の下にドメインが管理されていて、ドメイン毎に移管する場合と、登録者番号そのものを移管する場合で手続きが異なります。ややこしい。
僕はきれいさっぱり移管したかったので登録者番号をムームーに移管しました。この場合はまったく無料です。素敵ですね。
どっちの場合も、確認メールがあちらこちらから届くのでOKと言ったり、無視したりしないといけません。
問題なければすんなり移行して、外から見てる分にはなにも変化はないです。
まあwhoisの情報は変わってますが、あんなの見てる人いるんですかね。既に過去の遺物な感じがします。なくしてしまえばいいのに。
おもしろかったのは、移管に必要な費用は(意外なことに)移管先だけで決まるので、ドメイン登録会社は客を縛ることができないんですね。ほんとに意外でした。
さすがインターネット。官僚的なシステムですら官僚的でないです。すばらしい。
ちなみに逆方向の値段を調べたら、びっくりするほど高かった。2度と帰れないです。そう思うと少しさみしくなったりもしますね。
jpドメインの場合は、指定事業者の変更というのかな。名前が違うのはドメインの管理構造が違うからです。
書き直してみたところでやっぱりわかりにくいですね。
今日はドメインにまつわる話です。
要は僕がこの「kumicho.net」を使うためにお金を払う相手を変えたということですね。
前からお名前.comは使いづらいと思っていたので、全部ムームードメインに変更しました。
ほんとは次の更新まで待つつもりだったんですが、さっさと済ませてしまいました。
その理由は、調べてみたら実質”ただ”だった、それにつきますね。それならさっさとやってしまおう、と思ったわけです。
上で触れてるように、netとかcomなんかとjpといった国別ドメインでは変更の手続きがちょっと違います。
netやcomの場合はドメインごとに申請する必要があります。変更先がムームードメインの場合は1年分の契約料が必要になります。
でも、契約期間も1年延びるので、先払いした感じですね。移管自体はまあ無料。
jpドメインの場合は”登録者番号”という単位の下にドメインが管理されていて、ドメイン毎に移管する場合と、登録者番号そのものを移管する場合で手続きが異なります。ややこしい。
僕はきれいさっぱり移管したかったので登録者番号をムームーに移管しました。この場合はまったく無料です。素敵ですね。
どっちの場合も、確認メールがあちらこちらから届くのでOKと言ったり、無視したりしないといけません。
問題なければすんなり移行して、外から見てる分にはなにも変化はないです。
まあwhoisの情報は変わってますが、あんなの見てる人いるんですかね。既に過去の遺物な感じがします。なくしてしまえばいいのに。
おもしろかったのは、移管に必要な費用は(意外なことに)移管先だけで決まるので、ドメイン登録会社は客を縛ることができないんですね。ほんとに意外でした。
さすがインターネット。官僚的なシステムですら官僚的でないです。すばらしい。
ちなみに逆方向の値段を調べたら、びっくりするほど高かった。2度と帰れないです。そう思うと少しさみしくなったりもしますね。
日曜日, 10月 16, 2005
MSNメッセンジャーを複数起動する
というわけで、MSNメッセンジャーを複数起動する方法です。
MSNのアカウントを複数持っていても、普通だとひとつしか起動できないので不便でした。
詳しいやり方はリンク先を参照してください。
細かいバージョンによってやり方が違うので書ききれません。
これで仕事用とプライベート用にアカウントを持つことができますね。
ちょっと水商売の人間になったようで楽しいです。
ところでMSNをYahooがIM(インスタントメッセンジャー)の相互乗り入れを始めるらしいですね。マイクロソフトらしくないですね。
MSNのアカウントを複数持っていても、普通だとひとつしか起動できないので不便でした。
詳しいやり方はリンク先を参照してください。
細かいバージョンによってやり方が違うので書ききれません。
これで仕事用とプライベート用にアカウントを持つことができますね。
ちょっと水商売の人間になったようで楽しいです。
ところでMSNをYahooがIM(インスタントメッセンジャー)の相互乗り入れを始めるらしいですね。マイクロソフトらしくないですね。
木曜日, 9月 22, 2005
キーボードの音
キーボードの音に脆弱性が発見されました。
「え?」って感じですね。
ほんとはキーボードの音から打ってるキーを判別するという実験があったって話です。
詳細はリンク先を見てください。
そんなこと言ったら、キーを打つところを見てればどうせわかるんじゃないの?なんて思いました。
でも、音だったら電話越しでもいけますね。すばらしい。
盗聴機は有名だけど、盗撮機も有名か。まあ、場所を選ばないから有利です。
適当な社員になりすまして、「ちょっとログインしてもらえますか」なんて言われたら拒む人はあまりいないと思いますしね。
これでパスワードが手に入る。やったあ。
たしかに自分のルートパスワードなんていつも同じリズムで打ってますもんね。
ちょうどそんなこと考えてたときだったんで面白い記事でした。
「え?」って感じですね。
ほんとはキーボードの音から打ってるキーを判別するという実験があったって話です。
詳細はリンク先を見てください。
そんなこと言ったら、キーを打つところを見てればどうせわかるんじゃないの?なんて思いました。
でも、音だったら電話越しでもいけますね。すばらしい。
盗聴機は有名だけど、盗撮機も有名か。まあ、場所を選ばないから有利です。
適当な社員になりすまして、「ちょっとログインしてもらえますか」なんて言われたら拒む人はあまりいないと思いますしね。
これでパスワードが手に入る。やったあ。
たしかに自分のルートパスワードなんていつも同じリズムで打ってますもんね。
ちょうどそんなこと考えてたときだったんで面白い記事でした。
月曜日, 9月 19, 2005
tinydnsもやめたい
ひさびさに技術よりな話。
ちなみにtinydnsはネームサーバーです。名前解決のサービスを提供しますね。
相棒のdnscacheは今は使ってません。
DebianのTestingバージョンを使っている人はきっと気づいていると思いますが、gccのメジャーバージョンがあがりました。今は4になっています。
aptで見たときに「これは結構危険だなあ」などと思いつつ、迷わずアップデート。
特に問題は起きませんでした。aptで管理しているものは!
そう、tinydnsはソースから手動でコンパイルしていたので問題が起きました。
と言っても、アップデート直後は問題が起きません。すべてメモリにロードされていますからね。
問題が起きたのは再起動した後なんですね。
SSHとApacheの起動がめちゃくちゃ遅い。
Apacheは設定ファイルの中でバーチャルホストを使っているから、その名前解決がタイムアウトするまで待つのはわかりますが、SSHはなんで遅いんでしょうね。
そんな理由はどうでもよくて、再起動後アクセスできなくなったのでまた泣きそうになりました。
とりあえず落ち着こうと思ってふらふらしてからアクセスしたら接続できたわけです。よかった。
いろいろ調べて結局、tinydnsが原因だとわかったわけです。
関連するdaemontoolsとかucspi-tcpも含めてコンパイルし直したら正常になりました。
せっかくaptみたいな便利なツールがあるのに、こんな依存関係の問題があるのは結構いやですね。コンパイルするのも面倒ですし。
しかも、DNSみたいな低レベル(レイヤーの話)のサービスが停止するのは結構致命的でした。
特に、僕はできるだけIPアドレスに依存しないようにいろんな設定で名前を使っているので大変だったんですよ。
またこんな問題が起きないように、もうtinydns使うのやめようかなあって気になってきました。
構造もシンプルだし、使いやすくて好きなんですけどね。
作者が変人(取り巻きを見た想像です)だから公式パッケージに入らないだけなんだけどなあ。
ちなみにtinydnsはネームサーバーです。名前解決のサービスを提供しますね。
相棒のdnscacheは今は使ってません。
DebianのTestingバージョンを使っている人はきっと気づいていると思いますが、gccのメジャーバージョンがあがりました。今は4になっています。
aptで見たときに「これは結構危険だなあ」などと思いつつ、迷わずアップデート。
特に問題は起きませんでした。aptで管理しているものは!
そう、tinydnsはソースから手動でコンパイルしていたので問題が起きました。
と言っても、アップデート直後は問題が起きません。すべてメモリにロードされていますからね。
問題が起きたのは再起動した後なんですね。
SSHとApacheの起動がめちゃくちゃ遅い。
Apacheは設定ファイルの中でバーチャルホストを使っているから、その名前解決がタイムアウトするまで待つのはわかりますが、SSHはなんで遅いんでしょうね。
そんな理由はどうでもよくて、再起動後アクセスできなくなったのでまた泣きそうになりました。
とりあえず落ち着こうと思ってふらふらしてからアクセスしたら接続できたわけです。よかった。
いろいろ調べて結局、tinydnsが原因だとわかったわけです。
関連するdaemontoolsとかucspi-tcpも含めてコンパイルし直したら正常になりました。
せっかくaptみたいな便利なツールがあるのに、こんな依存関係の問題があるのは結構いやですね。コンパイルするのも面倒ですし。
しかも、DNSみたいな低レベル(レイヤーの話)のサービスが停止するのは結構致命的でした。
特に、僕はできるだけIPアドレスに依存しないようにいろんな設定で名前を使っているので大変だったんですよ。
またこんな問題が起きないように、もうtinydns使うのやめようかなあって気になってきました。
構造もシンプルだし、使いやすくて好きなんですけどね。
作者が変人(取り巻きを見た想像です)だから公式パッケージに入らないだけなんだけどなあ。
水曜日, 9月 14, 2005
オートネゴシエーション と さくらインターネット
以前も書きましたが、このページはさくらインターネットにおいてあるサーバーを使っています。
そこで今日、問題がおきました。オートネゴシエーションに関する話題です。
さくらの評判を悪くするための記事です。というか、悪い。
サーバーをさくらインターネットに移動してから、ログにこんな感じのエラーが出てくるようになりました。
----------------------------------------------------------------------------
Jul 19 17:47:40 rabbit kernel: eth0: Transmit error, Tx status register 82.
Jul 19 17:47:40 rabbit kernel: Probably a duplex mismatch. See
Documentation/networking/vortex.txt
Jul 19 17:47:40 rabbit kernel: Flags; bus-master 1, dirty 396273(1)
current 396275(3)
Jul 19 17:47:40 rabbit kernel: Transmit list 00000000 vs. de8942a0.
----------------------------------------------------------------------------
見たまんま、ネットワークの速度があっていないんだろうと思ってサポートにメールをしたわけです。
さくらでは5だったか6営業日以内に返事が来ることになっていますが、2週間ほどたってやっとメールで返事が来ました。その間、催促すること2回。
それによると、たまにそういうことがあるから手動で設定をするようにとのこと。
え?今時、オートネゴシエーションを使ってはいけないホスティングサービスがあるのですか?
てっきり、オートネゴシエーション対応の設定に変えてくれると思っていたのでびっくりです。
しょうがないので言われたとおりに設定してみました。
最初はethtoolを使ってみたけどうまくいかなかったので、mii-toolを使いました。
設定をしたとたんに、接続が切れました。血管も切れそうでしたがなんとかまだつながってます。
一応、サーバーの移動とか以外では止めたことがないのですよ。ささやかな自慢だったのに。
しかも、今は海外です。飛んでいって直すわけにもいきません。
なのであせりました。「なんでリモートでネットワークの設定を触ってしまったんだー!」と後悔の嵐です。この間の台風に負けてません。
もしかしたら、再起動すればデフォルトに戻るかなと思ってさくらに電話しました。もちろん国際電話ですよ。めちゃ高いんですよ!
再起動が終わってもやっぱり直りません。涙が止まりません。
しょうがないので、東京にいる友人に話して直してくれないか相談しました。僕はいけないですからね。
なにして壊したかははっきりしてるので、移動以外ではそんなに手間もかからんだろうとか思ってました。
で、話してるうちに昔まったく同じようなことがあったらしい。聞けば聞くほど同じでした。
その時は結局さくらの側で設定して収まったとのこと。だいぶ怒りのボルテージが上がってきましたね。
実はその話は前もうっすらと聞いたことがあったので、最初のメールにも書いてたんですね。
こういうエラーがあって、前にも聞いたことがあるから調べてくださいって。
なので、多少しつこいかな、なんて遠慮がちにもう一度言ったわけですよ。
しばらく調べた後の返事が「スイッチの設定を変更します。有料です。」あほか、と。
なんで狂った設定を直すのに僕がお金を払わないといけないんでしょう。
控えめに「言われたとおりの設定をしてなんでお金を払わないといけないんだ」と伝えました。
その返事が「お話のメールを確認しますので件名と日付を教えてください」とのこと。このあたりから責任のなすりつけあいっぽいですね。それでもサービス業か。
しばらく待ってると、このサーバーから障害報告のメールが届きました。お!直ったね。
さらにしばらく待っているとさくらから電話がかかってきました。
「今、ネットワークの開通を確認しました。スイッチのオートネゴシエーションを有効にしました。これで今回のリブートしてネットワークにつながらなくなった件は解決ですね。お客様はきっと一時的な変更をされていたので、リブート後に設定が戻ってしまってネットワークにつながらなくなったんですね。」
なんと、先ほどまで相手をしていた人ではなくて別の人間です。しかも話が変わってる。
ちゃんと事実関係と障害の原因を調べてからもう一度連絡するように伝えました。
素直に謝ってくれれば、こっちの気も収まるのに、なんで神経を逆なでするようなことをしますか。
僕は現実的な被害を受けているんですが。
もちろんそれは請求するつもりですけど、けんかになるのは面倒です。
返事がきてからまた考えますが、いつになることやら。まさに安かろう悪かろうですね。
これでも来月上場するらしいです。なにやら悔しい気持ちも沸いてきますね。
それにしても、こんなサービス、使わないほうがいいですよ。さくらインターネット、最悪。
そこで今日、問題がおきました。オートネゴシエーションに関する話題です。
さくらの評判を悪くするための記事です。というか、悪い。
サーバーをさくらインターネットに移動してから、ログにこんな感じのエラーが出てくるようになりました。
----------------------------------------------------------------------------
Jul 19 17:47:40 rabbit kernel: eth0: Transmit error, Tx status register 82.
Jul 19 17:47:40 rabbit kernel: Probably a duplex mismatch. See
Documentation/networking/vortex.txt
Jul 19 17:47:40 rabbit kernel: Flags; bus-master 1, dirty 396273(1)
current 396275(3)
Jul 19 17:47:40 rabbit kernel: Transmit list 00000000 vs. de8942a0.
----------------------------------------------------------------------------
見たまんま、ネットワークの速度があっていないんだろうと思ってサポートにメールをしたわけです。
さくらでは5だったか6営業日以内に返事が来ることになっていますが、2週間ほどたってやっとメールで返事が来ました。その間、催促すること2回。
それによると、たまにそういうことがあるから手動で設定をするようにとのこと。
え?今時、オートネゴシエーションを使ってはいけないホスティングサービスがあるのですか?
てっきり、オートネゴシエーション対応の設定に変えてくれると思っていたのでびっくりです。
しょうがないので言われたとおりに設定してみました。
最初はethtoolを使ってみたけどうまくいかなかったので、mii-toolを使いました。
設定をしたとたんに、接続が切れました。血管も切れそうでしたがなんとかまだつながってます。
一応、サーバーの移動とか以外では止めたことがないのですよ。ささやかな自慢だったのに。
しかも、今は海外です。飛んでいって直すわけにもいきません。
なのであせりました。「なんでリモートでネットワークの設定を触ってしまったんだー!」と後悔の嵐です。この間の台風に負けてません。
もしかしたら、再起動すればデフォルトに戻るかなと思ってさくらに電話しました。もちろん国際電話ですよ。めちゃ高いんですよ!
再起動が終わってもやっぱり直りません。涙が止まりません。
しょうがないので、東京にいる友人に話して直してくれないか相談しました。僕はいけないですからね。
なにして壊したかははっきりしてるので、移動以外ではそんなに手間もかからんだろうとか思ってました。
で、話してるうちに昔まったく同じようなことがあったらしい。聞けば聞くほど同じでした。
その時は結局さくらの側で設定して収まったとのこと。だいぶ怒りのボルテージが上がってきましたね。
実はその話は前もうっすらと聞いたことがあったので、最初のメールにも書いてたんですね。
こういうエラーがあって、前にも聞いたことがあるから調べてくださいって。
なので、多少しつこいかな、なんて遠慮がちにもう一度言ったわけですよ。
しばらく調べた後の返事が「スイッチの設定を変更します。有料です。」あほか、と。
なんで狂った設定を直すのに僕がお金を払わないといけないんでしょう。
控えめに「言われたとおりの設定をしてなんでお金を払わないといけないんだ」と伝えました。
その返事が「お話のメールを確認しますので件名と日付を教えてください」とのこと。このあたりから責任のなすりつけあいっぽいですね。それでもサービス業か。
しばらく待ってると、このサーバーから障害報告のメールが届きました。お!直ったね。
さらにしばらく待っているとさくらから電話がかかってきました。
「今、ネットワークの開通を確認しました。スイッチのオートネゴシエーションを有効にしました。これで今回のリブートしてネットワークにつながらなくなった件は解決ですね。お客様はきっと一時的な変更をされていたので、リブート後に設定が戻ってしまってネットワークにつながらなくなったんですね。」
なんと、先ほどまで相手をしていた人ではなくて別の人間です。しかも話が変わってる。
ちゃんと事実関係と障害の原因を調べてからもう一度連絡するように伝えました。
素直に謝ってくれれば、こっちの気も収まるのに、なんで神経を逆なでするようなことをしますか。
僕は現実的な被害を受けているんですが。
もちろんそれは請求するつもりですけど、けんかになるのは面倒です。
返事がきてからまた考えますが、いつになることやら。まさに安かろう悪かろうですね。
これでも来月上場するらしいです。なにやら悔しい気持ちも沸いてきますね。
それにしても、こんなサービス、使わないほうがいいですよ。さくらインターネット、最悪。
木曜日, 7月 21, 2005
金曜日, 7月 08, 2005
Content-Encoding: gzip
HTTPの話。
前回はchunkedに対応したので、今度はgzipに対応してみます。これで圧縮された転送にも対応できるわけですね。
ソケットから読み込んだデータをバッファにためて、perlioを使って解凍します。
ここで「使いにくいなー」と思う、readコマンド。
最初はソケットから読み込みながら伸張しようと思っていたんですが、なんと!指定するバイト数分読み込むのではなくて、読み込んだ(伸張した)バイト数をカウントするんですね。
これは不便。だって、圧縮されてるデータを展開したら何バイトになるかなんてわからないじゃないですか。なのでなんだか2度手間な感じになってます。
サンプルコード
-------------------------------------------------------------
my $buff = '';
if ( $chunked ) {
while ( <$sock> ) {
warn $_ if $debug;
last if m/^\r\n$/;
s/\r\n//;
s/\s//i;
my $content_length = hex($_) or last;
my $tmp;
read $sock, $tmp, $content_length;
$buff .= $tmp;
}
}
elsif ( $content_length ) {
read $sock, $buff, $content_length;
}
my $content = '';
if ( $gzipped ) {
open FH, '<:gzip', \$buff or die $!;
$content .= $_ while;
close FH or die $!;
}
else {
$content .= $buff;
}
-------------------------------------------------------------
前回はchunkedに対応したので、今度はgzipに対応してみます。これで圧縮された転送にも対応できるわけですね。
ソケットから読み込んだデータをバッファにためて、perlioを使って解凍します。
ここで「使いにくいなー」と思う、readコマンド。
最初はソケットから読み込みながら伸張しようと思っていたんですが、なんと!指定するバイト数分読み込むのではなくて、読み込んだ(伸張した)バイト数をカウントするんですね。
これは不便。だって、圧縮されてるデータを展開したら何バイトになるかなんてわからないじゃないですか。なのでなんだか2度手間な感じになってます。
サンプルコード
-------------------------------------------------------------
my $buff = '';
if ( $chunked ) {
while ( <$sock> ) {
warn $_ if $debug;
last if m/^\r\n$/;
s/\r\n//;
s/\s//i;
my $content_length = hex($_) or last;
my $tmp;
read $sock, $tmp, $content_length;
$buff .= $tmp;
}
}
elsif ( $content_length ) {
read $sock, $buff, $content_length;
}
my $content = '';
if ( $gzipped ) {
open FH, '<:gzip', \$buff or die $!;
$content .= $_ while
close FH or die $!;
}
else {
$content .= $buff;
}
-------------------------------------------------------------
水曜日, 7月 06, 2005
Debian GNU/Linux で exim4 を設定する
気がついたら「Exim4 設定」で上位に表示されるようになってました。
なので申し訳ない気持ちを込めて書いておきます。もちろん、debianでの話です。
そもそも、Debianでは有無を言わせずインストールされてしまうExim。その時になにか設定を選ばされてしまうのですけどね。
じっくり英語を読めば難しいことは書いてないけど、やはり面倒です。しかし、Debianの標準MTAはこのEximです。だからしょうがない。
で、ちょうど僕は受信するドメインを増やしたくなったので再設定しました。
やりかたは、/etc/exim4/update-exim4.conf.conf なんていう名前のファイルに書いてあります。なんでこんな変な名前なんだ。。。下ででてくるコマンドの名前といい、ちょっと趣味悪い?とか思ってしまいます。
設定の仕方は、
1. dpkg-reconfigure exim4-config を実行してインストール時の処理をやり直す
か、
2. このファイルを編集してupdate-exim4.confを実行する
です。
普通に送受信するだけならどちらかのやり方だけで事足りますね。といっても結局同じことしてるんですが。
ユーザー毎の転送なんかは別で設定します。
もっと凝ったことをやりたい場合はちゃんとマニュアル読んで、設定ファイルを変更しましょう。設定とは違うけど、こんな懲り方も参考までに。
あとはaliasなんかも必要にあわせて設定します。これで完成。
なので申し訳ない気持ちを込めて書いておきます。もちろん、debianでの話です。
そもそも、Debianでは有無を言わせずインストールされてしまうExim。その時になにか設定を選ばされてしまうのですけどね。
じっくり英語を読めば難しいことは書いてないけど、やはり面倒です。しかし、Debianの標準MTAはこのEximです。だからしょうがない。
で、ちょうど僕は受信するドメインを増やしたくなったので再設定しました。
やりかたは、/etc/exim4/update-exim4.conf.conf なんていう名前のファイルに書いてあります。なんでこんな変な名前なんだ。。。下ででてくるコマンドの名前といい、ちょっと趣味悪い?とか思ってしまいます。
設定の仕方は、
1. dpkg-reconfigure exim4-config を実行してインストール時の処理をやり直す
か、
2. このファイルを編集してupdate-exim4.confを実行する
です。
普通に送受信するだけならどちらかのやり方だけで事足りますね。といっても結局同じことしてるんですが。
ユーザー毎の転送なんかは別で設定します。
もっと凝ったことをやりたい場合はちゃんとマニュアル読んで、設定ファイルを変更しましょう。設定とは違うけど、こんな懲り方も参考までに。
あとはaliasなんかも必要にあわせて設定します。これで完成。
Live HTTP Headers
Live HTTP Headersです。
FireFoxの拡張機能で、その名の通りHTTPヘッダーを見ることができます。
使い方は簡単で、ツールから選択するだけ。あとは起動以降のHTTPヘッダーを勝手に記録していってくれます。
ヘッダーを覗き見るツールとしては内部プロキシなんかが結構多いのかもしれませんが、ブラウザがFirefoxだけでいいならこれが一番簡単です。
まあ、普通のWebアプリケーションを開発するだけならあまり必要はないですが(せいぜいクッキー見るくらいかな)、HTTPの勉強をしたいかたはどうぞ。
前回のtcpdumpはトランスポート層(Transport Layer)のやりとりを見ることができて、今回はアプリケーション層(Application Layer)を見ることができるわけですね。すてき。
ということは、次はなにを見るのか、、ばればれですね。
FireFoxの拡張機能で、その名の通りHTTPヘッダーを見ることができます。
使い方は簡単で、ツールから選択するだけ。あとは起動以降のHTTPヘッダーを勝手に記録していってくれます。
ヘッダーを覗き見るツールとしては内部プロキシなんかが結構多いのかもしれませんが、ブラウザがFirefoxだけでいいならこれが一番簡単です。
まあ、普通のWebアプリケーションを開発するだけならあまり必要はないですが(せいぜいクッキー見るくらいかな)、HTTPの勉強をしたいかたはどうぞ。
前回のtcpdumpはトランスポート層(Transport Layer)のやりとりを見ることができて、今回はアプリケーション層(Application Layer)を見ることができるわけですね。すてき。
ということは、次はなにを見るのか、、ばればれですね。
水曜日, 6月 29, 2005
atomをRSSに変換
こんなページを見つけました。
atomのURLを送信するとRSSに変換してくれます。
これを使って、wget~なんていうのをcronに登録すればうちのサイトもRSSに対応だ!なんて思ってました。
用途は主にmixiで日記の更新が反映されないことだったんですが、じつはmixiがこっそりatomに対応していました。なんかタイミング悪いですね。
今までRSSリーダーで読んでくれてた人もこれで安心!なんていおうと思っていたのに。。。
なのでこの計画はお蔵入り、と思ってたら今度はmixiのバグか、更新は表示されるけどそのリンクが正しくない!
僕がRSSに対応するのが早いか、mixiがバグを直すのが先か、勝負ですね。。。負けたい。
atomのURLを送信するとRSSに変換してくれます。
これを使って、wget~なんていうのをcronに登録すればうちのサイトもRSSに対応だ!なんて思ってました。
用途は主にmixiで日記の更新が反映されないことだったんですが、じつはmixiがこっそりatomに対応していました。なんかタイミング悪いですね。
今までRSSリーダーで読んでくれてた人もこれで安心!なんていおうと思っていたのに。。。
なのでこの計画はお蔵入り、と思ってたら今度はmixiのバグか、更新は表示されるけどそのリンクが正しくない!
僕がRSSに対応するのが早いか、mixiがバグを直すのが先か、勝負ですね。。。負けたい。
tcpdumpでパケットを見る
tcpdumpです。
インターフェイスを指定して、そこを流れるパケットをキャプチャーすることができます。
これをファイルに保存しておいて、stringsを使って中身を見ることができます。
まあ、本気で解析するにはちょっと使いにくいツールかもしれませんが、どんな感じでデータがやりとりされているかイメージがわきます。
ついでに妄想も膨らんでしまうので大変です。
インターフェイスを指定して、そこを流れるパケットをキャプチャーすることができます。
これをファイルに保存しておいて、stringsを使って中身を見ることができます。
まあ、本気で解析するにはちょっと使いにくいツールかもしれませんが、どんな感じでデータがやりとりされているかイメージがわきます。
ついでに妄想も膨らんでしまうので大変です。
火曜日, 6月 28, 2005
Debian GNU/Linux で tmpfs を使おう
というわけでtmpfsです。
tmpfsとはなにかというと、メインメモリを使うファイルシステムです。RAMディスクなわけですよ。
なので速い!(はず)
頻繁に読み書きするようなファイル(で、しかも一時的なもの)はここにおいておくとよいですね。
tmpfsのすごいところは、実際のメモリ上のサイズは動的に変化することです。なので、どれくらいのファイルを置くために、どれだけのサイズをマウントしようかなんて気にしなくてもいいです。なんて親切なんだ! まさにシステムの鏡ですね。
Debianの場合だと、ぼーっと、「次へ」、「次へ!」、「次へ!!」なんてインストールすれば最初から利用できます。
/dev/shm がそう。ここをそのままディレクトリとして使ってもよいし、生のデバイスを使ってるみたいで気持ち悪い人は普通にマウントして使うことも出来ます。
僕の場合はなんか、ファイルがもうあったので、そして多少面倒な気持ちもなきにしもあらずだったのでマウントしたりせずにそのまま使ってます。
tmpfsとはなにかというと、メインメモリを使うファイルシステムです。RAMディスクなわけですよ。
なので速い!(はず)
頻繁に読み書きするようなファイル(で、しかも一時的なもの)はここにおいておくとよいですね。
tmpfsのすごいところは、実際のメモリ上のサイズは動的に変化することです。なので、どれくらいのファイルを置くために、どれだけのサイズをマウントしようかなんて気にしなくてもいいです。なんて親切なんだ! まさにシステムの鏡ですね。
Debianの場合だと、ぼーっと、「次へ」、「次へ!」、「次へ!!」なんてインストールすれば最初から利用できます。
/dev/shm がそう。ここをそのままディレクトリとして使ってもよいし、生のデバイスを使ってるみたいで気持ち悪い人は普通にマウントして使うことも出来ます。
僕の場合はなんか、ファイルがもうあったので、そして多少面倒な気持ちもなきにしもあらずだったのでマウントしたりせずにそのまま使ってます。
月曜日, 6月 27, 2005
info を使おう
sar を使おうの問題、コメントいただいたおかげですっきりしました。ありがとさん。
しかし、ひとつ問題が。。。
自分でも「一行で書こう!」と思った時にdateコマンドを調べたんですよね。
だから、コメント見て「?? yesterdayなんてオプションは記憶にないぞ!」とか思ったわけです。
実際、manをもう一度見返してみても載ってません。
そこでinfoの登場です。
ばっちりのってました。やられた。
infoは長くなるのでついつい敬遠してあんまり見たことなかったんですが、これからはちゃんと読みます。。。反省を込めて。愛はこもってません、あしからず。でもちょっとひきこもりかも。山篭りなんて健康になれそうでよいですね。コウモリにも会えそうだし。ヤモリやイモリも、、、こう、もり あがりにかけたところで終わっておきます。
しかし、ひとつ問題が。。。
自分でも「一行で書こう!」と思った時にdateコマンドを調べたんですよね。
だから、コメント見て「?? yesterdayなんてオプションは記憶にないぞ!」とか思ったわけです。
実際、manをもう一度見返してみても載ってません。
そこでinfoの登場です。
ばっちりのってました。やられた。
infoは長くなるのでついつい敬遠してあんまり見たことなかったんですが、これからはちゃんと読みます。。。反省を込めて。愛はこもってません、あしからず。でもちょっとひきこもりかも。山篭りなんて健康になれそうでよいですね。コウモリにも会えそうだし。ヤモリやイモリも、、、こう、もり あがりにかけたところで終わっておきます。
木曜日, 6月 23, 2005
Debian GNU/Linux で sar を使う
コンピュータの負荷を知るために、今まで
0 10 * * * vmstat 3600 24
こんな感じでcronを使っていました。
sarとは、システムの統計情報を出力するコマンドです。vmstatの親戚だと思ったらいいです。実際、下の方法でインストールすると iostatや、mpstatといった、stat兄弟もインストールされます。
まあ、これで十分なところもあるんですが、プロセスが常駐してるのがうっとうしくなってきたのでsarを使うことにしました。
sarでは、プロセス、メモリ、ディスク、ネットワーク(ソケット)、デバイス、割り込み要求(IRQ)なんかの統計値が詳しく出力されます。
プロセスごと(子プロセスを含んだり、含まなかったりできる)や、インターフェイスごとにも出力できるので障害の調査にも使えます。
使いかたは、
まず apt で sysstat をインストール。
後は統計値を見たいときにsarを実行すればいいです。
僕は不精なので、
--------------------------------------------------------
#!/usr/bin/perl
use strict;
use warnings;
my $time = time - 86400;
my $day = ( localtime $time )[3];
my $filename = sprintf '/var/log/sysstat/sa%02d', $day;
print `sar -A -f $filename`;
--------------------------------------------------------
こんなスクリプトをcronに登録して、毎日メールで送ってもらってます。
できれば一行でcronに登録したかったけど良いやりかたが思い付かなかった。月をまたいだ昨日の日付がとりづらい。エレガントな方法求む!
でも、ほんとのところはたいして見てないです。
cactiのグラフを見てれば大体概要はつかめます。世の中グラフィカルでないと。
問題がありそうだったら、sarの出力を調整してじっくり見たりすればよいですね。
0 10 * * * vmstat 3600 24
こんな感じでcronを使っていました。
sarとは、システムの統計情報を出力するコマンドです。vmstatの親戚だと思ったらいいです。実際、下の方法でインストールすると iostatや、mpstatといった、stat兄弟もインストールされます。
まあ、これで十分なところもあるんですが、プロセスが常駐してるのがうっとうしくなってきたのでsarを使うことにしました。
sarでは、プロセス、メモリ、ディスク、ネットワーク(ソケット)、デバイス、割り込み要求(IRQ)なんかの統計値が詳しく出力されます。
プロセスごと(子プロセスを含んだり、含まなかったりできる)や、インターフェイスごとにも出力できるので障害の調査にも使えます。
使いかたは、
まず apt で sysstat をインストール。
後は統計値を見たいときにsarを実行すればいいです。
僕は不精なので、
--------------------------------------------------------
#!/usr/bin/perl
use strict;
use warnings;
my $time = time - 86400;
my $day = ( localtime $time )[3];
my $filename = sprintf '/var/log/sysstat/sa%02d', $day;
print `sar -A -f $filename`;
--------------------------------------------------------
こんなスクリプトをcronに登録して、毎日メールで送ってもらってます。
できれば一行でcronに登録したかったけど良いやりかたが思い付かなかった。月をまたいだ昨日の日付がとりづらい。エレガントな方法求む!
でも、ほんとのところはたいして見てないです。
cactiのグラフを見てれば大体概要はつかめます。世の中グラフィカルでないと。
問題がありそうだったら、sarの出力を調整してじっくり見たりすればよいですね。
金曜日, 6月 17, 2005
Debian GNU/Linux 3.1 Sarge
ついにDebianの新しいバージョンがリリースされました。
当日は、「米国時間で今日だから。。。」とか思って5時、6時くらいにそわそわしてました。
で、「おぉ〜〜」となったわけです。めでたい。
で、それ以来セキュリティーアップデートのインデックスが壊れていたんですが、やっと直ったみたいです。というか、リリースされたばかりだったのでアップデートがなかっただけかも知れませんが。
これでaptですっきりできます。
当日は、「米国時間で今日だから。。。」とか思って5時、6時くらいにそわそわしてました。
で、「おぉ〜〜」となったわけです。めでたい。
で、それ以来セキュリティーアップデートのインデックスが壊れていたんですが、やっと直ったみたいです。というか、リリースされたばかりだったのでアップデートがなかっただけかも知れませんが。
これでaptですっきりできます。
木曜日, 6月 16, 2005
ムームードメイン
これまではドメインを取るときにはお名前.comを利用してきました。
もうひとつ欲しくなったので安いと評判のムームードメインを使ってみることにしました。
これがなかなかいい感じです。
まず、単純にひとつのドメインあたりのお金が安い。素晴らしいですね。
次に、お名前だと有料サービスのWHOIS代行が無料です。だいたいが、こんな手間のかからないサービスは無料にするべきでしょ。納得ですね。
細かいところでは、ネームサーバを無駄に2つも登録しなくていいところもいいです。主要なサービスを冗長化していないのにネームサーバを冗長化する意味があるのか。というか、強制するのは変かと。
あとは、コントロールパネルもお名前より使い易いです。というか、お名前のインターフェイスは確実に標準以下です。
今度の更新時にはkumicho.netもムームーに乗り換えようと思ってます。
実はGMOと資本関係があるみたいですね。お名前.comは大丈夫なんだろうか。
もうひとつ欲しくなったので安いと評判のムームードメインを使ってみることにしました。
これがなかなかいい感じです。
まず、単純にひとつのドメインあたりのお金が安い。素晴らしいですね。
次に、お名前だと有料サービスのWHOIS代行が無料です。だいたいが、こんな手間のかからないサービスは無料にするべきでしょ。納得ですね。
細かいところでは、ネームサーバを無駄に2つも登録しなくていいところもいいです。主要なサービスを冗長化していないのにネームサーバを冗長化する意味があるのか。というか、強制するのは変かと。
あとは、コントロールパネルもお名前より使い易いです。というか、お名前のインターフェイスは確実に標準以下です。
今度の更新時にはkumicho.netもムームーに乗り換えようと思ってます。
実はGMOと資本関係があるみたいですね。お名前.comは大丈夫なんだろうか。
月曜日, 6月 13, 2005
さくらインターネット
家のPCを移そうと思って、さくらインターネットに申し込みをしていました。
で、今日、請求書がきました。ほんとに請求書だけ。いや、まあいいんですけど。愛想ないなあ。
これで僕もサーバーのオーナーです。いや、いままでもそうだったのだけど、なんとなく雰囲気が。
ところで、なかなか、いろいろわかりにくいところもありました。
申し込みの時に、支払いの方法を振り込みか引き落としかを選ぶんですが、なんと会員のページからはクレジットカードが使えました。最初から教えてくれ。僕、カード好きなんですよ。
とある理由でメインバンクを替えようと思っていたので、どちらにしようか結構悩みました。で、結局振り込みを選んで、さっきコンビニに払いに行ったらお金が足りなくて恥もかきました。
ついでに言うと、最初の申請だから”ただ”だと思ってたIPアドレスが有料でした。びっくりですね。これは僕の勘違いな気もするけど。
まあ、結論をいえば、カードで支払いができてよかったし、IPアドレスも申請通り16個取得できたのでよかった。なんだか丸く収まった感じです。
と、安心していたらあとでこんなことになってしまいました。
で、今日、請求書がきました。ほんとに請求書だけ。いや、まあいいんですけど。愛想ないなあ。
これで僕もサーバーのオーナーです。いや、いままでもそうだったのだけど、なんとなく雰囲気が。
ところで、なかなか、いろいろわかりにくいところもありました。
申し込みの時に、支払いの方法を振り込みか引き落としかを選ぶんですが、なんと会員のページからはクレジットカードが使えました。最初から教えてくれ。僕、カード好きなんですよ。
とある理由でメインバンクを替えようと思っていたので、どちらにしようか結構悩みました。で、結局振り込みを選んで、さっきコンビニに払いに行ったらお金が足りなくて恥もかきました。
ついでに言うと、最初の申請だから”ただ”だと思ってたIPアドレスが有料でした。びっくりですね。これは僕の勘違いな気もするけど。
まあ、結論をいえば、カードで支払いができてよかったし、IPアドレスも申請通り16個取得できたのでよかった。なんだか丸く収まった感じです。
と、安心していたらあとでこんなことになってしまいました。
金曜日, 6月 03, 2005
perlIO
PerlIOを使ってみました。すごい便利。
と書いてみて、そうかな?って気がしてきました。どちらかというと、クールかも。
gzipで圧縮されたデータ($buff)があるときには、こんな感じで解凍できます。
--------------------------------------------------
open FH, '<:gzip', \$buff or die $!;
$content .= $_ while;
close FH or die $!;
--------------------------------------------------
1行目では変数をファイルハンドルとして開いています。
2行目でファイルハンドルから読み出されるデータは解凍されています。
簡単に言うと、PerlIOを使うと入出力の際にフィルタを適用できるわけです。プログラムから見たファイルハンドルはフィルタをかぶった疑似ファイルハンドルなわけですから、奥にいるのが変数なんかでもいいわけですね。でも変態だったらちょっといやな感じです。いないか。
と、書いて気がついた。
だとすると、と<$fh>にはもう性能差はないのかも知れませんね。昔は"直接"と"間接"だったわけだけど、今は両方間接になったはずだし。
ざっと調べてみたところ、
1. 文字コードの変換系(Shift-JIS ←→ UTF-8や改行文字の変更、MIMEなど)
2. 暗号系(CBCやMD5など)
3. 圧縮系(gzipなど)
の分野のフィルタがあります。
本当は上の例みたいに使うつもりはなかったんですが、ソケットとgzipフィルタの相性が悪かったので変数を開き直すなんておかしなことをやってます。
ただ、使ってみて意外といい気がしました。
これはインターフェイスの統一ですね。
どれもデータを受け取って変換して出力するだけなのに、モジュールごとにメソッド名はきっと違うでしょう。これを覚える必要がないのがすばらしい。頭の容量少ないんですよね。
ちなみに最初に”使ってみた”とか書いてますが、意識して使ってみたというだけで、みんな知らないうちに使っているのだった。。。
と書いてみて、そうかな?って気がしてきました。どちらかというと、クールかも。
gzipで圧縮されたデータ($buff)があるときには、こんな感じで解凍できます。
--------------------------------------------------
open FH, '<:gzip', \$buff or die $!;
$content .= $_ while
close FH or die $!;
--------------------------------------------------
1行目では変数をファイルハンドルとして開いています。
2行目でファイルハンドルから読み出されるデータは解凍されています。
簡単に言うと、PerlIOを使うと入出力の際にフィルタを適用できるわけです。プログラムから見たファイルハンドルはフィルタをかぶった疑似ファイルハンドルなわけですから、奥にいるのが変数なんかでもいいわけですね。でも変態だったらちょっといやな感じです。いないか。
と、書いて気がついた。
だとすると、
ざっと調べてみたところ、
1. 文字コードの変換系(Shift-JIS ←→ UTF-8や改行文字の変更、MIMEなど)
2. 暗号系(CBCやMD5など)
3. 圧縮系(gzipなど)
の分野のフィルタがあります。
本当は上の例みたいに使うつもりはなかったんですが、ソケットとgzipフィルタの相性が悪かったので変数を開き直すなんておかしなことをやってます。
ただ、使ってみて意外といい気がしました。
これはインターフェイスの統一ですね。
どれもデータを受け取って変換して出力するだけなのに、モジュールごとにメソッド名はきっと違うでしょう。これを覚える必要がないのがすばらしい。頭の容量少ないんですよね。
ちなみに最初に”使ってみた”とか書いてますが、意識して使ってみたというだけで、みんな知らないうちに使っているのだった。。。
日曜日, 5月 29, 2005
Transfer-Encoding の chunked
HTTPプロトコル(protocol)の話です。
たぶん、かなりマニアック。
HTTPのヘッダーには「Transfer-Encoding」というものがあります。
どうやってコンテンツ部分を転送するかを指定するものです。サーバー側の環境変数でいうと「HTTP_TE」です。
特に値が指定されていなければContent-Lengthの数バイトがコンテンツとして転送されますね。
この値が「chunked」のときにはちょっと変わっています。
1. 最初の行の値が16進数で表した、これに続くコンテンツのバイト数
2. 上のバイト数が0ならここでリクエストの応答は終わりです。
3. 上のバイト数分のコンテンツ
4. 1に戻る
みたいな感じなので、「0」だけの行が出てくるまで読み続けるわけですね。
動的なコンテンツの場合にはパートごとに分けて作れるので便利なわけです。
ソケットを使って自分で読み取るプログラムをPerlで書いてみました。
---------------------------------------------------------------------
sub get_content {
my $sock = shift or die;
my $debug = shift;
my $header = '';
my $content_length;
my $chunked;
while ( <$sock> ) {
warn $_ if $debug;
$header .= $_;
$content_length = $1 if m/Content-Length: (\d+)/;
$chunked = 1 if m/Transfer-Encoding: chunked/;
last if m/^\r\n$/;
}
my $content = '';
if ( $chunked ) {
while ( <$sock> ) {
warn $_ if $debug;
last if m/^\r\n$/;
s/\r\n//;
my $content_length = hex($_) or last;
my $buff;
read $sock, $buff, $content_length;
$content .= $buff;
}
}
elsif ( $content_length ) {
my $buff;
read $sock, $buff, $content_length;
$content .= $buff;
}
else { die $header }
return wantarray? ( $content, $header ): $content;
}
---------------------------------------------------------------------
まあ、たまにはこんなこともしてみます。
たぶん、かなりマニアック。
HTTPのヘッダーには「Transfer-Encoding」というものがあります。
どうやってコンテンツ部分を転送するかを指定するものです。サーバー側の環境変数でいうと「HTTP_TE」です。
特に値が指定されていなければContent-Lengthの数バイトがコンテンツとして転送されますね。
この値が「chunked」のときにはちょっと変わっています。
1. 最初の行の値が16進数で表した、これに続くコンテンツのバイト数
2. 上のバイト数が0ならここでリクエストの応答は終わりです。
3. 上のバイト数分のコンテンツ
4. 1に戻る
みたいな感じなので、「0」だけの行が出てくるまで読み続けるわけですね。
動的なコンテンツの場合にはパートごとに分けて作れるので便利なわけです。
ソケットを使って自分で読み取るプログラムをPerlで書いてみました。
---------------------------------------------------------------------
sub get_content {
my $sock = shift or die;
my $debug = shift;
my $header = '';
my $content_length;
my $chunked;
while ( <$sock> ) {
warn $_ if $debug;
$header .= $_;
$content_length = $1 if m/Content-Length: (\d+)/;
$chunked = 1 if m/Transfer-Encoding: chunked/;
last if m/^\r\n$/;
}
my $content = '';
if ( $chunked ) {
while ( <$sock> ) {
warn $_ if $debug;
last if m/^\r\n$/;
s/\r\n//;
my $content_length = hex($_) or last;
my $buff;
read $sock, $buff, $content_length;
$content .= $buff;
}
}
elsif ( $content_length ) {
my $buff;
read $sock, $buff, $content_length;
$content .= $buff;
}
else { die $header }
return wantarray? ( $content, $header ): $content;
}
---------------------------------------------------------------------
まあ、たまにはこんなこともしてみます。
金曜日, 5月 27, 2005
dnscache (djbdns) をやめよう
うちではDNS(のキャッシュサーバー)としてdnscache(djbdns)をローカルで使っていました。
ネットワーク越しにISPのキャッシュサーバーを使うよりは早いはず、と思っていたんですね。
そこで実際に応答の速度を計ってみると、、、なんと、ローカルの方が遅い!
といっても、ほとんど変わらないんですけど。断然早いと思っていたのでショックでした。
わざわざ自分で用意して、高負荷時にはもっと遅くなる可能性もある。なんて馬鹿らしいと考えて使うの止めました。
前に書いた、pop3の話でもそうですけど、管理の手間は極力少なくするほうがいいですしね。
ただ、キャッシュへの毒入れ(Cache poisoning)については多少不安がありますが。
ネットワーク越しにISPのキャッシュサーバーを使うよりは早いはず、と思っていたんですね。
そこで実際に応答の速度を計ってみると、、、なんと、ローカルの方が遅い!
といっても、ほとんど変わらないんですけど。断然早いと思っていたのでショックでした。
わざわざ自分で用意して、高負荷時にはもっと遅くなる可能性もある。なんて馬鹿らしいと考えて使うの止めました。
前に書いた、pop3の話でもそうですけど、管理の手間は極力少なくするほうがいいですしね。
ただ、キャッシュへの毒入れ(Cache poisoning)については多少不安がありますが。
木曜日, 5月 26, 2005
無料のPOP3サーバー(サービスとして)
ずばり、Gmailです!
でもよく考えたらYahooとかもやってますね。
そもそもなんでこんなことを言い出したのかというと、うちにはPOPサーバーがないんです。
Debianではデフォルトでインストールされないんですよ。そのほうがいいんですけどね。
まあ、それでも困らなかったんです。だって、メールボックスにあるファイルを直接読んだらいいですから。
ただ、それだとPCが増えたときに困るのもわかっていました。なので定番のPOPサーバーを探してインストールしようとしてたんです。そして衝撃が!
Gmailを使えばいいんだ!!
まだ普通っぽいですか?
ここのミソは”POPだけ使う”ことです。つまり、送信するときには自分で用意したSMTPを使うし、受信するときもこれを使います。そして、aliasを使ってGmailに転送します。
こうすると相手にはGmailを使っていることがわからない。自前でメールアカウントも用意できない程管理能力がない(または、貧乏)などと気づかれない!
これは、結構、すごいソリューションじゃないでしょうか。
利点は、
1. 対外的には自前で管理しているように見える
2. 内部的にもメーラーのPOPサーバーの設定をちゃんと見るような人間以外には気づかれない
3. 運用のコストがかからない
4. 専用のコンピューターを用意する必要がない(専用には用意しなさそうだけど)
5. もしPOPサーバーがLANの外側にあるなら、サーバー側の帯域の効率があがる(朝のピーク時を気にしなくていいから)
6. ディスクが少なくてもいい
7. Gmailはアカウントごとに2GB以上(しかも増え続ける)
8. そして、利用者が増えても増設の心配をしなくていい
9. おまけにバックアップも自動
気になる点は、
1. 安心(必要なものは自分で用意するべきなんて人が結構いる)
→ Google以上の稼働率を実現する自信がありますか? 僕はないです。
2. コンプライアンス
→ 第三者に情報を提供しないとPrivacy Policyには書いてあります。ただ、これをもって個人情報保護法案での情報の保護になるかはあやしい。ここから漏れるとは思えないけど。
3. 商用利用可能なのか?
→ これはちょっとわからないですね。誰か教えてください。
くらいでしょうか。全然問題ないですね。
激安メールシステムのコンサルタントができそうです。
でもよく考えたらYahooとかもやってますね。
そもそもなんでこんなことを言い出したのかというと、うちにはPOPサーバーがないんです。
Debianではデフォルトでインストールされないんですよ。そのほうがいいんですけどね。
まあ、それでも困らなかったんです。だって、メールボックスにあるファイルを直接読んだらいいですから。
ただ、それだとPCが増えたときに困るのもわかっていました。なので定番のPOPサーバーを探してインストールしようとしてたんです。そして衝撃が!
Gmailを使えばいいんだ!!
まだ普通っぽいですか?
ここのミソは”POPだけ使う”ことです。つまり、送信するときには自分で用意したSMTPを使うし、受信するときもこれを使います。そして、aliasを使ってGmailに転送します。
こうすると相手にはGmailを使っていることがわからない。自前でメールアカウントも用意できない程管理能力がない(または、貧乏)などと気づかれない!
これは、結構、すごいソリューションじゃないでしょうか。
利点は、
1. 対外的には自前で管理しているように見える
2. 内部的にもメーラーのPOPサーバーの設定をちゃんと見るような人間以外には気づかれない
3. 運用のコストがかからない
4. 専用のコンピューターを用意する必要がない(専用には用意しなさそうだけど)
5. もしPOPサーバーがLANの外側にあるなら、サーバー側の帯域の効率があがる(朝のピーク時を気にしなくていいから)
6. ディスクが少なくてもいい
7. Gmailはアカウントごとに2GB以上(しかも増え続ける)
8. そして、利用者が増えても増設の心配をしなくていい
9. おまけにバックアップも自動
気になる点は、
1. 安心(必要なものは自分で用意するべきなんて人が結構いる)
→ Google以上の稼働率を実現する自信がありますか? 僕はないです。
2. コンプライアンス
→ 第三者に情報を提供しないとPrivacy Policyには書いてあります。ただ、これをもって個人情報保護法案での情報の保護になるかはあやしい。ここから漏れるとは思えないけど。
3. 商用利用可能なのか?
→ これはちょっとわからないですね。誰か教えてください。
くらいでしょうか。全然問題ないですね。
激安メールシステムのコンサルタントができそうです。
水曜日, 5月 25, 2005
Filesystem Hierarchy Standard (FHS) について
FHSとはFilesystem Hierarchy Standardの略でして、Unixとその仲間たちのディレクトリやファイルの構成について決めたものです。
僕も経験があるんですが、Linuxを初めて触ったときってWindowsとディレクトリの構成が違ってて戸惑うんですよね。
おんなじことがUnix同士でもおきていて、それでこんな取り決めができたみたいです。
おおまかにはこんな感じ。
/ (ルートディレクトリ。根っこ。ここを切り倒せば木は倒れるわけですね)
├ /bin (基本コマンド。これがないとファイルも見れない)
├ /boot (起動に必要なファイル。下手にいじると再インストール)
├ /dev (デバイスファイル。なんでもファイルなUnixの真骨頂)
├ /etc (設定ファイル。rootになってする作業のほとんどはここをいじること)
├ /home (ユーザーのホームディレクトリ。ユーザーはみんな引きこもりなのでここから出られません)
├ /lib (共有ライブラリ。/binや/sbinのライブラリ、他のプログラムは別の場所のを使う)
├ /mnt (一時的なマウントポイント。さんざん乗っておいて、うまくいったら捨てられる)
├ /opt (追加アプリケーション。rpmとかdebとか)
├ /proc (プロセス情報など - Linux固有。ほんとになんでもファイル)
├ /root (root用ホームディレクトリ。王様は高台に住んでるわけですね)
├ /sbin (システム管理用コマンドなど。王様の兵隊たち)
├ /tmp (一時的なファイル。暴れたい時にはここで)
├ /usr (各種プログラムなど。ユーザーが使うアプリケーションなんかはここに)
└ /var (変更されるデータ。朝おっきくて、昼は小さい、暗くなるとまた大きくなるものなーんだ? 答え:影 下ネタ!?)
ほんとはもっと細かく決まってます。知りたい方はここのリンクからどうぞ。
まあ、これだけ分かればなんとなくすっきりしませんか?
僕も経験があるんですが、Linuxを初めて触ったときってWindowsとディレクトリの構成が違ってて戸惑うんですよね。
おんなじことがUnix同士でもおきていて、それでこんな取り決めができたみたいです。
おおまかにはこんな感じ。
/ (ルートディレクトリ。根っこ。ここを切り倒せば木は倒れるわけですね)
├ /bin (基本コマンド。これがないとファイルも見れない)
├ /boot (起動に必要なファイル。下手にいじると再インストール)
├ /dev (デバイスファイル。なんでもファイルなUnixの真骨頂)
├ /etc (設定ファイル。rootになってする作業のほとんどはここをいじること)
├ /home (ユーザーのホームディレクトリ。ユーザーはみんな引きこもりなのでここから出られません)
├ /lib (共有ライブラリ。/binや/sbinのライブラリ、他のプログラムは別の場所のを使う)
├ /mnt (一時的なマウントポイント。さんざん乗っておいて、うまくいったら捨てられる)
├ /opt (追加アプリケーション。rpmとかdebとか)
├ /proc (プロセス情報など - Linux固有。ほんとになんでもファイル)
├ /root (root用ホームディレクトリ。王様は高台に住んでるわけですね)
├ /sbin (システム管理用コマンドなど。王様の兵隊たち)
├ /tmp (一時的なファイル。暴れたい時にはここで)
├ /usr (各種プログラムなど。ユーザーが使うアプリケーションなんかはここに)
└ /var (変更されるデータ。朝おっきくて、昼は小さい、暗くなるとまた大きくなるものなーんだ? 答え:影 下ネタ!?)
ほんとはもっと細かく決まってます。知りたい方はここのリンクからどうぞ。
まあ、これだけ分かればなんとなくすっきりしませんか?
火曜日, 5月 24, 2005
Debian GNU/Linux でSSLを利用する
SSLの設定です。
といっても openssl + Apache の場合ですのであしからず。
まずは乱数の種を作ります。
コンピュータでは完全な乱数(random)を作るのはなかなか難しいんですよね。それで乱数系列と同じ特性をもつ疑似乱数(pseudo-random)系列を生成するアルゴリズム(random number generator)が用意されてます。
ただ、アルゴリズムなので入力が同じなら当然結果も同じです。初期値を変えないと毎回同じ疑似乱数列が出力されてしまうわけですね。
そこで、種(seed)を用意するわけです。これは基本的になんでもいいんですが、ここでは/usr/binにあるファイル名を使います。
------------------------------------------------------
# openssl md5 /usr/bin/* > rand.dat
------------------------------------------------------
これで/usr/bin以下のファイル名とそのハッシュ値がrand.datに書き込まれます。
これを使って乱数を発生させて秘密鍵を作ります。
------------------------------------------------------
# openssl genrsa -rand rand.dat -des3 1024 > key.pem
------------------------------------------------------
"1024"は鍵の長さです。"-des3"は秘密鍵を暗号化する方法にTriple-DESを使うという意味です。
今度は秘密鍵を使ってCSR(署名要求 - Certificate Signing Request -)を作成します。しつこいですね。一度で全部作れよ!とか思います。ベルトコンベアなイメージです。
------------------------------------------------------
# openssl req -new -key key.pem -out csr.pem
------------------------------------------------------
国名(JP)、都道府県(Tokyo)、市区町村(Taito)、会社(*** Ltd.)、部署(system-1)を入力します。common nameにはSSLを使うドメインを入力します。あとの3つは何も入れなくてもいいです。
括弧の中は僕の使ったものです。部署は数字を入れておくと、あとでWebサーバを分散させるときに便利です。
あと、common nameにはワイルドカードが使える場合があります。
*.kumicho.net
のようなcommon nameにしておくとa.kumicho.netでもb.kumicho.netでも使える、といった感じです。便利ですね。
ただ、クライアントによっては「"*"と"a"が一致しない」なんて文句をいう場合があります。LDAPのクライアントはそう言ってました。IEやFirefoxは大丈夫みたいです。
あと、CAcertでは文句を言われなかったけど、Verisignなんかもそうなのかは知りません。
といった感じで作ったCSRを認証局に送れば証明書が送られてきます。証明書をcert.pemなんて名前にして保存。
Apacheの設定ファイルに
-------- sites-available/blogger --------------------
SSLCertificateKeyFile ssl/key.pem
SSLCertificateFile ssl/cert.pem
-----------------------------------------------------
なんて書けば使えるようになります。
起動時のパスフレーズの入力を省略したい方はこちら。
ちなみに複数の証明書を使いたい場合には名前ベースではなく、IPベースのバーチャルホストを使わないといけません。
ApacheがSSLを使って接続するためには、どの証明書を使うか知るために名前を知らないといけない。けれど、そのHTTPリクエストの前にSSLでの接続が成立していなくてはいけない、なんてことが起こるからです。卵が先か、ニワトリが先か。。。
といっても openssl + Apache の場合ですのであしからず。
まずは乱数の種を作ります。
コンピュータでは完全な乱数(random)を作るのはなかなか難しいんですよね。それで乱数系列と同じ特性をもつ疑似乱数(pseudo-random)系列を生成するアルゴリズム(random number generator)が用意されてます。
ただ、アルゴリズムなので入力が同じなら当然結果も同じです。初期値を変えないと毎回同じ疑似乱数列が出力されてしまうわけですね。
そこで、種(seed)を用意するわけです。これは基本的になんでもいいんですが、ここでは/usr/binにあるファイル名を使います。
------------------------------------------------------
# openssl md5 /usr/bin/* > rand.dat
------------------------------------------------------
これで/usr/bin以下のファイル名とそのハッシュ値がrand.datに書き込まれます。
これを使って乱数を発生させて秘密鍵を作ります。
------------------------------------------------------
# openssl genrsa -rand rand.dat -des3 1024 > key.pem
------------------------------------------------------
"1024"は鍵の長さです。"-des3"は秘密鍵を暗号化する方法にTriple-DESを使うという意味です。
今度は秘密鍵を使ってCSR(署名要求 - Certificate Signing Request -)を作成します。しつこいですね。一度で全部作れよ!とか思います。ベルトコンベアなイメージです。
------------------------------------------------------
# openssl req -new -key key.pem -out csr.pem
------------------------------------------------------
国名(JP)、都道府県(Tokyo)、市区町村(Taito)、会社(*** Ltd.)、部署(system-1)を入力します。common nameにはSSLを使うドメインを入力します。あとの3つは何も入れなくてもいいです。
括弧の中は僕の使ったものです。部署は数字を入れておくと、あとでWebサーバを分散させるときに便利です。
あと、common nameにはワイルドカードが使える場合があります。
*.kumicho.net
のようなcommon nameにしておくとa.kumicho.netでもb.kumicho.netでも使える、といった感じです。便利ですね。
ただ、クライアントによっては「"*"と"a"が一致しない」なんて文句をいう場合があります。LDAPのクライアントはそう言ってました。IEやFirefoxは大丈夫みたいです。
あと、CAcertでは文句を言われなかったけど、Verisignなんかもそうなのかは知りません。
といった感じで作ったCSRを認証局に送れば証明書が送られてきます。証明書をcert.pemなんて名前にして保存。
Apacheの設定ファイルに
-------- sites-available/blogger --------------------
SSLCertificateKeyFile ssl/key.pem
SSLCertificateFile ssl/cert.pem
-----------------------------------------------------
なんて書けば使えるようになります。
起動時のパスフレーズの入力を省略したい方はこちら。
ちなみに複数の証明書を使いたい場合には名前ベースではなく、IPベースのバーチャルホストを使わないといけません。
ApacheがSSLを使って接続するためには、どの証明書を使うか知るために名前を知らないといけない。けれど、そのHTTPリクエストの前にSSLでの接続が成立していなくてはいけない、なんてことが起こるからです。卵が先か、ニワトリが先か。。。
月曜日, 5月 23, 2005
Bookmarks Synchronizer を使う(FirefoxのExtension)
Bookmarks Synchronizerを使いましょう!
Web DAVの設定はこのためと言っても過言でないです。無茶苦茶便利です。
このExtensionは名前のとおり、ブックマークを同期させます。Firefoxを使っていればどこでも同じブックマークが使えるだけでなく、どこで更新してもそれが共有されます。
自宅で「このサイトは便利だなあ」とブックマークしておけば会社ですぐ見られるわけです。すばらしい。
使い方は、まずFirefox Extensionsのページに行きます。
BookmarksのカテゴリからBookmarks Synchronizerを選択してインストール。
設定を開いたら、HTTPSにチェックを入れて、サーバーの設定を書いていきます。
下にあるチェックボックスは最後にはチェックを入れず、上の3つはチェックするのがよいかと。
Web DAVの設定はこのためと言っても過言でないです。無茶苦茶便利です。
このExtensionは名前のとおり、ブックマークを同期させます。Firefoxを使っていればどこでも同じブックマークが使えるだけでなく、どこで更新してもそれが共有されます。
自宅で「このサイトは便利だなあ」とブックマークしておけば会社ですぐ見られるわけです。すばらしい。
使い方は、まずFirefox Extensionsのページに行きます。
BookmarksのカテゴリからBookmarks Synchronizerを選択してインストール。
設定を開いたら、HTTPSにチェックを入れて、サーバーの設定を書いていきます。
下にあるチェックボックスは最後にはチェックを入れず、上の3つはチェックするのがよいかと。
日曜日, 5月 22, 2005
Debian GNU/Linux で Web DAV を使う
WebDAV(Web-based Distributed Authoring and Versioning)を導入しました。
要はWeb(HTTP)を利用したファイルの共有です。実際にはHTTPの拡張として実装されています。
すでにApacheが起動していればほとんど手間がかかりません。
1./etc/apache2/mods-enabled/ にシンボリックリンクを作ってWebDAVの機能を取り込みます。これには専用のコマンドもあります。
---------------------------------------------------------------------------
# ln -s /etc/apache2/mods-available/dav.load /etc/apache2/mods-enabled/
# ln -s /etc/apache2/mods-available/dav_fs.conf /etc/apache2/mods-enabled/
# ln -s /etc/apache2/mods-available/dav_fs.load /etc/apache2/mods-enabled/
---------------------------------------------------------------------------
または
---------------------------------------------------------------------------
# a2enmod dav
---------------------------------------------------------------------------
2.WebDAVを使いたいDirectoryで機能を有効にします。下の"DAV On"がそうです。
-------- /etc/apache2/sites-available/default -----------------------------
SSLRequireSSL
DAV On
AuthName "Web DAV Area"
AuthType Basic
AuthLDAPURL ldap://ldap.kumicho.net/dc=kumicho,dc=net?cn
require valid-user
---------------------------------------------------------------------------
3.ついでに認証も付け加えます。実際にはほぼ必須です。
4.忘れがちなのがWebDAVで使うディレクトリに書き込み権限を与えることです。他のプログラムから操作する必要がなければ所有者を変えてしまいましょう。
---------------------------------------------------------------------------
# chown www-data /var/www/dav/
# chgrp www-data /var/www/dav/
---------------------------------------------------------------------------
5.最後にApacheを再起動します。
---------------------------------------------------------------------------
# /etc/init.d/apache2 restart
---------------------------------------------------------------------------
これでサーバーの設定は終わりです。
一応テストしたいときは、IEを開いて「ファイル」→「開く」とたどります。
「Webフォルダとして開く」にチェックを入れてURLを入力します。
あとは普通のフォルダのように利用できます。
要はWeb(HTTP)を利用したファイルの共有です。実際にはHTTPの拡張として実装されています。
すでにApacheが起動していればほとんど手間がかかりません。
1./etc/apache2/mods-enabled/ にシンボリックリンクを作ってWebDAVの機能を取り込みます。これには専用のコマンドもあります。
---------------------------------------------------------------------------
# ln -s /etc/apache2/mods-available/dav.load /etc/apache2/mods-enabled/
# ln -s /etc/apache2/mods-available/dav_fs.conf /etc/apache2/mods-enabled/
# ln -s /etc/apache2/mods-available/dav_fs.load /etc/apache2/mods-enabled/
---------------------------------------------------------------------------
または
---------------------------------------------------------------------------
# a2enmod dav
---------------------------------------------------------------------------
2.WebDAVを使いたいDirectoryで機能を有効にします。下の"DAV On"がそうです。
-------- /etc/apache2/sites-available/default -----------------------------
SSLRequireSSL
DAV On
AuthName "Web DAV Area"
AuthType Basic
AuthLDAPURL ldap://ldap.kumicho.net/dc=kumicho,dc=net?cn
require valid-user
---------------------------------------------------------------------------
3.ついでに認証も付け加えます。実際にはほぼ必須です。
4.忘れがちなのがWebDAVで使うディレクトリに書き込み権限を与えることです。他のプログラムから操作する必要がなければ所有者を変えてしまいましょう。
---------------------------------------------------------------------------
# chown www-data /var/www/dav/
# chgrp www-data /var/www/dav/
---------------------------------------------------------------------------
5.最後にApacheを再起動します。
---------------------------------------------------------------------------
# /etc/init.d/apache2 restart
---------------------------------------------------------------------------
これでサーバーの設定は終わりです。
一応テストしたいときは、IEを開いて「ファイル」→「開く」とたどります。
「Webフォルダとして開く」にチェックを入れてURLを入力します。
あとは普通のフォルダのように利用できます。
木曜日, 5月 19, 2005
秘密鍵のパスフレーズ(passphrase)をなくそう
なんか、今更な感もありますが。
ApacheでSSLを使うときなんかはパスフレーズを消しておかないと再起動のたびに入力を求められて大変です。うちみたいに「いろはにほへとちりぬるを・・・」なんてパスフレーズにすると100回くらいキーを打たないといけません。再起動恐怖症になってしまいます。嘘ですが。
なので、普通はパスフレーズを空にして使います。
秘密鍵がkey.pemだとすると、
openssl rsa -in key.pem -out keynopass.pem
とするといいです。パスフレーズを聞かれるので入力すればパスフレーズなしの鍵ができます。
あとはkeynopass.pemの方を鍵として使うようにすればいいです。
ApacheでSSLを使うときなんかはパスフレーズを消しておかないと再起動のたびに入力を求められて大変です。うちみたいに「いろはにほへとちりぬるを・・・」なんてパスフレーズにすると100回くらいキーを打たないといけません。再起動恐怖症になってしまいます。嘘ですが。
なので、普通はパスフレーズを空にして使います。
秘密鍵がkey.pemだとすると、
openssl rsa -in key.pem -out keynopass.pem
とするといいです。パスフレーズを聞かれるので入力すればパスフレーズなしの鍵ができます。
あとはkeynopass.pemの方を鍵として使うようにすればいいです。
火曜日, 5月 17, 2005
Debian の Exim4 でエイリアス(alias)の設定
たいしたことじゃないんですが、わかるまで結構時間がかかって悔しかったので。
うちのドメイン、kumicho.netに存在しないユーザー宛てのメールを僕が受け取る方法です。
/etc/aliases に
受け取りたい名前: 受け取るユーザー
を書きます。それだけ。
root宛のものなんかが僕のメールボックスにくるので、設定があるはずだと思って/etc/exim4のなかでgrep root しても見つからない。なんでだ、どうして?としばらく悩みました。まさかメールの設定の外にあるとは。。。sendmail互換なのか、それとも全然別の理由なのか、どちらにしても迷惑な話です。僕が睡眠不足になり、さらにうつ病になり、最後には仕事をやめて田舎で療養なんてことになったらDebianのせいですね。訴えてやる!
ちなみに、コンピュータに存在するユーザーがメールを転送するときには、ホームディレクトリの.forwardファイルを使います。
先頭の行に
# Exim filter
と書いて始めます。
次に
deliver gulliver@lilliput.fict.example
とか書くとそのあて先に転送できます。
このままだとローカルにメールが残らないので、ローカルのメールボックスに残す場合には
unseen deliver gulliver@lilliput.fict.example
とunseenをつけて安心です。ぷぷっ
他にもpipeコマンドでスクリプトに処理させることもできます。メールでブログに投稿したり、写真を掲載できるのはこういう機能を使ってるからなんですね、納得。
うちのドメイン、kumicho.netに存在しないユーザー宛てのメールを僕が受け取る方法です。
/etc/aliases に
受け取りたい名前: 受け取るユーザー
を書きます。それだけ。
root宛のものなんかが僕のメールボックスにくるので、設定があるはずだと思って/etc/exim4のなかでgrep root しても見つからない。なんでだ、どうして?としばらく悩みました。まさかメールの設定の外にあるとは。。。sendmail互換なのか、それとも全然別の理由なのか、どちらにしても迷惑な話です。僕が睡眠不足になり、さらにうつ病になり、最後には仕事をやめて田舎で療養なんてことになったらDebianのせいですね。訴えてやる!
ちなみに、コンピュータに存在するユーザーがメールを転送するときには、ホームディレクトリの.forwardファイルを使います。
先頭の行に
# Exim filter
と書いて始めます。
次に
deliver gulliver@lilliput.fict.example
とか書くとそのあて先に転送できます。
このままだとローカルにメールが残らないので、ローカルのメールボックスに残す場合には
unseen deliver gulliver@lilliput.fict.example
とunseenをつけて安心です。ぷぷっ
他にもpipeコマンドでスクリプトに処理させることもできます。メールでブログに投稿したり、写真を掲載できるのはこういう機能を使ってるからなんですね、納得。
月曜日, 5月 16, 2005
Debian GNU/Linux でLDAPを使う
うちのサイトでもほんのちょっとだけパスワードかけたりしてるんですが、LDAPを使うように変更しました。
ちなみにLDAPはLightweight Directory Access Protocolの略です。名前の通り、軽量な、ディレクトリサービスにアクセスするためのプロトコルなんですね。
まず、いつものようにaptでslapd(これがLDAPサーバ)をインストールします。ついでにldap-utilsもインストールします。こっちはメンテナンスのために必要です。
Debianではインストール時に必要なことをインストーラーが聞いてきます。便利ですね。
最初にドメインを聞かれます。たとえばkumicho.netなんかにします。次に組織名を聞かれます。今回はWebのアクセス制御に使うのでWWW Usersなんかにします。このあたり、動作に問題はないのですが結構悩みます。このユーザーグループは組織(LDIFではoで表される)にすべきなのか組織単位(=ou)にするべきなのか。まあ、とりあえずあとでも変更できるので進めます。
最後に管理者用のパスワードを聞かれます。忘れなさそうな言葉を書いておきます。
これでインストールは終了。
次に情報を入力します。まず、こんなファイルを作ります。
-------- user.ldif --------
# user1, kumicho.net
dn: cn=user1,dc=kumicho,dc=net
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: user1
description: ここ説明です
userPassword: ****************
---------------------------
#で始まってる行はコメントです。
最初のdnっていうのは識別名。全データで一意である必要があります。
次の二つは、このデータオブジェクトのクラスを書きます。ここで選んだクラスによって使える属性が決まります。今回は認証に使うだけなので上の二つにしてあります。社員データベースを構築したい場合なんかだと、inetOrgPersonなんかを使うといいです。名前や住所、電話番号はもちろん、写真や認証鍵も管理できます。作るのが大変ですけどね。
次はcn(コモンネーム)、名前です。
次は説明なんですが、ここに書いてるように日本語も使えます。ただし、UTF-8じゃないといけません。
最後は見ての通り、パスワードです。隠してます。いやん。
もっと詳しく知りたいときは、/etc/ldap/schema以下のファイルを見ましょう。
で、こういうファイルを作ったら、
ldapadd -x -f user.ldif -D "cn=admin,dc=kumicho,dc=net" -W
こんな感じで入力します。パスワードを聞かれるので答えてくださいね。
ldapsearch -x -D "cn=admin,dc=kumicho,dc=net" -b "dc=kumicho,dc=net" -W
これでちゃんと入力されているか確認できます。
簡単に説明すると、-xは単純な認証を使う、-fは入力ファイル、-Dは操作を行う識別名、-bは検索のベース、-Wはパスワードの入力を促します。
うまくいったら、後はApacheを設定します。
認証をかけたいファイルやディレクトリの中で、
------------------------
AuthName "Private Area"
AuthType Basic
AuthLDAPURL ldap://ldap.kumicho.net/dc=kumicho,dc=net?cn
require valid-user
------------------------
こんな風に書きます。ファイルの指定の変わりにURLを指定するだけなので簡単ですね。?の前の部分は検索のベース、そのあとはIDに使う属性名です。デフォルトではuidという属性が使われますが、今回は登録していないのでcnを使います。
Apacheを再起動すればldapとの連携が使えるようになります。
あとは、ネットワークを超えて使用できるようにTLSの設定やIPアドレスによる制限をかけないといけないんですが、長くなるのでまた今度。
というか、今の使い方では必要ないからしないかも。普段ネットワークを越えて使わない→TLSいらない、WebはIPによる制限かけてない→総当り攻撃だったら制限かけてもWebを通してできる、ってことで。あ、でもWeb通して変更はできないし、slapdに脆弱性があること考えたらやっぱり必要か。。。
ちなみにLDAPはLightweight Directory Access Protocolの略です。名前の通り、軽量な、ディレクトリサービスにアクセスするためのプロトコルなんですね。
まず、いつものようにaptでslapd(これがLDAPサーバ)をインストールします。ついでにldap-utilsもインストールします。こっちはメンテナンスのために必要です。
Debianではインストール時に必要なことをインストーラーが聞いてきます。便利ですね。
最初にドメインを聞かれます。たとえばkumicho.netなんかにします。次に組織名を聞かれます。今回はWebのアクセス制御に使うのでWWW Usersなんかにします。このあたり、動作に問題はないのですが結構悩みます。このユーザーグループは組織(LDIFではoで表される)にすべきなのか組織単位(=ou)にするべきなのか。まあ、とりあえずあとでも変更できるので進めます。
最後に管理者用のパスワードを聞かれます。忘れなさそうな言葉を書いておきます。
これでインストールは終了。
次に情報を入力します。まず、こんなファイルを作ります。
-------- user.ldif --------
# user1, kumicho.net
dn: cn=user1,dc=kumicho,dc=net
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: user1
description: ここ説明です
userPassword: ****************
---------------------------
#で始まってる行はコメントです。
最初のdnっていうのは識別名。全データで一意である必要があります。
次の二つは、このデータオブジェクトのクラスを書きます。ここで選んだクラスによって使える属性が決まります。今回は認証に使うだけなので上の二つにしてあります。社員データベースを構築したい場合なんかだと、inetOrgPersonなんかを使うといいです。名前や住所、電話番号はもちろん、写真や認証鍵も管理できます。作るのが大変ですけどね。
次はcn(コモンネーム)、名前です。
次は説明なんですが、ここに書いてるように日本語も使えます。ただし、UTF-8じゃないといけません。
最後は見ての通り、パスワードです。隠してます。いやん。
もっと詳しく知りたいときは、/etc/ldap/schema以下のファイルを見ましょう。
で、こういうファイルを作ったら、
ldapadd -x -f user.ldif -D "cn=admin,dc=kumicho,dc=net" -W
こんな感じで入力します。パスワードを聞かれるので答えてくださいね。
ldapsearch -x -D "cn=admin,dc=kumicho,dc=net" -b "dc=kumicho,dc=net" -W
これでちゃんと入力されているか確認できます。
簡単に説明すると、-xは単純な認証を使う、-fは入力ファイル、-Dは操作を行う識別名、-bは検索のベース、-Wはパスワードの入力を促します。
うまくいったら、後はApacheを設定します。
認証をかけたいファイルやディレクトリの中で、
------------------------
AuthName "Private Area"
AuthType Basic
AuthLDAPURL ldap://ldap.kumicho.net/dc=kumicho,dc=net?cn
require valid-user
------------------------
こんな風に書きます。ファイルの指定の変わりにURLを指定するだけなので簡単ですね。?の前の部分は検索のベース、そのあとはIDに使う属性名です。デフォルトではuidという属性が使われますが、今回は登録していないのでcnを使います。
Apacheを再起動すればldapとの連携が使えるようになります。
あとは、ネットワークを超えて使用できるようにTLSの設定やIPアドレスによる制限をかけないといけないんですが、長くなるのでまた今度。
というか、今の使い方では必要ないからしないかも。普段ネットワークを越えて使わない→TLSいらない、WebはIPによる制限かけてない→総当り攻撃だったら制限かけてもWebを通してできる、ってことで。あ、でもWeb通して変更はできないし、slapdに脆弱性があること考えたらやっぱり必要か。。。
土曜日, 4月 30, 2005
仮想端末の切り替え方
Linuxには仮想端末と呼ばれるものがあります。
といってもとても身近なものです。普通に起動してpsなんかを使ってプロセスを確認すると、うちではtty1からtty6までが確認できます。これのこと。
で、僕らは普段、知らないうちにこのうちのひとつを端末(入出力装置)として使っているわけですね。知って使ってる人もいるかとは思いますが、いちいちそんな事考えてたら気が狂いそうです。えらいです。
ひとつを使ってるということは、他も使えるんじゃないの?って疑問が起こります。そして使えます。
Ctl+Alt+F?(F1~F6)を押すと、数字に対応した端末に切り替わります。目の前にあるキーボードや画面が直接端末としてプロセッサー(も、OSで抽象化されているけど)に接続しているわけではないんですね。プロセッサーから見て端末の役割をこなしてるのはこいつら。なので仮想端末。
これを知っていると、プログラムが暴走した時なんかに役に立ちます。別の端末に切り替えて、暴走しているプロセスを殺したりできるわけです。ああ、また再起動。。。なんて考えなくてもいいわけですね。
僕がよく使うのは、Xがちゃんと起動しないときに切り替えて、戻ってくると直ってたりします。おかしいのやらおかしくないのやらわかりません。駄々こねないでよ、って感じです。
Xを起動するときにはstartxを使って自分で立ち上げるのが好みなんですが、こういうときにはXはCtl+Alt+F7に割り当てられています。要注意ですね。適当に押してりゃ気づきますけど。
あとは、いくつかのホストに同時に接続したりするときも便利です。X使ってるときならあまり関係ないけど、たまに役に立ちます。
ちなみにttyはTele-TYpewriterの略らしい。すごく近くにいるように思うけれども、二人(端末とプロセッサー)の間にはきっちりと距離があるわけですね。親しき中にも礼儀あり、といったところでしょうか。
といってもとても身近なものです。普通に起動してpsなんかを使ってプロセスを確認すると、うちではtty1からtty6までが確認できます。これのこと。
で、僕らは普段、知らないうちにこのうちのひとつを端末(入出力装置)として使っているわけですね。知って使ってる人もいるかとは思いますが、いちいちそんな事考えてたら気が狂いそうです。えらいです。
ひとつを使ってるということは、他も使えるんじゃないの?って疑問が起こります。そして使えます。
Ctl+Alt+F?(F1~F6)を押すと、数字に対応した端末に切り替わります。目の前にあるキーボードや画面が直接端末としてプロセッサー(も、OSで抽象化されているけど)に接続しているわけではないんですね。プロセッサーから見て端末の役割をこなしてるのはこいつら。なので仮想端末。
これを知っていると、プログラムが暴走した時なんかに役に立ちます。別の端末に切り替えて、暴走しているプロセスを殺したりできるわけです。ああ、また再起動。。。なんて考えなくてもいいわけですね。
僕がよく使うのは、Xがちゃんと起動しないときに切り替えて、戻ってくると直ってたりします。おかしいのやらおかしくないのやらわかりません。駄々こねないでよ、って感じです。
Xを起動するときにはstartxを使って自分で立ち上げるのが好みなんですが、こういうときにはXはCtl+Alt+F7に割り当てられています。要注意ですね。適当に押してりゃ気づきますけど。
あとは、いくつかのホストに同時に接続したりするときも便利です。X使ってるときならあまり関係ないけど、たまに役に立ちます。
ちなみにttyはTele-TYpewriterの略らしい。すごく近くにいるように思うけれども、二人(端末とプロセッサー)の間にはきっちりと距離があるわけですね。親しき中にも礼儀あり、といったところでしょうか。
火曜日, 4月 26, 2005
Debian GNU/Linux で awstats を使う
awstatsだと検索語がちゃんと日本語で表示されると聞いて、早速インストールしてみました。
使ってみると、訪問数・ページ数・(リクエストの)件数などがそれぞれわかるところがいい感じ。analogはページ数・件数だけだからちょっと性能アップです。ロボットやスパムを別に数えているのもいいですね。
やっぱり、検索語が日本語で表示されるのがすごくいいです。そして、今回これでわかったこと。
意外にも検索キーフレーズのトップは「吉原炎上」でした。。。微妙な気分です。少なくとも僕が狙ってたキーワードじゃない。勧められて見たんですよ。人の力って大切ですね。
ちなみにインストールはすごく簡単でした。
1. いつものようにaptでawstatsをインストール
2. LogFile="/var/log/apache/access.log"をLogFile="/var/log/apache2/access.log"に変更(うちはapache2を使ってるので)
3. LogFormat=4をLogFormat=1に変更(combinedなログに対応)
4. SiteDomain=""をSiteDomain="blogger.kumicho.net"に変更(このドメイン指定は必須)
5. awstatsのドキュメントルートで「ln -s /usr/share/awstats/icon/ awstats-icon」を実行(アイコンへのパスを通します)
6. www-dataをadmグループに追加します。rootで「adduser www-data adm」を実行するとよいです。(apacheのログを見るために必要)
ここ、すごく悩ましいんですよね。apacheのログをどうやってawstatsに見せるか。
cron.dにあるawstatsをrootで実行するのはさすがに嫌だし。残るは誰でもログを見られるようにするか、apacheの権限を強めるか。
結局、いくつかのログを見ることができるadmグループに加えて権限を強くしました。ちょっと消化不良。余談でした。
あとはawstats.plをブラウザで開けばオッケー。
これだけやったら十分見れるものになりました。
なかなかいい眺めなので、みなさんもどうぞ。
後日談:
LogFile="/var/log/apache2/access.log"
を
LogFile="cat /var/log/apache2/access.log.1 /var/log/apache2/access.log |"
に変更しました。
logrotateによる競合条件を避けるためです。
こういう細かい部分、結構気になるんですよね。
使ってみると、訪問数・ページ数・(リクエストの)件数などがそれぞれわかるところがいい感じ。analogはページ数・件数だけだからちょっと性能アップです。ロボットやスパムを別に数えているのもいいですね。
やっぱり、検索語が日本語で表示されるのがすごくいいです。そして、今回これでわかったこと。
意外にも検索キーフレーズのトップは「吉原炎上」でした。。。微妙な気分です。少なくとも僕が狙ってたキーワードじゃない。勧められて見たんですよ。人の力って大切ですね。
ちなみにインストールはすごく簡単でした。
1. いつものようにaptでawstatsをインストール
2. LogFile="/var/log/apache/access.log"をLogFile="/var/log/apache2/access.log"に変更(うちはapache2を使ってるので)
3. LogFormat=4をLogFormat=1に変更(combinedなログに対応)
4. SiteDomain=""をSiteDomain="blogger.kumicho.net"に変更(このドメイン指定は必須)
5. awstatsのドキュメントルートで「ln -s /usr/share/awstats/icon/ awstats-icon」を実行(アイコンへのパスを通します)
6. www-dataをadmグループに追加します。rootで「adduser www-data adm」を実行するとよいです。(apacheのログを見るために必要)
ここ、すごく悩ましいんですよね。apacheのログをどうやってawstatsに見せるか。
cron.dにあるawstatsをrootで実行するのはさすがに嫌だし。残るは誰でもログを見られるようにするか、apacheの権限を強めるか。
結局、いくつかのログを見ることができるadmグループに加えて権限を強くしました。ちょっと消化不良。余談でした。
あとはawstats.plをブラウザで開けばオッケー。
これだけやったら十分見れるものになりました。
なかなかいい眺めなので、みなさんもどうぞ。
後日談:
LogFile="/var/log/apache2/access.log"
を
LogFile="cat /var/log/apache2/access.log.1 /var/log/apache2/access.log |"
に変更しました。
logrotateによる競合条件を避けるためです。
こういう細かい部分、結構気になるんですよね。
火曜日, 3月 29, 2005
Linux ファイルのパーミッション
今日、見慣れないものを見てしまいました。
----------------------------------------------------
# ls -la /etc/dnscache/supervise/
total 12
drwx--S--- 2 root root 4096 Mar 24 01:57 .
drwxr-sr-t 6 root root 4096 Dec 8 17:13 ..
prw------- 1 root root 0 Dec 8 17:13 control
-rw------- 1 root root 0 Dec 8 17:13 lock
prw------- 1 root root 0 Dec 8 17:13 ok
-rw-r--r-- 1 root root 18 Mar 24 01:57 status
----------------------------------------------------
こんな感じ。なんだ「p」って??
調べてみたら名前つきパイプ(FIFO)のことでした。なるほど。
せっかくなのでまとめて調べてみようかと思ったけど、これがよくわかりません。
いまのところ想像がつくのは、
b ブロックデバイス
c キャラクタデバイス
d ディレクトリ
l シンボリックリンク
p 名前つきパイプ
くらいです。知ってる人いたら教えてください。
わからないことはしょうがないので、パーミッションについて書くことにします。
。。。と思ったけど、なんかバカバカしくなってきたのでやめました。
わかりにくいところでは、sやtでしょうか。
sはファイルの所有者、またはグループの実行権限でそのファイルを実行できることを意味します。それぞれset-user-ID (suid,setuid)、set-group-ID (sgid,setgid)ビットなんていいます。
ここで疑問が生まれます。もともとの所有者(またはグループ)に実行権限がなかったらどうなるんだ?
Linuxではこういう場合はSと大文字で表示されます。そしてこれがsgidだった場合にはこのファイルは強制ロックの対象になります。
強制ロックはカーネルが行うもので、ロックをかけたもの以外はたとえrootでも外すことができません。もしロックをかけたプロセスが外さずに終了する、無限ループに陥る、なんてことになるともはや誰もそのファイルにアクセスできなくなるわけです。埋蔵金の場所をだれにも教えないまま死んでしまったために、あとになってあっちこっち掘り返して大騒ぎな徳川家みたいになるわけですね。
そんなことになったら大変なのでなんとなく敷居が高そうです。イメージとしては、「このクソッタレの書いた協調性のないプログラムのせいで俺のエレガントなプログラムが動かないじゃないか!こうなったら強制ロックだ!!」みたいな感じでしょうか。なんか意外と低俗ですね。
話を戻して、tはsticky bitと呼ばれます。プログラムをスワップ上に保持するらしいけど、どんなときに使うのかあんまりピンときません。これももともと実行権がない場合には大文字のTになります。とくに意味はないです。
そのかわり今度は、ディレクトリの場合に別の意味を持ちます。
このディレクトリ内に作られたファイルはディレクトリの所有者かそのファイルの所有者以外、削除できません。一家団欒の食事で、弟のおかずを食べようとした兄貴の頭を殴る母親、残した野菜はわたしが始末、って感じでしょうか。悪くないですね。
まあ、互換性を考えたり、無駄を省くよう考えたりした結果なんだと思います。
でも、組み合わせによって想像もつかない効果を発揮するわけで、このsとかtはあんまり好きじゃない設計です。1ビットでも削ってやろうっていう昔のにおいがします。
こういう部分が残っていると、なかなかWindowsの代わりに使おうって、ならないんじゃないかな、って気がします。
----------------------------------------------------
# ls -la /etc/dnscache/supervise/
total 12
drwx--S--- 2 root root 4096 Mar 24 01:57 .
drwxr-sr-t 6 root root 4096 Dec 8 17:13 ..
prw------- 1 root root 0 Dec 8 17:13 control
-rw------- 1 root root 0 Dec 8 17:13 lock
prw------- 1 root root 0 Dec 8 17:13 ok
-rw-r--r-- 1 root root 18 Mar 24 01:57 status
----------------------------------------------------
こんな感じ。なんだ「p」って??
調べてみたら名前つきパイプ(FIFO)のことでした。なるほど。
せっかくなのでまとめて調べてみようかと思ったけど、これがよくわかりません。
いまのところ想像がつくのは、
b ブロックデバイス
c キャラクタデバイス
d ディレクトリ
l シンボリックリンク
p 名前つきパイプ
くらいです。知ってる人いたら教えてください。
わからないことはしょうがないので、パーミッションについて書くことにします。
。。。と思ったけど、なんかバカバカしくなってきたのでやめました。
わかりにくいところでは、sやtでしょうか。
sはファイルの所有者、またはグループの実行権限でそのファイルを実行できることを意味します。それぞれset-user-ID (suid,setuid)、set-group-ID (sgid,setgid)ビットなんていいます。
ここで疑問が生まれます。もともとの所有者(またはグループ)に実行権限がなかったらどうなるんだ?
Linuxではこういう場合はSと大文字で表示されます。そしてこれがsgidだった場合にはこのファイルは強制ロックの対象になります。
強制ロックはカーネルが行うもので、ロックをかけたもの以外はたとえrootでも外すことができません。もしロックをかけたプロセスが外さずに終了する、無限ループに陥る、なんてことになるともはや誰もそのファイルにアクセスできなくなるわけです。埋蔵金の場所をだれにも教えないまま死んでしまったために、あとになってあっちこっち掘り返して大騒ぎな徳川家みたいになるわけですね。
そんなことになったら大変なのでなんとなく敷居が高そうです。イメージとしては、「このクソッタレの書いた協調性のないプログラムのせいで俺のエレガントなプログラムが動かないじゃないか!こうなったら強制ロックだ!!」みたいな感じでしょうか。なんか意外と低俗ですね。
話を戻して、tはsticky bitと呼ばれます。プログラムをスワップ上に保持するらしいけど、どんなときに使うのかあんまりピンときません。これももともと実行権がない場合には大文字のTになります。とくに意味はないです。
そのかわり今度は、ディレクトリの場合に別の意味を持ちます。
このディレクトリ内に作られたファイルはディレクトリの所有者かそのファイルの所有者以外、削除できません。一家団欒の食事で、弟のおかずを食べようとした兄貴の頭を殴る母親、残した野菜はわたしが始末、って感じでしょうか。悪くないですね。
まあ、互換性を考えたり、無駄を省くよう考えたりした結果なんだと思います。
でも、組み合わせによって想像もつかない効果を発揮するわけで、このsとかtはあんまり好きじゃない設計です。1ビットでも削ってやろうっていう昔のにおいがします。
こういう部分が残っていると、なかなかWindowsの代わりに使おうって、ならないんじゃないかな、って気がします。
月曜日, 3月 28, 2005
Debian GNU/Linux で DVD を再生
DVDを見ようかと思って、Totemで再生してみました。
そしたら、「libdvdcssが必要です」みたいなエラーメッセージが。
さっそくaptで探したけど見つかりません。
調べてみると、これはUnofficialなパッケージでした。だからうちでは見つからなかったんですね。
しょうがないので、このライブラリをインストールする間だけ使えるようにしてみました。
/etc/apt/sources.list に一行付け加えます。
------------------------------------------------------
deb ftp://ftp.nerim.net/debian-marillat/ testing main
------------------------------------------------------
こんな感じ。
そのあとupdateしてからlibdvdcssをインストールします。
これでめでたく再生できるようになりました。
僕はなんとなくUnofficialという言葉が嫌だったので、この行をコメントアウトしてもう一度updateしておきました。
まあ、変わんないんですけどね。バージョン上がってもわからなくなるし不便な気もしますが、気分の問題です。
そしたら、「libdvdcssが必要です」みたいなエラーメッセージが。
さっそくaptで探したけど見つかりません。
調べてみると、これはUnofficialなパッケージでした。だからうちでは見つからなかったんですね。
しょうがないので、このライブラリをインストールする間だけ使えるようにしてみました。
/etc/apt/sources.list に一行付け加えます。
------------------------------------------------------
deb ftp://ftp.nerim.net/debian-marillat/ testing main
------------------------------------------------------
こんな感じ。
そのあとupdateしてからlibdvdcssをインストールします。
これでめでたく再生できるようになりました。
僕はなんとなくUnofficialという言葉が嫌だったので、この行をコメントアウトしてもう一度updateしておきました。
まあ、変わんないんですけどね。バージョン上がってもわからなくなるし不便な気もしますが、気分の問題です。
ichiro とは?
アクセスログを見てたら、こんなのを発見しました。
ichiro/1.0 (ichiro@nttr.co.jp)
gooの新しい検索エンジン用のクローラーみたいです。
ちなみにクローラーっていうのは、Webを這いまわってページを収集してくるプログラムのことです。
一時期はGoogleの一人勝ちって感じだったのに、MSNやYahooも検索サービスを自前で始めたし、gooも参戦するんでしょうか。楽しみ。
僕はGoogleファンなのでまだしばらくはGoogleを使うと思います。実際、結構なファンで、ツールバーはもちろんデスクトップサーチやPicasaとかインストールできるソフトはみんなしてます。おまけにGoogle Groupってメーリングリストにも参加してるし、メインのメールアドレスはGmail。そしてこのブログもBloggerなんですね。貼ってる広告はAdSenseとまさにGoogle尽くしです。
まあ、FlickrがYahooに買収されたので写真はYahooだし、メッセンジャーもMSNだからいいか。ライブドアは。。。株主!?(だった)
ichiro/1.0 (ichiro@nttr.co.jp)
gooの新しい検索エンジン用のクローラーみたいです。
ちなみにクローラーっていうのは、Webを這いまわってページを収集してくるプログラムのことです。
一時期はGoogleの一人勝ちって感じだったのに、MSNやYahooも検索サービスを自前で始めたし、gooも参戦するんでしょうか。楽しみ。
僕はGoogleファンなのでまだしばらくはGoogleを使うと思います。実際、結構なファンで、ツールバーはもちろんデスクトップサーチやPicasaとかインストールできるソフトはみんなしてます。おまけにGoogle Groupってメーリングリストにも参加してるし、メインのメールアドレスはGmail。そしてこのブログもBloggerなんですね。貼ってる広告はAdSenseとまさにGoogle尽くしです。
まあ、FlickrがYahooに買収されたので写真はYahooだし、メッセンジャーもMSNだからいいか。ライブドアは。。。株主!?(だった)
日曜日, 3月 27, 2005
起動(boot)時にランレベル(runlevel)の変更・grub編
できるってことは知ってたけど、良く考えたらどうしたらできるのか知りませんでした。
反省も込めて書いておきます。
答えはとってもかんたんで、OSの選択画面で起動したいのを選んだら「enter」ではなくて「e」を押します。
するとオプションの画面がでてくるので、ここで kernel のオプションを選んでまた「e」を押します。ここからはヘルプがでてるのでわかると思いますが。
こんどはコマンドラインの引数のようなものが編集できるようになります。前時代的ですね。
この引数の最後にスペースをあけて起動したいランレベルを数字で書きます。2で起動したければ2と書くわけです。そのまんまですね。
編集後にオプションの画面に戻ったら、「b」を押して起動します。
これだけ。
ただ、僕のようなDebian使ってる人でこの知識が役に立つことはまずないかなー、と思います。
というのもDebianの考えかたではシングルユーザーモードとマルチユーザーモード以外は区別していない(GUIとかですね)ので、Debianパッケージを使うとランレベル2以降はすべて同じ起動スクリプトがインストールされます。
なので自分でしこしこ設定しない人には実質ランレベル1と2しかないわけですね。0と6はどうなんだとか聞かないでくださいね。
で、grubの画面ではその2つが表示されちゃっているので上で書いたようなことをしなくても矢印で選べるわけです。うちの環境ではカーネルが2種類あるので、2かける2で4つの項目から選べるわけですね。
反省も込めて書いておきます。
答えはとってもかんたんで、OSの選択画面で起動したいのを選んだら「enter」ではなくて「e」を押します。
するとオプションの画面がでてくるので、ここで kernel のオプションを選んでまた「e」を押します。ここからはヘルプがでてるのでわかると思いますが。
こんどはコマンドラインの引数のようなものが編集できるようになります。前時代的ですね。
この引数の最後にスペースをあけて起動したいランレベルを数字で書きます。2で起動したければ2と書くわけです。そのまんまですね。
編集後にオプションの画面に戻ったら、「b」を押して起動します。
これだけ。
ただ、僕のようなDebian使ってる人でこの知識が役に立つことはまずないかなー、と思います。
というのもDebianの考えかたではシングルユーザーモードとマルチユーザーモード以外は区別していない(GUIとかですね)ので、Debianパッケージを使うとランレベル2以降はすべて同じ起動スクリプトがインストールされます。
なので自分でしこしこ設定しない人には実質ランレベル1と2しかないわけですね。0と6はどうなんだとか聞かないでくださいね。
で、grubの画面ではその2つが表示されちゃっているので上で書いたようなことをしなくても矢印で選べるわけです。うちの環境ではカーネルが2種類あるので、2かける2で4つの項目から選べるわけですね。
金曜日, 3月 25, 2005
Debian/GNU Linux で Mail Notification を使う
WindowsではGmail Notifierを使ってます。
これはGmailにメールが届くとお知らせしてくれる、という通知ツールです。
大抵のメーラーはそういう機能を持ってるけど、Webメールはそんなわけにはいかないわけです。
なので、Gmailを使っている人には必須かと思われます。
でも、Linuxに対応してないのでちょっと困ってました。
なのでapt-cacheで調べてみると、あっさり見付かりました。
それがMail Notifierでした。
Gmail以外にもファイルシステム上のメールボックスはもちろん、POP3やIMAPにも対応しているみたいです。
普通なんでしょうか? この手のツールは意識してインストールしたことがなかったのでわかりません。とりあえず便利なことだけはよくわかりました。
これはGmailにメールが届くとお知らせしてくれる、という通知ツールです。
大抵のメーラーはそういう機能を持ってるけど、Webメールはそんなわけにはいかないわけです。
なので、Gmailを使っている人には必須かと思われます。
でも、Linuxに対応してないのでちょっと困ってました。
なのでapt-cacheで調べてみると、あっさり見付かりました。
それがMail Notifierでした。
Gmail以外にもファイルシステム上のメールボックスはもちろん、POP3やIMAPにも対応しているみたいです。
普通なんでしょうか? この手のツールは意識してインストールしたことがなかったのでわかりません。とりあえず便利なことだけはよくわかりました。
日曜日, 3月 20, 2005
tinydns ( djbdns ) でクラスレス逆引きの委譲を受ける
ぶっちゃけて言ってしまうと、さくらインターネットなんです。
ここは逆引きの委譲をお願いすると「クラスレス逆引きの委譲」というものをしてくれます。ちなみになんで「」で括ってるのかというと、これは RFC 2317 で規定されてる正式名称だからです。普段気にしないくせに、たまには拘ってみました。そもそも、英語の名前を日本語に翻訳しておいて、正式名称などと言ってもいいのかかなり疑問ですが。
具体的には
----------------------------------------------------------------------
10.141.253.221.in-addr.arpa. CNAME 13.8-15.141.253.221.in-addr.arpa.
8-15.141.253.221.in-addr.arpa. NS a.ns.8-15.141.253.221.in-addr.arpa.
a.ns.8-15.141.253.221.in-addr.arpa. A 221.253.141.11
----------------------------------------------------------------------
こんな感じで委譲されるわけです。って、これはBINDの書式ですが。またもやタイトルと矛盾。いいんでしょうか。
1行目で「10.141.253.221.in-addr.arpa」が「10.8-15.141.253.221.in-addr.arpa」の別名として定義されます。
2行目で「8-15.141.253.221.in-addr.arpa」ドメインのネームサーバが「a.ns.8-15.141.253.221.in-addr.arpa」であることが定義されます。
3行目でネームサーバ「a.ns.8-15.141.253.221.in-addr.arpa」のIPアドレスが「221.253.141.11」、つまりうちのサーバーを指定してるわけですね。
こんな書き方をすれば委譲の部分、つまり3行目がひとつで済むからこうしてるんでしょうね。
そのしわ寄せが委譲された相手にいくので微妙なところですが。
で、委譲される側ではこんな風に”書きます”。なんで強調しているのかというと、これ以外にdataファイルを書く必要に迫られることがなかったからです。用意されてるコマンドで登録した方が安全で簡単です。あ、これはtinydnsの話です。勝手に切替えてました。すいません。
------------------------------------------------------
.8-15.141.253.221.in-addr.arpa:221.253.141.11:a
=rabbit.kumicho.net:221.253.141.10
^10.8-15.141.253.221.in-addr.arpa:rabbit.kumicho.net
------------------------------------------------------
1行目で委譲されたドメインのネームサーバであることを定義してます。
2行目でホスト名とIPアドレスの関連を定義してます。普段はこれで終わりです。
3行目でクラスレス委譲のために作られた逆引き用の名前が「rabbit.kumicho.net」に対応していることを定義してます。
ちなみに上で書いてるのは例なので、実際に逆引きすると全然違う反応がかえってきます。USENのアドレスがかえってくるはず。まあ、あくまで、書き方の例ということで勘弁してください。
ここは逆引きの委譲をお願いすると「クラスレス逆引きの委譲」というものをしてくれます。ちなみになんで「」で括ってるのかというと、これは RFC 2317 で規定されてる正式名称だからです。普段気にしないくせに、たまには拘ってみました。そもそも、英語の名前を日本語に翻訳しておいて、正式名称などと言ってもいいのかかなり疑問ですが。
具体的には
----------------------------------------------------------------------
10.141.253.221.in-addr.arpa. CNAME 13.8-15.141.253.221.in-addr.arpa.
8-15.141.253.221.in-addr.arpa. NS a.ns.8-15.141.253.221.in-addr.arpa.
a.ns.8-15.141.253.221.in-addr.arpa. A 221.253.141.11
----------------------------------------------------------------------
こんな感じで委譲されるわけです。って、これはBINDの書式ですが。またもやタイトルと矛盾。いいんでしょうか。
1行目で「10.141.253.221.in-addr.arpa」が「10.8-15.141.253.221.in-addr.arpa」の別名として定義されます。
2行目で「8-15.141.253.221.in-addr.arpa」ドメインのネームサーバが「a.ns.8-15.141.253.221.in-addr.arpa」であることが定義されます。
3行目でネームサーバ「a.ns.8-15.141.253.221.in-addr.arpa」のIPアドレスが「221.253.141.11」、つまりうちのサーバーを指定してるわけですね。
こんな書き方をすれば委譲の部分、つまり3行目がひとつで済むからこうしてるんでしょうね。
そのしわ寄せが委譲された相手にいくので微妙なところですが。
で、委譲される側ではこんな風に”書きます”。なんで強調しているのかというと、これ以外にdataファイルを書く必要に迫られることがなかったからです。用意されてるコマンドで登録した方が安全で簡単です。あ、これはtinydnsの話です。勝手に切替えてました。すいません。
------------------------------------------------------
.8-15.141.253.221.in-addr.arpa:221.253.141.11:a
=rabbit.kumicho.net:221.253.141.10
^10.8-15.141.253.221.in-addr.arpa:rabbit.kumicho.net
------------------------------------------------------
1行目で委譲されたドメインのネームサーバであることを定義してます。
2行目でホスト名とIPアドレスの関連を定義してます。普段はこれで終わりです。
3行目でクラスレス委譲のために作られた逆引き用の名前が「rabbit.kumicho.net」に対応していることを定義してます。
ちなみに上で書いてるのは例なので、実際に逆引きすると全然違う反応がかえってきます。USENのアドレスがかえってくるはず。まあ、あくまで、書き方の例ということで勘弁してください。
金曜日, 3月 18, 2005
MySQLのプロセス数について
今日、とあるサーバーでMySQLのプロセス数が何十個もあるのを見ました。
「あれ?MySQLはマルチスレッドなはずだが。。。??」
と疑問に思うわけです。
これは、カーネル2.6以降で実装された新しいスレッドライブラリを使用しているかどうかで決まるようです。
新しい実装のNPTL(Native POSIX Thread Library)ではマルチスレッドなプロセスは一つのプロセスとして管理されます。普通ですね。ちなみにこのライブラリでマルチスレッドの性能が飛躍的に向上したとか。
そうでないLinuxThreadsライブラリでは、各スレッドはそれぞれ一つのプロセスとして管理されるそうです。なんとなく手抜きな匂いを感じますね。「とりあえずプロセスの管理機構を使っとこうよ」。
なので、多くのプロセスが起動しているように見えるみたいです。実体はマルチスレッドで動くひとつのプロセスなので多い日も安心です。
要するにMySQLはあんまり関係がなかったわけですね。
タイトルはなんだったんでしょうか。詐欺ですね。
「あれ?MySQLはマルチスレッドなはずだが。。。??」
と疑問に思うわけです。
これは、カーネル2.6以降で実装された新しいスレッドライブラリを使用しているかどうかで決まるようです。
新しい実装のNPTL(Native POSIX Thread Library)ではマルチスレッドなプロセスは一つのプロセスとして管理されます。普通ですね。ちなみにこのライブラリでマルチスレッドの性能が飛躍的に向上したとか。
そうでないLinuxThreadsライブラリでは、各スレッドはそれぞれ一つのプロセスとして管理されるそうです。なんとなく手抜きな匂いを感じますね。「とりあえずプロセスの管理機構を使っとこうよ」。
なので、多くのプロセスが起動しているように見えるみたいです。実体はマルチスレッドで動くひとつのプロセスなので多い日も安心です。
要するにMySQLはあんまり関係がなかったわけですね。
タイトルはなんだったんでしょうか。詐欺ですね。
火曜日, 3月 01, 2005
Flickr を使ってみました
Flickrを使ってみました。
と言っても知らない人もいるだろうから簡単に説明。
一言で言うと、これは写真の共有サービスです。手持ちの写真を登録して、自分だけ、友達だけ、だれでもの中から選んで公開できます。
ただし、登録できるのはひと月に10MB。お金を払うとひと月に1GBまで登録できます。
ひとりにつきどれだけっていうのと違って結構おもしろい制限のかけかたです。小さく感動しました。
使ってみると、10MBとというのがとても小さいことがわかります。
一年待っても今持ってる写真をバックアップしきれません。なんてこったい。
というわけで、僕の考えているような保存用ではないです。おもしろい写真を見せあうとかそんな感じです。きっと。
ちなみにこのページは最近話題になってます。
写真を登録するときに”タグ”というものをつけるんですが、登録した本人が付けるタグなんだから、Googleのイメージ検索なんかよりこのタグで検索した方が狙いどおりのものが見つけやすいんじゃないか、というわけですね。
そこでさっそく”章子怡”で検索してみました。だって大好きなんだもの。
結果は。。うーん、まだいまいち数が足りないですね。しかも、せっかくなので壁紙にしようと思ったらダウンロードできない。。。
ちゃんと保護されてるみたいです。くやしい。
と言っても知らない人もいるだろうから簡単に説明。
一言で言うと、これは写真の共有サービスです。手持ちの写真を登録して、自分だけ、友達だけ、だれでもの中から選んで公開できます。
ただし、登録できるのはひと月に10MB。お金を払うとひと月に1GBまで登録できます。
ひとりにつきどれだけっていうのと違って結構おもしろい制限のかけかたです。小さく感動しました。
使ってみると、10MBとというのがとても小さいことがわかります。
一年待っても今持ってる写真をバックアップしきれません。なんてこったい。
というわけで、僕の考えているような保存用ではないです。おもしろい写真を見せあうとかそんな感じです。きっと。
ちなみにこのページは最近話題になってます。
写真を登録するときに”タグ”というものをつけるんですが、登録した本人が付けるタグなんだから、Googleのイメージ検索なんかよりこのタグで検索した方が狙いどおりのものが見つけやすいんじゃないか、というわけですね。
そこでさっそく”章子怡”で検索してみました。だって大好きなんだもの。
結果は。。うーん、まだいまいち数が足りないですね。しかも、せっかくなので壁紙にしようと思ったらダウンロードできない。。。
ちゃんと保護されてるみたいです。くやしい。
金曜日, 2月 25, 2005
SourceForge使ってます
夏くらいにうちのハードディスクが壊れました。
それ以来、「自分の持ってるデータは永遠じゃないんだ」と思って。バックアップをまめに取るようになりました。。。ではないです。
そもそもバックアップとろうにもCDRとか持ってないんですよね。で、Webを利用しようかなと。
メールのデータはGmailにあるので気にしなくてもいいはず。
次はサーバーの設定ファイルやWebページなんかをどうしようかと思って使い始めたのがSourceForge。元々はほんとにプロジェクトを起こそうなんて考えていたんですが、それはさっさとあきらめてしまいました。だって面倒なんだもん。
ただ、CVSを使えるのはすごくいい。これで上に書いたようなものを保存しとけばいいやん!って思ってからずっと使ってます。
これでいつでもすぐに復旧できるはず。自分で持ってるデータなんて全てネットワークのキャッシュでいいのだ。ただ、SorceForgeに登録したファイルは全部外から丸見えなんですよね。さすがオープンソースの世界だ。暇な人は探したら見つけられるかも。でも、Webページなんかはもともと公開してるんだし、設定ファイルも見られたくらいで穴が見つかるようなものにはなってないはずなので大丈夫(と思ってる)。
まあ、ほんとは「見せる必要のあるもの以外は見せない」で運用しないといけないんでしょうね。。。
そういやiptables書いてないな。。。ローカルで作業できる時間が最近とれないんですよね(涙
それ以来、「自分の持ってるデータは永遠じゃないんだ」と思って。バックアップをまめに取るようになりました。。。ではないです。
そもそもバックアップとろうにもCDRとか持ってないんですよね。で、Webを利用しようかなと。
メールのデータはGmailにあるので気にしなくてもいいはず。
次はサーバーの設定ファイルやWebページなんかをどうしようかと思って使い始めたのがSourceForge。元々はほんとにプロジェクトを起こそうなんて考えていたんですが、それはさっさとあきらめてしまいました。だって面倒なんだもん。
ただ、CVSを使えるのはすごくいい。これで上に書いたようなものを保存しとけばいいやん!って思ってからずっと使ってます。
これでいつでもすぐに復旧できるはず。自分で持ってるデータなんて全てネットワークのキャッシュでいいのだ。ただ、SorceForgeに登録したファイルは全部外から丸見えなんですよね。さすがオープンソースの世界だ。暇な人は探したら見つけられるかも。でも、Webページなんかはもともと公開してるんだし、設定ファイルも見られたくらいで穴が見つかるようなものにはなってないはずなので大丈夫(と思ってる)。
まあ、ほんとは「見せる必要のあるもの以外は見せない」で運用しないといけないんでしょうね。。。
そういやiptables書いてないな。。。ローカルで作業できる時間が最近とれないんですよね(涙
土曜日, 2月 19, 2005
Debian GNU/Linux で Cacti & SNMP を使う
以前、Cactiをインストールしたって話をしました。
その時点ではローカルの状態を見られるだけだったので、今度はリモートのサーバーも監視できるようにSNMPを設定しました。
とか言っても実は僕のサーバーは一台だけだけど。気分の問題ですよ。
ローカルとリモートの両方の方法で一台監視。すてき。
まずaptでsnmpdをインストール。そのままの状態では情報をとれないので、
com2sec paranoid default public
#com2sec readonly default public
この部分を
#com2sec paranoid default public
com2sec readonly xxx.xxx.xxx.xxx/29 public
てな感じにします。いや、うちはIPが8個あるので。
あとはCactiの設定でSNMPを使うようにすればよいです。
snmpの設定で必要なのはさっきの行の"public"ってコミュニティーネームだけです。これがパスワード。
あとはCactiを開いて(Webでね)、適当にぽちぽち選んだら見られるようになります。簡単でした。
その時点ではローカルの状態を見られるだけだったので、今度はリモートのサーバーも監視できるようにSNMPを設定しました。
とか言っても実は僕のサーバーは一台だけだけど。気分の問題ですよ。
ローカルとリモートの両方の方法で一台監視。すてき。
まずaptでsnmpdをインストール。そのままの状態では情報をとれないので、
com2sec paranoid default public
#com2sec readonly default public
この部分を
#com2sec paranoid default public
com2sec readonly xxx.xxx.xxx.xxx/29 public
てな感じにします。いや、うちはIPが8個あるので。
あとはCactiの設定でSNMPを使うようにすればよいです。
snmpの設定で必要なのはさっきの行の"public"ってコミュニティーネームだけです。これがパスワード。
あとはCactiを開いて(Webでね)、適当にぽちぽち選んだら見られるようになります。簡単でした。
日曜日, 2月 13, 2005
Debian GNU/Linux で Cacti を使う
仕事でHotSaNICというモニタリングツールを知って、このサーバーでも使ってみようとは前から考えていました。
ただ、Debianのaptにはまだ登録されていないので似たようなrrdtoolを使ったアプリケーションを探してcactiを見付けたわけです。で、これが全然動かない。
結論から言うと、/etc/php/apache2/php.iniのextension=mysql.soの行がコメントアウトされてるのを戻す、ということで動きます。
たったこれだけなんだけど、えらく時間がかかってしまった。。。
phpの専門家(?)がたまたま近くにいたので、「phpが動いてるのは間違いない」ことと、「途中でエラーをだしてプログラムを止める方法」を教えてもらってやっとまじめに調べる気になりました。
一度起動してしまえばWebインターフェイスで操作できます。なので楽チン。システムの状況がグラフでパパパッとわかるので、ぼーっと見てるだけでもなにやら楽しいです。
ただ、Debianのaptにはまだ登録されていないので似たようなrrdtoolを使ったアプリケーションを探してcactiを見付けたわけです。で、これが全然動かない。
結論から言うと、/etc/php/apache2/php.iniのextension=mysql.soの行がコメントアウトされてるのを戻す、ということで動きます。
たったこれだけなんだけど、えらく時間がかかってしまった。。。
phpの専門家(?)がたまたま近くにいたので、「phpが動いてるのは間違いない」ことと、「途中でエラーをだしてプログラムを止める方法」を教えてもらってやっとまじめに調べる気になりました。
一度起動してしまえばWebインターフェイスで操作できます。なので楽チン。システムの状況がグラフでパパパッとわかるので、ぼーっと見てるだけでもなにやら楽しいです。
木曜日, 2月 03, 2005
CAcert - 無料の認証局
CAcertっていう無料の認証局があるらしい。
早速登録してみました。
これでこのblogもセキュアな環境でご覧になれます。(あまり意味はないけど)
実は他にもいくつかサイトを持っていて、そのあたりでは本当にSSLを使ってるのでなんかちょうど良かった。と言っても、知らない人が見たら信頼性は変わらないんですけどね。。。警告でるし。
firefoxあたりのルート証明書に追加しようって話も出てるらしいので、ぜひそうなってもらいたいなあ。SSLごときでお金取りすぎなので流行るといいと思う。
早速登録してみました。
これでこのblogもセキュアな環境でご覧になれます。(あまり意味はないけど)
実は他にもいくつかサイトを持っていて、そのあたりでは本当にSSLを使ってるのでなんかちょうど良かった。と言っても、知らない人が見たら信頼性は変わらないんですけどね。。。警告でるし。
firefoxあたりのルート証明書に追加しようって話も出てるらしいので、ぜひそうなってもらいたいなあ。SSLごときでお金取りすぎなので流行るといいと思う。
水曜日, 1月 26, 2005
水曜日, 1月 05, 2005
analog を少し詳細にする
analogをうちのページのログ解析に使っています。
全解析結果を表示するには analog.cfg に ALL ON とか書けばいいのですが、Apache のデフォルトのログでは情報がたりないみたい。
/etc/apache2/apache2.conf の
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
を
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D \"%v\"" combined
にすれば良いみたいです。すべてのバーチャルホストで変更するときは上のように combined の定義を変えてしまうのが楽かと。
このままでは analog がログを読めなくなるので、analog.cfg に
APACHELOGFORMAT (%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D \"%v\")
を追加します。これでページを表示するのにかかった時間やバーチャルホスト毎の統計がみれます。
個人的には、時間がかかったページのランキングなんかが欲しいですねえ。
全解析結果を表示するには analog.cfg に ALL ON とか書けばいいのですが、Apache のデフォルトのログでは情報がたりないみたい。
/etc/apache2/apache2.conf の
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
を
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D \"%v\"" combined
にすれば良いみたいです。すべてのバーチャルホストで変更するときは上のように combined の定義を変えてしまうのが楽かと。
このままでは analog がログを読めなくなるので、analog.cfg に
APACHELOGFORMAT (%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D \"%v\")
を追加します。これでページを表示するのにかかった時間やバーチャルホスト毎の統計がみれます。
個人的には、時間がかかったページのランキングなんかが欲しいですねえ。
登録:
投稿 (Atom)