サーバリニューアル準備
自宅サーバの故障の前兆も怖いので、自宅サーバの更新ということで、 新しいマシンを(安価な構成=4万円!!)発注した。 安い構成だし、どこまで静音なのか心配が残るけど、それは来てからのお楽しみ。 RAIDやミラーリングも考えないといけないけど、ひとまずは基本サーバが立ち上がってから。
その前段階ということで、ネットワークの構成の準備。 自宅サーバは、現在4代目。常時稼働にしてから3代目。 家じゅうのネットワーク機器(PC,AV家電,ゲーム機など)は、 DHCPやらProxyやらでサーバ依存状態。 サーバがトラブルと被害は大きい。 だからこそ、移行後に前サーバのIPアドレスを仮想IPで使える状態に残したりと、 手間がかかる。
あと、せっかくのサーバ更新だし、今までのサーバ設定の不具合も直したい。 まずは、ファイルシステムやらの漢字コーディングが、EUC-JP だったけど、 これを契機に最近主流の UTF-8 に変更したい。
(( ファイルシステムの漢字コーディング変更 )) # aptitude install convmv # convmv --notest -f euc-jp -t utf8 /
自宅サーバから、いや~な音がする。
自宅のサーバ、停電でちょいとトラぶったけど、ちゃんと動いてくれた。 だけど、3秒周期でHDDの回転ムラの音がする。 HDD故障の前に取り替えとも思うけど、SATAじゃないのよね…. んで、サーバの発売年を見ると、カタログでは2003年2月。 即購入じゃなかったにしろ、約7年近い利用なのか….寿命でもおかしくないね。
HDD故障しても無駄に高いパラレルATAだったり、 NICもすでに壊れて無理やり使っている状態だし、 「そろそろ買い替え?」とつぶやいたら、入れ替えましょうしか言われないわな…
以下、安いサーバ構築を目安に、各メーカのリスト。目標40,000円
- @Sycom STX410G31 Celeron Dual Core/2.6GHz/500GB/2GB/OS無/36,340円/よさげ部品!?
- ドスパラ Prime Magnate GC /Pentium G6950(2core/2.8GHz)/500GB/2GB/OS無+静音パック39,780円
- ドスパラ Prime Magnate JC Core i3/500GB/2GB/OS無 38,980円
- パソコン工房 Amphis BTO MN502iCi3 Core i3 540/500GB/2GB/OS無 34,980円パフォーマンス重視
- HP ProLiant ML110G6(Celeron 2.26GHz/160GB/2GB/OS無(64,050円)
- HP ProLiant MicroServer AMD AthlonⅡ 1.3GHz/160GB/1GB/OS無(35,700円)サーバ&清音
停電があったようだ
どうも昼からすごい暴風雨状態。 自宅も、母によると停電もあったようだ。 その中、自宅のネットワークが動かない。 OSが停電で落ちて再起動したみたいだけど、 DebianでのGrubでブートしているんだけど、 最新kernel linux-image-2.6.32 で起動したのが原因みたい。
自宅サーバは、なぜかNICカードがアホになり、MACアドレスが消えてしまい、 直接指定しているけど、どうも 2.6.30 以前なら OK だけど、 2.6.32 だと intel8x0 での MACアドレス直接指定がダメみたい。 このため、NIC 初期化から先に進めずだったようだ。 それに、以前に 2.6.32 で立ち上がれたときも、温度センサーUSBRHが 認識してくれなかったし… 2.6.32 ではトラブルだらけになっちゃう状態。
ひとまず、GRUB の起動指定で、何もしないときは、2.6.30-5-686 で起動するように 設定を変更しておいた。
debianトラブル:libapt-pkg4.10が無い
自宅サーバの更新ということで、いつものごとく"aptitude update ; aptitude safe-upgrade"を 実行したら、140個ほどの大量更新となった。まあ、更新の量はこんなものかと思うけど、 更新途中で libapt-pkg-perl,synaptic,aptitude,python-apt,apt-utils が、エラーで失敗する。 「パッケージ libapt-pkg4.10 に依存しているけど、インストールされていない」とのメッセージ。
しかし、debian のパッケージ一覧には、libapt-pkg4.10 はまだない。Ubuntu にはあるんだけど。 しかたがないし、以前のパッケージに部分的にでも戻そうと、"aptitude install aptitude/stable" あたりを実行しようとするが、以下のようなメッセージ。
hostname:/var# aptitude install aptitude/stable aptitude: error while loading shared libraries: libapt-pkg.so.4.10: cannot open shared object file: No such file or directory
ということで、aptitude自体が動かなくなった。こりゃパッケージの依存関係が復旧されても、 元に戻すのは、dpkg コマンドを使わないと復旧できそうにないな…
仕方が無いので、バージョンを下げようとするけど、stable では、下がり過ぎ。 ということで、aptitude_0.6.3-3.1_i386.deb から、aptitude_0.6.3-3_i386.deb に落とすために、Webから探して "dpkg -i –force-depends aptitude_0.6.3-3_i386.deb" を実行する。
phpスクリプトのregister_globalsの問題
PHPのバージョンアップに伴い、register_globals がデフォルトoffから、 さらに利用が制限され、register_globals 自体が使えなくなった。 以前から、$_GET[] , $_POST[] を使わない様に使うようにしていたし、 問題なく移行が終わると思ってたけど、 家庭内コンテンツフィルタの制限解除の プログラムが動かなくなった。
プログラム本体は移行済みだったけど、不用意にアクセスをされないようにするための、 携帯のみのアクセス制限で、$HTTP_X_UP_SUBNO を使ったコードが残ってた。 ということで、$_SERVER['HTTP_X_UP_SUBNO'] に修正する。
modemmanagerがシリアルポートをキープしてた
先日自作したLEDバッジの表示機能、メッセージ表示用にメール文面を 表示するように設定していたけど、なぜか動かなくなった。 職場での行先表示板としているメッセージ表示プログラムは動いているので、 意味不明だった。 ボチボチ原因究明とほっておいたけど、最近カーネル再起動とかかけてたら、 modem-managerなるデーモンが動いてるみたい。 今更ながら、モデムなど使っていないが、着信用のpppあたりのパッケージの更新に伴って、 インストールしてしまったみたい。
んで、これがLEDバッジ表示プログラムのシリアルポートをつかんでいるのが原因みたい。 vgetty+pppあたりの着信も使ってないし、あっさり"aptitude remove modemmanager"する。 試しに、メッセージ表示機能を動かしてみたら、案の定普通に動き出す。
サーバのブートトラブル
自宅サーバのMRTGで、温度観測している usbrh が動いていないことが判明。 数日前にカーネルのバージョンが上がったのが原因だろう…ということで、 カーネルモジュールを入れなおす。しかし、うまく動いてくれない。 仕方ないので、カーネルのバージョンを落とすが、GRUB2 が入っていたため、 最新の linux-image-2.6.32-5-686 しかメニューに出てこない。
で、linux-image-2.6.30-*-686 に落とそうとするけど、GRUB2 のメニューにも出ないし、 "aptitude install grub-legacy"により、GRUB に戻そうとした。 これが不幸の始まり。
どうもGRUB2→GRUBに失敗していたようで、職場よりrebootさせたら、サーバが立ち上がらない。 自宅に帰ってブートの設定を直そうと、netinstall CD の rescue 機能で修復を試す。 でも、最近の rescue CD だと、ちょい昔の "rescue boot=/dev/hdc root=/dev/hda1" で起動しようとしても動いてくれず、冷や汗たらたら。 ようやく、最近のstableのCDに作り直して GRUB の入れ直しで、ようやく復旧。 はあ、手間取った~。
途中で、あまりにもブートしないので、頭に"再インストール"がよぎる。 Debian は、バージョンアップの整合性が高いのが利点だけど、 さすがに /etc/* に、過去の設定が残っていて警告メッセージもチラホラ出ている。 それに X11 を起動したときの遅さはイライラ。 次世代サーバをそろそろ準備しようかな…
tgifからinkscapeに乗り換え
歯みがきロボコンの資料作りで、今までは慣れたtgifを使って作業をしていた。 tgifは、機能が程良いくらいに『機能不足』なので、操作方法も単純でずっと愛用していた。 しかしながら、新しいunix環境などで次第に漢字フォントの取り扱いがダメになって、 いちいち設定を触るのが面倒になってきた。 そこで、レイヤーなどの機能も豊富なinkscapeに乗り換えてみた。
inkscapeは、unix,windows,macと幅広く使えるので、どの環境でも作業ができそう。 と切り替えたのはいいけど、円弧やら矢印やら操作方法に慣れない。 まあ、それでも歯みがきロボコンの図面を書いていたら、それなりに機能は解ってきたかな。
ps3mediaserverインストールメモ
PS3のためのDLNAサーバソフトのps3mediaserverをインストールする実験。 そのくせPS3はまだ無い。動かすのが簡単だったら、PS3購入にふみきっちゃう!?
$ wget http://ps3mediaserver.googlecode.com/files/pms-generic-linux-unix-1.20.409-BETA.tgz (( READMEを参考に必要なものを入れる )) $ su # aptitude install mplayer mencoder ffmpeg (( 適当な所にインストール )) # cd /usr/local/etc # tar zxvf pms-generic-linux-unix-1.20.409-BETA.tgz # ln -sf pms-linux-1.20.409 ps3mediaserver (( 試しに動かしてみる )) # cd /usr/local/etc/ps3mediaserver # ./PMS.sh : [main] TRACE 00:31:15.577 Exception in thread "main" java.lang.NoSuchMethodError: method java.net.NetworkInterface.isLoopback with signature ()Z was not found. (( うーん、とまっちゃったか... ))
動かないのが、javaのバージョンの可能性が高いので、確かめてみると、 gcj-4.4-jre-headless(gij-4.4) と sun-java6-jre の違いの可能性がある。 そこで、以下のコマンドで sun-java6-jre を選んでやったら、動き出してくれた。
# aptitude install sun-java6-bin sun-java6-jre # update-alternatives --config java
netatalkを使ってTimeMachine代り
職場のMacBook用に導入したTimeMachineが、容量不足なのか全体バックアップが できなくなってきた。調べてみるとLinuxサーバでnetatalkを使えば、 TimeMachine互換機能も増えて、簡単にバックアップができる。 以前に導入を試したけど、一部設定が足らなくってうまく動かなかった。 しかし、なんとか使えるようになったので、 職場で試すためにも、設定をメモ。
(( /etc/netatalk/AppleVolumes.default )) :DEFAULT: maccharset:MAC_JAPANESE volcharset:EUC-JP ¥ options:usedots,upriv cnidscheme:dbd ~/ "AppleHome" /PATH/MacOS "AppleBackup" options:usedots,upriv,tm allow:@home (( netatalk再起動 )) # /etc/init.d/netatalk restart
ポイントは、options:tm の設定でTimeMachine対応となってくれる。 この辺までは、簡単に見つかった。
Mac側からの問い合わせに、サーバのサービス情報を答えるための設定として、 以下のようなものを追加した。参考
(( /etc/avahi/services/afpd.service )) <?xml version="1.0" standalone='no'?><!--*-nxml-*--> <!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <service-group> <name replace-wildcards="yes">%h_mac</name> <service> <type>_afpovertcp._tcp</type> <port>548</port> </service> </service-group> (( /etc/avahi/services/adisk.service )) <?xml version="1.0" standalone='no'?><!--*-nxml-*--> <!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <service-group> <name replace-wildcards="yes">%h_mac</name> <service> <type>_adisk._tcp</type> <port>9</port> <txt-record>dk0=adVN=AppleHome,adVF=0x01</text-record> <txt-record>dk1=adVN=AppleBackup,adVF=0x81</text-record> </service> </service-group> (( avahi-daemon を再起動 )) # /etc/init.d/avahi-daemon restart
adisk.service の登録をすれば、自動的にドライブが見えるようになる。 特に、TimeMachine 対応ドライブには、adVF=0x81 を指定しておくと、 TimeMachine 設定のバックアップドライブの検索で、自動的に見つけてくれる。
職場だと、バックアップ用 NAS に Buffalo の TeraStation を使っているけど、 TimeMachine非対応のバージョンなので、 Linux 側からNASを smbfs でマウントして、その領域をnetatalkで…という方法であれば、面倒だけれど バックアップが取れるようになるかな…