2007年2月アーカイブ

 FreeBSDのクライアントインストール(こっちはとりあえずセルフコンパイルにこだわらずports使いまくり)も一段落してWindowMaker+FireFoxはできるようになったが、あとエディタとメーラーそして日本語変換の設定が残っている。

 今までB5ノートを避けていたのは右側のキーが小さくて打ちにくそうという問題もあったがUNIX系のOSを入れるとますます日本語キーボードが無駄に感じる。(使えないキーが増える)

 デスクトップは既に英語キーボードだしThinkPadを選んだのも英語キーボードに換装できるから。ローマ字入力の人は基本的に日本語キーボードである必要も無い気がする。もう一つの理由はA21pみたいに3.5超kgのノートは持ち歩きたくない。持ち歩くなら電源込みで2kg以下ないと辛いです。

 流石に5年落ちノートのためか探すのは難しいそうですね。何とか型番(02K6049)だけはわかりましたが…。WinXPでもう限界~と言ってたA21pとあまり変わらないスペックですがFreeBSDだとHDDアクセス以外は殆ど負荷かかってないです。そもそもA21pが重くなったのはウィルスバスター2007にしてからなのでOSというよりはウィルスチェッカーが原因になってるのかも。スペック的には永久に使えそうな感じです。FLASHプラグイン次第かな?つか正式に対応して欲しい。

 なるほどー。Windows Vistaでゲームするにはまだまだ早いってことですね。ゲームタイトルのVista対応もそうですが、それ以前に対応ハードウェアも少ないしドライバの完成度もまだまだってことです。

特集:Vista買うのはまだ早い!

しかしGDIが廃止でDirect3D 10以上となると既存アプリやゲームは全てエミュレーションで動くわけか…。ということはVS2003って時代遅れになってしまうのか?(DirectXを使う分には大丈夫そうですが)

 実は昨日、ThinkPad X24をFreeBSD用に購入。先週ThinkPad一台潰してFreeBSD入れたばかりなのにと思われそうですが、今度はサーバ用途ではなくクライアントとして使うということで軽いものが欲しかった。流石に1.5kg程度になると軽くてカバンの中に入れても平気だ。

 それに最近のUNIX系ソフトも充実しているので、ネットワークプログラマーという職業柄、別にWindowsである必要もないんじゃない?と思うようになり、そしてリナザウが限界来てたりとUNIXノートの理由ができてしまいました。

ただし今までと違うのはFDDもCD-ROMも無いという条件でのインストールです。
ドライブ無しのインストール方法はいろいろありますが、今回のX24にさらに付け加えるとシリアルポートなし、パラレルポートもなしです。一応ネットワークブートは可能ですがサーバ側になるFreeBSDの環境構築とルータから切り離す必要とさらにイメージCDと負担が大きかったので不可。

その条件でいろいろググってたら面白い情報を発見。『USBのFDDでブートできるPCであればUSBメモリからブート可能』らしい。おまけに不要になった1GBのUSBメモリの処分にも悩んでたし丁度良い。

おまけに先週立ち上げたサーバはusbdを生かしたままなのでこのサーバでUSB起動フラッシュメモリを作ってみた。

準備したもの:
・USBメモリ(1GB)
・FreeBSD6.2のサーバ(ThinkPad A21p)
・これからインストールするThinkPad X24

参考にしたサイト:たーくんずろぐ - USBメモリからのOS起動

参考サイトとの相違点としてはFreeBSD6.2は起動ディスクがboot含めて4枚なので次のように4枚目のディスクの作業が増える。

# mdconfig -a -t vnode -f /tmp/kern3.flp

# mount /dev/md3a /mnt
# cd /mnt
# cp kernel.gz.ac /usb/
# cd /
# umount /mnt
# mdconfig -d -u 3

これからはFDD/CD無しのPCでもある程度安心できそうだ。
因みに出来たUSBメモリの中身はこちら
# cd /usb
# ls
.snap boot kernel.gz.ab kernel.gz.boot mfsroot.gz
acpi.ko.gz kernel.gz.aa kernel.gz.ac kernel.gz.split

20070225-1.jpg

 まだW41CA使ってて次の携帯はあと半年くらいは買う予定が無いのにせっかちです(^^;
さっさとUSBメモリを追放したかっただけですね。携帯買い換えるまではmicroSDは小型リーダに挿したままです。

W41CAには搭載されているのに全く使い方が分からなかったSDオーディオプレイヤーはMOOSというソフトを使ってCDやMP3からSDカードにインストール可能ということが分かりました。LISMOイラナイ…。

MOOCS

 久々DDoS攻撃という言葉を聞いた。ネタ動画を見ながら一緒に見てる人たちとチャットで下らないレスをするのが面白いんだけどねぇ…。早くサービス復帰しないかなー。

http://headlines.yahoo.co.jp/hl?a=20070223-00000054-zdn_n-sci

 今日見に行ってみましたら、久々に更新されていました。内容の発表はまだのようですが全く新しいプロジェクトで活動再開されるようです。

ロブロブラボ / ROBROB LAB
http://rob2.jp/
ROBROBの放置プレイ掲示板

 ウェブサイトで管理者宛てにメールを出す機能として大きく分けるとmailtoリンクとフォームメールがありそれぞれ一長一短があります。

普通のウェブサイトでは
・maitoリンク
実装が簡単。
CGI等使えないサーバーでも利用可能。
ブラウザとメーラーが連動していないと機能しない。
宛先メールアドレスをサイトに乗せている為スパムウェアの餌食になる。
単独では固有情報の取得が出来ない。

・フォームメール
実装にはCGI等の知識が必要。
匿名投稿ができる。(メリット/デメリット両方ですね)

特に携帯サイトでは返信する為の発信者のメールアドレスと問題調査の為の携帯電話の固有情報が必要になるので、CGI等とmaitoを組み合わせたメール送信リンクを作成します。

そのためメール本文に必要な項目のテンプレートを入れるわけですが、改行コードの処理でCGIから直接\nや\r\nで出力するとDoCoMo/SoftBankで機能しないことを発見。これを回避するには\n等の代わりに%0D%0Aと入れたら解決しました。

参考:mailtoのbodyに改行を入れたい

 前回、自動認識に失敗したCardBusタイプのLANカードですが、これを認識させることができましたので設定メモ。

まず、自動認識を行おうとしているときに何が起きていたか次のコマンドで確認

# dmesg | egrep 'cbb|pccard|cardbus'
cbb alloc res fail
cardbus0: Can't get memory for IO ports
cbb alloc res fail
cbb alloc res fail
cbb alloc res fail
cbb alloc res fail
cardbus0: at device 0.0 (no driver attached)

どうも割り込みに失敗している模様。
次にデフォルトの割り当てアドレスを確認。
# sysctl -a | grep hw.cbb
hw.cbb.start_memory: 2281701376
hw.cbb.start_16_io: 256
hw.cbb.start_32_io: 4096
hw.cbb.debug: 0

ググッた内容だと
hw.cbb.start_memory="0x40000000"
hw.cbb.start_32_io="0x2000"
とすることで動作した報告があるので(PCによって変わるそうです)/boot/loader.confに下記を加えます。

# ee /boot/loader.conf
hw.cbb.start_memory="0x40000000"
hw.cbb.start_32_io="0x2000"

ここで一旦rebootして自動認識に成功したか確認。

ll /dev/net/
total 0
crw------- 1 root wheel 0, 32 Feb 20 07:59 fxp0
crw------- 1 root wheel 0, 76 Feb 20 07:59 lo0
crw------- 1 root wheel 0, 40 Feb 20 07:59 plip0
crw------- 1 root wheel 0, 81 Feb 20 07:59 rl0

rl0として認識されました。

この後は認識されたLANの設定ですが、LAN側として個別に設定したいのでdevdを使います。
devd(8)を有効にするためrc.confにdevd_enable="YES"を追記。

# ee /etc/rc.conf
devd_enable="YES"

/etc/devdディレクトリが存在しなかった為作成してrl0用の設定ファイルを作成。
# mkdir /etc/devd
# ee /etc/devd/rl0.conf

attach 100 {
device-name "rl0";
action "ifconfig $device-name inet 192.168.0.10 netmask 255.255.255.0";
action "route add default 192.168.0.1";
};

detach 100 {
device-name "rl0";
};

以上の作業を完了して再度rebootして2台とも正しく設定完了しました。
ちゃんと100Mbpsで動作していることもifconfigで確認できました。

rl0: flags=8843 mtu 1500
options=8
inet 192.168.0.10 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::290:ccff:fec5:d73%rl0 prefixlen 64 scopeid 0x4
ether 00:90:xx:xx:xx:xx <- MACアドレスはメーカコード以外伏字
media: Ethernet autoselect (100baseTX )
status: active

[動作実績]
PC:IBM A22m,A21p
LAN:Planex FNW-4000-TX
OS:FreeBSD6.0,FreeBSD6.2
設定内容:上記
関連:LAN構築用にFNW-4000-TX買いました。

20070219-1.jpg

今日の未明になんとかOSのインストールまで終わったので先週作ったラックに収納。このラックならまた台数が増えたときは棚を追加すれば良いし、ある程度大きくなったらキャスタ付けて机の下にでも設置できます。縦置きルータ等、設置に困る機器も残っているので今度サーバーが増えるときは一緒に収納できるようにしてみようかな。

1. インストール前に

1-1.起動ディスク作成ツールとFDイメージの取得

エクスプローラーFTPサイトにアクセスして
起動ディスクを作成するためのツールをダウンロード
ftp://ftp.freebsd.org/pub/FreeBSD/tools/

00_index.txt
README.TXT
boot.bin
bootinst.exe
bsdboot/
ckdist.exe
ckdist.man
dist/
extipl.exe
fdimage.exe
fips.doc
fips.exe
fips.faq
gunzip.exe
gzip.exe
ide_conf.exe
md5.exe
osbs135.exe
osbsbeta.exe
pfdisk.exe
presizer.doc
presizer.exe
rawrite.exe
restorrb.exe
srcs/

エクスプローラーFTPサイトにアクセスしてFDイメージを取得
ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/6.2-RELEASE/floppies/


CHECKSUM.MD5
CHECKSUM.SHA256
README.TXT
boot.flp
fixit.flp
kern1.flp
kern2.flp
kern3.flp


1-2. 起動ディスクの作成

fdimage.exeを利用してフロッピーイメージを作成。
※Cドライブ直下にtoolsとfloppiesを入れカレントをC:\toolsにした場合
C:\tools>fdimage ../floppies/boot.flp A:

続けて、
C:\tools>fdimage ../floppies/fixit.flp A:
C:\tools>fdimage ../floppies/kern1.flp A:
C:\tools>fdimage ../floppies/kern2.flp A:
C:\tools>fdimage ../floppies/kern3.flp A:


2. インストール

2-1.インストーラーの起動

FDからブートできるようにBIOSの設定を調整してBootディスクを入れて起動します。

次にKernel floppy 1を入れるように支持されるのでkern1ディスクを入れます
Kernel floppy 1
Kernel floppy 2
Kernel floppy 3
boot floppy

この後インストーラーが立ち上がります。

2-2. インストールパッケージの選択

Country Selection -> japan
System Console Keymap -> Japanese 106 keymap
sysinstall Main Menu -> Custom -> Distributions -> Minimal

2-3. パーティションの設定

実は手動で設定すると何故かインストール終了後マウントポイントがぶっ飛んでいたので、オートにしました。


/ 495MB
swap 995MB
/var 1470MB
/tmp 495MB
/usr 33515MB

2-4. Mediaの設定

Media -> FTP を選択する
LANカードの設定はcase by case


2-5. ユーザ管理

User Managementでwheelグループのユーザを作成。できればシェルはtcsh

2-6. その他
タイムゾーンの設定 JST
マウスの設定 無効

これでcommitしインストール開始すると必要なパッケージがダウンロードされてインストール完了


3. インストール後の設定

3-1. SSH環境の設定

まずはSSHでログインできるように
ee /etc/rc.confに

sshd_enable="YES"

を追加

/etc/ssh/ssh_config
/etc/ssh/sshd_config

上記2つで

PasswordAuthentication yes

と設定されいることを確認する。ちなみに6.2の/etc/ssh/ssh_configはデフォルトでYesになっていました。
そのあとsshdを起動するためrebootでSSHログイン可能。

SSHユーザーの制限は/etc/ssh/sshd_configにAllowUsersの項目を追加し

AllowUsers user1 user2

のように記述する。


3-2. リソースの節約

6.0の時と同様使用しないコンソールは動作させない。

ee /etc/ttys

gettyを0と1を残して全てコメントアウト、さらにシリアル接続は使わないので全てコメントアウトして再起動。


3-3. セキュリティ強化でちょっと工夫

ログインメッセージの編集⇒/etc/motd


3-3. カーネル再構築とファイヤーウォールの設定

以前と同じ方法なのでファイヤーウォールの設定を参照

とりあえずここまで設定してダメだったのがLAN用に購入したカードがCardBusの自動認識で失敗していることかな。これは6.0側もダメだったのでこちらの新しいサーバで確かめながらやって行こう…。

 今回、あまりにもデータが多すぎ(10年分)の為、手っ取り早い方法を使いました。

メールデータ・メール受信ルール・連絡先の保存場所
C:\Documents and Settings\[ユーザ名]\Local Settings\Application Data\Microsoft\Outlook

この中のOutlook.pstが個人フォルダ、archive.pstが保存フォルダになります。

その他には履歴等が存在する
C:\Documents and Settings\[ユーザ名]\Application Data\Microsoft\Outlook

と署名が保存されている
C:\Documents and Settings\[ユーザ名]\Application Data\Microsoft\Signatures

があればこれもコピーします。

ただこれだけではメールアカウントが含まれていません。オマケにOutlook2003はメールアカウントのエクスポート機能がない。

よくある移行方法では一旦OEにアカウント情報を移行してそれをまたOutlookに書き戻す方法がありますが、私のケースではOutlook2003で新規に作成したアカウント情報はOEで取り込めないことが発覚。

折角受信ルールまで移行できたのにアカウント情報作り直しじゃ面倒この上ないので他の方法を探したら、Microsoft Officeツールの「個人用設定の保存ウィザード」を使って移行できました。但しパスワードまでは移行されないようで、これだけは受信時に入力して終了。

 今日は凄い雨だなー。今TVで中継観てますが凄い人数だ。。。
バックアップは何とか終了し今デスクトップからカキコ。

 これからノートPCのデータを全てデスクトップへコピーするので凄い時間かかりそう。
メールなんて約10年分だしな。。。

 全部4Gamerからの情報ですが、注目のタイトルやサービスについてのニュースが掲載されていました。

「女神転生IMAGINE」,OBT開始に合わせ公式サイトをリニューアル
http://www.4gamer.net/news/history/2007.02/20070214163922detail.html

待ち遠しかったOpenβが開始されたみたいですね。まだやってないので週末は完成度と世界観を楽しみに登録してみます。


オンラインRPG「チョコットランド」の正式サービスがスタート
http://www.4gamer.net/news/history/2007.02/20070215161954detail.html

こちらはオープンテストの時に参加しましたが、正式サービスになったようです。


「ガンホーゲームズ」,パチンコ/パチスロのオープンβサービス開始
http://www.4gamer.net/news/history/2007.02/20070215152001detail.html

 ネットパチンコについては管理会社がRMTに対してぬるいので3点方式だとかいろいろ言われていますが、換金とか賭博だとかは置いといて、パチンコ・パチスロの遊戯と景品(中でもWebMoneyは金券に相当)を提供するのは年齢制限を設けないとマズいんじゃない?

 確かにオンラインゲームは実際の遊技場ではないので立ち入りがどうだとかの制限はないし、富くじでもギャンブルのネット投票でもないのですが、法律が追いついてないことをいいことに公俗良序無視のやり放題だな…。

 IE7になっても右クリック→ソースを表示のエディタはメモ帳のままで、動的ページのデバッグ時に文字コードがEUC指定だったりするとウンザリする。なんとか解決方法はないかとググっていたらレジストリ改変で別のエディタを使用する方法がありましたので紹介。

IEの「表示」→「ソース」でメモ帳以外を使いたい
http://www.doumo.jp/postgretips/tips.jsp?tips=86

「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer」に「View Source Editor」キーを作成。更にその下に「Editor Name」キーを作成。その既定値を「C:\Windows\notepad.exe」のように自分の愛用しているエディタの実行ファイルパスを記述します。

すばらしい!これでエディタをTeraPadに設定して文字化け問題も攻略です。

 まだ2台目を構築完了していないのに気が早いのですが、2台をLANで接続する理由はもちろん負荷分散の為です。予定としては、

1.サーバー構築
 ⇒ネットワークカードの追加
 ⇒ファイアーウォールの設定(LAN通信分)

2.Webの負荷分散
 ⇒Apache2.2によるロードバランシング
 ⇒バックプロキシーによる静的ページとCGIの分離

3.MySQLの負荷分散
 ⇒レプリケーション構成の作成

4.PostgreSQLの負荷分散
 ⇒どんな方法があるか検討中

5.ゲームサーバの複数台構成
 ⇒プロセス間通信からサーバ間通信の実現

まぁこんなところです。勉強することは一杯ありますねぇ。

20070213-1.jpg

このカードを買おうと決定した情報源はココ

http://www.turbolinux.co.jp/products/compatibility/hardware/2.html
FNW-4000-TX Chip: Realtek 8139 (module:8139too)

Linux対応だけどメーカー非サポートとか書くぐらいならせめてスペック表にChipぐらい書けよと思います。これはヨドバシで買いましたがどのメーカーもChip名書いてない。

一応有線LANカードはZaurus用にCFタイプを一枚持っているのだがこれは10Mbpsの為、新たに2枚買いました。これで週末までにノートPCからデータバックアップとってFreeBSD6.2の構成にしようと思います。
CPUやメモリーは殆ど同じですがHDDが40GBあるのでファイル置き場としてもいいですね。

3人を救った救命ボート

| | コメント(0) このエントリーを含むはてなブックマーク

 幸吉丸の事故から3日経ち全員無事で救助され大変うれしいニュースですが、3人を救った救命ボートがクローズアップされています。救命ボートそのものの型番は知らないのですが、非常食は以前見たことがあったのでこれで間違いない!

救難食糧T-V型

試食レポートではマズそうですが、これが普通に食えたら3日は持たないだろうと思った。見るからに食欲減衰しそうだけどじっと耐えるためには必要な要素なんだろうな…。

しかし海水から簡単に真水を取り出すツールってないのかなー。川水をろ過するものはあった気がするけど、海を漂っていて水に困るのはイヤだなぁ。

 そんな大げさではないのですが、A4サイズのノートPCをサーバにしているので普通のラックでは大きすぎるし、ノートPC用ラックでも目的が違う為、棚の数が足りなくてスペースに無駄があるとか。スチールラックや台所用品を見て回って使えそうなのを探したがやっぱりジャストなものがない。

 ということでラックを自作することにしました。近くのSEIYUでA4よりちょっと大きめのボードと10cm位のポールを買ってきてそれを組み立てて完成。木製なので夏場の放熱がちょっと心配ですがこれならノートPCやルータ類を積み立てることができるし便利。これで一応スペースは確保しましたっと。

ノートPCが激重い…

| | コメント(0) このエントリーを含むはてなブックマーク

 デフラグも全く効果なし。これはやっぱりWindowsインストールしてそれでもダメなら買い替えという意味なのかな…。最近のノートPCは低価格化が進んでいる代わりにディスプレイのスペックが落ちて欲しい機種がない。Vistaが出たので流石にXGAなんて解像度は終わるだろうと思ったら全然変化が見られない。このままだと携帯電話がノートPCの解像度に追いつくのではないかと思うくらいノートPCのディスプレイは変わってない。(各メーカーさんVista機は最低でもSXGA+を採用してくれないでしょうか…)

 とりあえず今のA21pはできれば中身を高速にしたいが、それは出来ないのでサーバにしようかなーと考え中。別にノートPC持ってても家に置きっぱなしだし、台数が減ってゲームしながら調べごととかはできなくなるけどそれくらいしか2台同時に使った試しがないのでまぁイイかと思う。(デスクトップがゲームぐらいしか使われてない方に問題があるのかもしれない)

 来週、LANカード2枚買ってWAN/LANの2ポート持つサーバー構成にしてみます。

最近注目しているゲーム

| | コメント(0) このエントリーを含むはてなブックマーク

 さくらインターネットのオンラインゲーム運営は流石IDSだからなのか安定稼動に評判が良いようです。
今年の4月に映画でも有名なロード・オブ・ザ・リングのオンラインゲームを配信予定。凄く楽しみですね♪

「The Lord of the Rings Online」,4月24日にサービス開始

 セカウンドライフはユーザが好きなものを仮想空間上で制作できるMMOって聞いた事があり、まだ試したことが無いので詳細なコメントができないのですが…凄い流行っているんですね。共有の仮想空間に現実の政府機関が進出というのも前代未聞です。

 これを機にセカンドライフに入ってみようかな。仮想空間でさえ日本語圏からは抜け出せそうにないけど…

ITmedia News
スウェーデン政府、Second Lifeに大使館を開設へ

 最近WinCVSについて有名なごった煮版を探していたら以前公開されていたURLにアクセスできなくなっていた。更新停止から長い期間が経った事と今はEclipseから利用するのが多いようなのでWinCVSは流行ってないのかな。仕事上Eclipse使うハメになっているのでどうせならCVSクライアントして使おう。

 また接続方式はpserverではなくssh。CVSだけのためにinetdを有効にするのが勿体無いというのもありますが、ファイル転送をscpに限定している為pserverで構築する意味が無いのでsshで接続することにしました。

◆CVSの初期化(Server上)
自分用リポジトリ作成(例:user1ユーザ)
> mkdir ~/cvs
> cvs -d /home/user1/cvs/ init

/home/user1/cvs/にCVSROOTディレクトリが生成され、その下にいくつかの設定ファイルが生成されます。

> ls
Emptydir config editinfo,v modules,v taginfo
checkoutlist config,v history notify taginfo,v
checkoutlist,v cvswrappers loginfo notify,v val-tags
commitinfo cvswrappers,v loginfo,v rcsinfo verifymsg
commitinfo,v editinfo modules rcsinfo,v verifymsg,v


ソースのインポート(Server上)
> pwd
/home/user1/project-mmo
> ls
client server
> cvs -d /home/user1/cvs/ import ProjectMMO PJMMO PJMMO_1_0

コメントを入力

Project MMO Development
CVS: ----------------------------------------------------------------------
CVS: Enter Log. Lines beginning with `CVS:' are removed automatically
CVS:
CVS: ----------------------------------------------------------------------

/tmp/cvszL0n4K: 5 lines, 253 characters
[中略]
No conflicts created by this import


◆Eclipse(CVSクライアント)から利用

Eclipse [ウィンドウ]-[パースペクティブを開く]-[その他]で
CVSリポジトリー・エクスプローラーを選択して[OK]

CVSリポジトリーの追加ボタンをクリック
接続タイプにextsshを指定

SSH2メッセージに[はい]

これだけで接続完了。

特にMMO制作ではC++言語とバイナリ素材がメインになるのでEclipseはCVSクライアントとして利用します。

サーバー上に出来上がったファイルを見るとどれも差分ファイルの塊だったので公開用はWinSCPでローカルから送信。
別にサーバー上でコマンド使って生成してもいいのですが公開ディレクトリはCVSと絡みたくないのでローカルからコピーします。

他のプロジェクトで共同開発を行う事も多いのでEclipse+CVSを薦めてみよう。

参考書籍:CVS/WinCVSハンドブック
CVSで買った2冊目の書籍ですが、これは非常に分かりやすいです。ググって中途半端な情報を組み合わせて構築するよりずっと楽でした。(というかsshだと構築不要なんですね)

TCP/IPの本

| | コメント(0) | トラックバック(0) このエントリーを含むはてなブックマーク

 昨日帰りに本屋に行って買って来ました。
目的は今の開発現場はCVS使ってるのでそれをちゃんと覚えたいという目的で買いに行ったのですが、ついついネットワークプログラミング関連に行っちゃいます。私はどちらかというとウェブプログラマーではなくネットワークプログラマーで在りたいと思ってるからなのですが。

 買ったのはこの本『TCP/IPプログラミング徹底解説』。これがちょっと立ち読みしたら現場で役立ちそうなことが沢山書いてます。普通の本であればプログラミングの作法とか実現方法が多いのですが、これは作成したプログラムがネットワーク障害を起こしたときに何が原因なのかノウハウが詰まっている気がします。これを読まないとついついネットワーク機器やインフラのせいにしそうです。

最近Zaurusが不調

| | コメント(0) このエントリーを含むはてなブックマーク

 今までギリギリ一杯ソフトを入れていたせいなのか、PCと同じようにメールアカウント登録しまくりが原因なのかもうメモリ管理が一杯一杯でZaurus自身が自己修復できなくなってしまった:;

 しょうがないのでフルリセットしましたが、ここ1年間メール受信以外に使ってないことに気づきカスタマイズする気が起きない。ここでドーンと新機種出てくれば買い替えも考えるのだが…。今年はもうKWINS更新する気が無いのでそろそろ引退かな。A21pもいい加減(重量も動作も)重いし今度は超軽量なノートPCにしようかなー。新品Let'sとか贅沢はできないので、Vistaが落ち着いたころの一世代型落ちぐらいを狙おう。

 最近ずっとサーバーの設定を見直してなかったので、少し見てみたらapache2.2がデフォルトで無駄な情報を吐き出さないように設定されているので他の項目は一切触れてなかった。PHPなんてエラー出力を画面に吐き出さないようにしてるだけ。これはマズいので特にPHP設定のセキュリティレベルを上げようと思う。

IPA ISEC セキュア・プログラミング講座
http://www.ipa.go.jp/security/awareness/vendor/programming/

PHP と Web アプリケーションのセキュリティについてのメモ
http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html

セキュアなWebサーバ(Apache+mod_ssl)の設定方法
http://ash.jp/sec/env/mod_ssl.htm

@IT:Apacheパフォーマンス・チューニングのポイント(2-2)
http://www.atmarkit.co.jp/flinux/rensai/apache15/apache15b.html

 前回、vmstatの1回目の値が正確な値ではないと書いていましたがLinuxでも同じなので調べてみたら前回実行からの平均値だろうです。単なる無知でしたorz。さらに1秒間隔では瞬間的なバッチ処理でアラート出してしまうので最低5秒間の平均をとるように変えました。その他ログ書き出しや例外処理を追加

 実装に向けてLinux対応をしてみましたが移植の際に注意するのはこのスクリプトで使用しているコマンドのパスやオプションそしてvmstatの出力フォーマットをチェックすることですね。

#!/bin/sh

TO=webmaster@exsample.com
CC=user1@exsample.com
DATE=`date '+%Y-%m-%d' `
TIME=`date '+%H%M%S' `
DATETIME=`date '+%Y-%m-%d %T' `
HOST=`hostname -i`
BORDER=70
LIMIT=95
IDLE=`/usr/bin/vmstat 5 2 | /usr/bin/tail -1 | /bin/awk '{print$15}'`
LOAD=`expr 100 - $IDLE`
LOGDIR=~/logs

if [ $# -eq 1 ]
then
MODE=$1
else
MODE=run
fi

if [ ! -e $LOGDIR ]
then
`mkdir $LOGDIR`
fi

if [ ! -d $LOGDIR ]
then
if [ $MODE = test ]
then
echo "ERROR: $LOGDIR IS NOT DIRECTORY."
fi
echo "$HOST ERROR: $LOGDIR IS NOT DIRECTORY." | /bin/mail -s "CPU CHECK ERROR" -c $CC $TO
exit 0
elif [ ! -r $LOGDIR -o ! -w $LOGDIR -o ! -x $LOGDIR ]
then
if [ $MODE = test ]
then
echo "FORBIDDEN: Don't have permission to $LOGDIR on this server."
fi
echo "$HOST FORBIDDEN: Don't have permission to $LOGDIR on this server." | /bin/mail -s "CPU CHECK FORBIDDEN" -c $CC $TO
exit 0
fi

echo "$DATETIME CPU Load $LOAD%" >> $LOGDIR/cpustat_$DATE.log

if [ $BORDER -lt $LOAD -o $MODE = test ]
then
`/usr/bin/top -b -n 1 > $LOGDIR/top_$DATE-$TIME.log`
fi

if [ $LIMIT -lt $LOAD -o $MODE = test ]
then
echo "$HOST CPU Load $LOAD%" | /bin/mail -s "CPU CHECK Alert" -c $CC $TO
fi

exit 0

 ThinkPadもVistaモデルが出てきました。予想通りですがWindows Vista Businessです。とりあえずBasicじゃなかったので安心ですね。今後格安モデル探す人はVista Basicじゃない事を確認したほうがよさそうですね。それでもOSに関しては発売したばかりなのでソフトやドライバの対応も含めて最低でも3ヶ月は様子見たほうがよさそう。

Windows Vista搭載モデル一覧

 ここ最近ずっと課題になっていたのがサーバーが過負荷になったときどうやって検知するのかということ、プロセスダウンでもすればわかりやすいがCPU使用率が危険な状態というのはどうしようかといろいろ探してみた。vmstatやtopを使う方法が一般的ですが、topコマンドがRHLとBSDで使い勝手が違いがあったので単純なvmstatを選びました。

どこかに載っていたコマンドですが
/usr/bin/vmstat|/bin/grep -E "^ ?[0-9]"|/usr/bin/awk '{print$18}'

このようにgrepでヘッダ部分を省きawkを利用してcpuの部分(BSDだと18番目)を抜き出す。
但し、ウチのBSDだとvmstatの1発目が正確な値を表示してくれないので2回分出力して2行目を取得。
そうするとコマンドはこのようになる。

/usr/bin/vmstat 1 2 | /usr/bin/tail -1 | /usr/bin/awk '{print$18}'

grepよりかtail -1の方が簡単だな。
これをアラート設定込みでシェルスクリプトに組み込んだのが下の例です。

#!/bin/sh

TO=webmaster@example.com
CC=user1@example.com

idle=`/usr/bin/vmstat 1 2 | /usr/bin/tail -1 | /usr/bin/awk '{print$18}'`
cpu=`expr 100 - $idle`

if [ 90 -lt $cpu ]
then
echo "CPU = $cpu" | mail -s "CPU Alert" -c $CC $TO
fi

exit 0

このアーカイブについて

このページには、2007年2月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2007年1月です。

次のアーカイブは2007年3月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.1