カーネル再構築

今構築中のscientific linux6.1のWebサーバですが、 CPUをAtomに最適化して確実に不要と思われるモジュールのみ外して、 非力なAtom230でKernelのx86_64で再構築やったら10時間以上掛かりました。 再度やるならもっと不要なモジュール外さないと駄目だなこりゃ。 しかも、ビルドが完了してからkernelをインストールしようとしたら、 依存関係でkernel-firmwareが必要との事で、 kernel.specを開いて「firmware」で検索して、102行目のフラグを1に修正して、 再度10時間掛けてビルド行い、ようやく再構築したKernelで起動しました。 下記のとおりです。 修正前 %define with_firmware %{?_with_firmware: 1} %{?!_with_firmware: 0} 修正後 %define with_firmware %{?_with_firmware: 1} %{?!_with_firmware: 1} しかし、こりゃ罠だなw

問題発覚

どうやら、PHP5.1.XからPHP5.3.Xにすると切り捨てられてサポートしていない関数や レガシーなコードがいくつかあるらしく、あるページで使われている掲示板のシステムが エラーを起こしてました。 具体的に引っかかったのが下記のようなコードです。 $aaa =& new BBB(); 上記のコードでnewの前に「&」を使ってはいけないらしく、 PHP5.3.Xからは下記のように書かないとダメみたいです。 $aaa = new BBBBB(); それをコード全体で使われていて全て置換してみましたが、 それでもダメでまだレガシーな記述方法が残っているみたいで、 このままトライアンドエラーしても時間ばかり掛かるので、 別の方法を模索してみようかと思います。

サーバを交換

どうも放置していたPhotoGallaryで使用しているCoppermine Photo Galleryのバージョンが古かったらしく、 スパムの温床になってサーバにログインが困難になる程の負荷が与えている状態に陥って、何度か泣く泣くハードディスクリード中に電源ボタンを押下しましたが、 紆余曲折を経て要約サーバ移行が完了した。 しかし、散々しまのさんへ文句言っていたわりに、自分も同じように放置していた事には多々反省してます。 と言うことで、代替のサーバは同じatom230のAOpenのベアボーン、XC Cube LE201ですが、 元々構築途中だったCentOS5.6を最新のパッチが当たっている状態にして、PHPとMySQLをここのものに変更し、 PHPが5.3.6、MySQLが5.5.14に変更しました。 何でここまで新しいのを使いたかったのかと言うと、そもそも前衛的に極力新しいバージョンに更新しないと、 後で更新する必要が出た場合、逆に時間が掛かったりするからと言うのもありますけど、 phpMyAdminが結構シビアに新しいバージョンを要求すると言うのが大きいです。 ちなみに一連の移植でシステムの中で一番楽なのが、WordPressです。 もうこれは管理画面から更新が可能だから、新しいバージョンが出ると大抵更新しちゃってます。 プラグインとかテンプレートの更新も管理画面上で知らせてくれるから、 面倒なら寧ろWordPressだけ使ったほうが良いかと思うくらいです。 一番面倒だったのが、Coppermine Photo Galleryでした。 頭来たからカッとなってパーミッションを「000」にしていましたけど、 何とか1.4系の最終版、1.4.27に更新して、更にこれを無理やり1.5.12に移植しました。 自動アップデートと言う素敵なツールなんか無くて、sqlファイルを吐き出してテキストエディタで置換して修正加えてました。 はっきり言って、これがかなり面倒と言うか、DBのテーブル自体のカラムが微妙に無くなっていたり、増えていたりで、 ちょっと次の更新が同じようなCoppermine Photo Galleryを使うのを止めようかと思ってます。 exifの情報がまだ移植しきれてませんが、これは暇なときにでもやろうかと思ってます。 後は地味にmediawikiも最新版に更新しつつ、トップページで使用しているjoomla!も1.5系列で一番新しいバージョン、1.5.23にあげときました。

今待機側の鯖を確認してますが・・・

phpMyAdminの3シリーズってPHP5.2以上を要求されるけど、 今使っているOSがCentOS5.6で、標準でPHP5.1.Xなので他のリポジトリを追加して 無理やり5.2を入れているが、phpだけで完結してなくてMySQLも絡んでいろいろ面倒なので、 PHP5.2以上を標準で採用しているOSに変更しようかと考えてます。 最近話題のScientificLinux6.0に変えるか、今まで通りCentOS6.0にするか・・・ それとも独自ビルド???

自宅鯖が暴走

最近自宅鯖が不安定でフリーズしている状態が多発しています。 原因はほぼ掴んでいて、どうやらチャットのシステムにOpera10Mobileからアクセスすると、 タイミングによってディスクを無限に読み込んでしまっている状態になって、 この状態になると無理やり電源スイッチを落とさないと回復しません。 あまり良いCGIスクリプトじゃない気もするので、もしかするとチャットシステムを入れかえるか、 もしくはソースファイルに修正を入れようかと考えてます。 このまま続けるとディスクに深刻なダメージを与える恐れがありますが、 ディスクは壊れても良いが、肝心のデータが吹っ飛ぶと大きいので、とりあえず代わりに待機しているサーバへ移行します。 どうやら、httpdのログを詳しく見てみたら、フォトギャラリーで使っているcpgが怪しい。 スパムの温床になっていたので、最近は殆ど更新もしていない状態なので、 このサービスを停止します。

ファイルサーバの構成を強化

ようやく仕事が一段落してきたので、買い貯めていたWD20EARSをファイルに載ってた 1TBのディスク群と交換した。 到着して開けもしないズボラ具合、と言うか暫くそんな余裕が一切無かったから。 そうなら無理して買わないで必要になった時に買えば良いのにと自問自答w ざっと5台よw、プラスデータ退避用途で使っていた1台をプラスして合計6台。 まぁ、真のNASERいや、NASESTは2桁台が当たり前だと思うが、 私的にはある程度分散させてコスト削減と安全性を確保したかったので、この程度。 ディスクの山を見ると安心するぜwww WD20EARSはLinuxで使うのには少し面倒で、 先ず適当なマシンに繋げてDOSを起動してwdidle3でIntelliparkを解除すると。 これをしないとNASのような用途だとかなりの短期間でヘッド部分が劣化してしまう。 これを6回繰り返すと言うか、多分WesternDigitalオンリーの環境なら普通につなげた後一気に変えられる気がするが、 今回は地道にやった。 それでもって、実際に組み込んだ後フォーマットするが、 その時必ず4096KBセクタを指定しないと、本来の能力が発揮できない。 今まで使っていたのは、Socket939のAthlon3500+にDDR3200の512MBが4枚。 これを、AMD690GのM2AVM-HDMIに交換。 CPUはAthlon4200+にDDR2 6400の1GBが2枚。 DDR2メモリが腐るほど余っているからスロットの限界まで挿しても良いのだが、 無駄に消費電力を上げてもアレかなと思って留めて置いた。 そして、恐らくAMD690Gよりも、AMD780G以降のノースブリッジの方が 低消費電力なのだろうが、何せM2AVM-HDMIは3枚も在庫があるから、 故障した時の時間的なリスクを考えてこれにした。 後はハードディスクを取り付けるだけだったが・・・ 疲れてかなりテキトーにネジ回してたら ぎぃややあやああああああああああああああっ、ネジの頭が取れたよOrz オマケに無理やり取ろうとしたら、指を怪我した。 15分程格闘したが、無理と悟ってその日は寝た。 クソ品質のインチネジを付ける位なら、付けないほうがマシだ・・・ 次の日、会社帰りに少し遠いホームセンター、コーナンとカインズに行って工具を調達してきた。 ネジザウルスと、日本製のプライヤー、ネジ滑り止めの3つ。 これで運が良ければ何とかなるだろう、オールジャパンメイドの精度の高さをみせてくれれれれれぇ~ ダメだ、ネジザウルスの力を持ってしてもこのネジの残りは取れない。 何という迷惑なネジなんだ・・・ 相手が精密なディスク故に無理も出来ん・・・ ・・・、と言うことで 早速WD20EARSを追加購入w しかし、何台WD20EARSを買っているんだろうか。 よし、組み込み完了、ディスク6台で、SoftwareRAID1+SoftwareRAID5を構築。 壮観だ 今回もCentOSをフラッシュメモリ用にカスタマイズしたOSをインストールしたが、如何せん無駄が多すぎ。 私の場合、NASサーバは24時間起動しているわけじゃないから、贅肉を落としたOSの方が望ましい。 と言うことで実験で、もう一台のNASの方を独自ビルドのLinuxに置き換える予定だが、果たして上手く行くかな  

[…]

サーバ停止のお知らせ

地震の影響に伴う輪番停電の為、暫くの間サーバを止めます。 とりあえずどの程度のものか良く分かってないので暫くは長時間止める事に なると思いますが、少しずつ起動している時間を増やしていこうかと 考えてます。

HAクラスタ

KVM上で仮想マシン2台にてDRBD+HeartbeatのHAクラスタを組んではみたが、 ウェブサーバはこの構成でも良いけど、ファイル鯖の場合は DRBDとGFS2で負荷分散した方が良さそうだ。 問題は、不具合が発生したときに元の状態に戻せる知識と言うか、 経験が必要で、それが無いのなら寧ろハードディスク1台の運用の方が 良い気がするので、仮想マシンで色々やってみようかと思う。

PHPのセキュリティをちゃんとしないとかなり危険な件

PHPはウェブサーバで動作させるには比較的柔軟で使いやすい反面、 設定をしっかりしておかないと最悪なセキュリティホールに成り得ると言う話。 PHPで特に不可解なのが、PHPはファイルに実行権限が無くても動いてしまう点。 勉強不足なのかイマイチその理由がわからないが、例えば下記のような話なのだろうか。 PerlでもPHPでもCGIで動かす場合はパーミッションの設定を忠実に守っているから、 その辺をちゃんと理解出来ているなら良いんだけど、 利便性と難解さは基本的にトレードオフだから、 兎に角、最短距離で目的を達成したい場合はその難解さが障害になる。 CGIでセキュリティを上げたい場合、スクリプトを置く場所と静的ファイルを置く場所を分けたりするけど、 直ぐにスクリプトを設置したい時とかそれが結構面倒だったりするしね。 だから、面倒な事を殆ど設定しなくても動作するPHPは魅力的に映る。 面倒な事が無い方が普及する可能性が高いからね。 VisualBasicとかもそうだったしね。 それで、最近気が付いたのですが、apacheでPHPを動作させる場合、 拡張子でPHPスクリプトかどうか判別しているけど、 例えば「index.php.rar」とかにすると、httpd.confのAddTypeのPHPスクリプトに登録されていない にも関わらず、apacheが勝手にphpとして判断して スクリプトを実行させてしまうの。 気を利かせて動作させているか知らないけど、こんなの余計なお世話だわw これはapache側の仕様だけど、この仕様もおかしいと思う。 アップローダとか設置してあると、CGIならその場所をCGI実行禁止にすれば良いんだけど、 PHPの場合何処でも実行権限無しで動作してしまうから、 凄い危険だったりする。 昔作っていたページにアップローダの残骸があって、 最近その辺の問題に気が付いて小手先で対策したが、いろいろ危険だからアップローダ止めようかな・・・

4月上旬にサーバ機を変えたのだが

2年近く動かしたサーバ用マシンを別用途で使いたいのと、 そろそろ以前買ったaopenのシングルコアのatomベアボーンを活用するために、 環境を作成しデータを写して前マシンを停止させた。 そして埃を飛ばして綺麗にする為にベランダへ出した。 2年の歳月はブラックなマシンをグレーにしてしまうw しかし、このHEC製の7K09は前面の吸気ファンの前に金網があるので、 その金網に埃が張付き、それ以上の埃の進入を防いでくれていたりする。 見た目が激しく汚らしいが、不意に埃を取ると内部に侵入する為、そのまま放置している。 多少埃が付いているが、CPUの冷却ファンも綺麗なものだ。 この後、缶が冷え冷えになるまで、エアダスターを振り掛けて綺麗にした。 しかし、HECの製品は安価な割りに使える製品が多くて良い。

[…]