古いLinux PC ServerをKVMで救う

依頼が来ました。
「8年ぐらい前に導入したシステムが動かなくなっちゃってなんとかしてくれ」

聞けば中身はWindowsクライアント+Linuxサーバーのシステムで、状況だけ聞くに、サーバー強制終了が多発して、要fsck(ディスクチェック)状態なんだがLinuxワカリマセーン状態なので本当にどうしようもないとのこと。
すでにハードウェアもソフトウェアもサポートが切れており、どんな方法でもいいので継続して使いたいとのことでした。

さて、現場に行ってみると、Linuxサーバーは自作PCで組まれたTurboLinuxのものでした。HDDはARAID99-1000L!懐かしい!
まず、起動してみると十数秒で強制終了。どうもチップセットの冷却がうまくいってないことによるようです。ファンが回ってない。壊れてる。
マザーボードごと取り替えることも検討しましたが、古いマザーボードなので同型も手に入りません。また中古でしか手に入らないのでその後の安定性に不安があり、この線は諦め。

DSC_0787
続きを読む

Windows Server 2008 R2へ2012のリモートデスクトップCALをインストール

Windows Server 2008 R2でリモートアプリを提供することになりまして、
リモートデスクトップのライセンスが必要になります。
もともとStandardで5ユーザーのCALがあるんですが、リモートデスクトップをadministratorの用途以外で使うとなると、リモート用のCALを足さないといけないんですね。

2008 R2なので2008 R2用のリモートデスクトップCAL 5Usersを探していたんですが、もう売ってないんですねコレ。
調べたら2012用のものを使えるということなので、一応MSに電話して確認を取って購入へ。

しかしRDS CALのパッケージなんてそうそう置いてあるもんじゃありません。
秋葉原でsofmapとヨドバシに問い合わせましたがいずれも取り寄せ。当たり前か。
amazonは奇跡的になぜか在庫があったので買いました。お急ぎ便で即到着。

で、このCALを持ってサーバーへ赴き、役割サービスからリモートデスクトップサーバーをインストールして構成します。
RDライセンスサーバーをアクティブ化したりで、自動では進みませんが、とりあえずできた。

続いてRDライセンスマネージャーを開き、CALのインストールを行います。
オンラインでサクサクーっと……いかなーい!
正しくないと言われる。
2012のCALで2008R2でも動くって書いてあったよね、電話でも言ってたよね、おーい…

rdp-cal-property

仕方ないので電話認証にしました。
BとDとTとか、MとNとか、AとKとか、電話口だとわかりにくいので窓口のおねえさんはフォネティックコードっぽい感じの読みを加えて教えてくれました。

和文通話とフォネティック・コード
普通BはBravoなんですけどBrazilだったりCがCanadaだったり、国名が多かった印象。
MだったらMicrosoftって言うのかなw

rdp-cal-install

そんなわけで無事に認証が通りました。
ネット経由でダメでも電話ならなんとかなる場合もあるんですなー。

WordPressの管理画面にアタックが来まくるので認証をかけて対応した

タイトルが全て!

なんだかサーバーが重いと思ったらhttpdの負荷が高くloadavgも高い。
アクセスログを見たら海外のIPアドレスからPOST /wp-login.phpばっかり。

こりゃ重くもなるわなーということで手っ取り早くwp-login.phpにbasic認証をかける。

Apacheのhttpd.confにて

<FilesMatch wp-login.php>
  AuthType Basic
  AuthName "wordpress protection" (てきとう)
  AuthUserFile /path/to/.htpasswd
  AuthGroupFile /dev/null
  require valid-user
<FilesMatch>

再読み込みさせたらみるみるうちに負荷が下がりました。
ちなみにVirtualHostでなく全体に有効にしたので各ユーザーへの連絡が大変です。

しかし今後も増えるかもしれませんしなー…
wordpressとしては一定回数のエラーでロックをかけるような実装に向かっているとか。

lighttpdだと

$HTTP["host"] == "example.com" {
(いろいろ略)
  auth.backend = "htdigest"
  auth.backend.htdigest.userfile = "/path/to/.htdigest"
  auth.require = (
    "/wp-login.php" => (
      "method" => "digest",
      "realm" => "wordpress protection", (てきとう)
      "require" => "valid-user"
    ),
  )
}

な感じになるはず。(たまたまdigest認証でしたけど)

rsyncしようとしたらcommand not found

2013-09-06 15.52.58
Linux(CentOS)サーバー間で引越的にrsyncを使おうとしたら

bash: rsync: コマンドが見つかりません
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [sender=3.0.7]

と出る。
which rsyncしてもパスは通ってるしおかしいなーと思ったら,リモート先にrsyncが入ってませんでした。入れたら解決。
最小インストールしたCentOSは色々とあると思ったモノがないな…余計なモノがなくて良いんですけど。