自宅サーバーをClaude Codeで引っ越し その4:1997年製アクセスカウンターの移行
前回は、ファイル名の大文字・小文字の問題をClaude Codeに一括修正してもらった話でした。今回は、ホームページに設置していたアクセスカウンターを、新しいサーバーで動くようにしてもらった話です。
懐かしのアクセスカウンター

ホームページのトップなどに、訪問者数を数字の画像で表示する、昔ながらのアクセスカウンターを使っていました。旧サーバーでは、Windows用の npc.exe というCGIプログラムで動かしていたものです。
当然、Windows用の .exe はそのままではLinux上では動きません。どうしたものかとClaude Codeに相談したところ、このプログラムの配布元を探し出してくれて、Unix版(npc-0.83)が公開されていることが分かりました。ソースコードから自分でビルドして使う形式です。
https://www2.biglobe.ne.jp/%7Enir/soft
1997年のC言語をビルドする
ところが、このソースコードは1997年に書かれたC言語のプログラムです。そのまま今のコンパイラ(gcc)でビルドしようとすると、エラーが大量に出てきました。当時と今とでは、C言語の標準の決まりごとや、システムに用意されている関数の形が変わっているためだそうです。
ソースコードを1つずつ直していくのかと思いきや、Claude Codeの答えは「コンパイラに、昔の規格(C89)でビルドするよう指示する」というものでした。
make CFLAGS="-std=c89 -U_POSIX_C_SOURCE -Wno-error -O2"
古い規格で解釈させて、警告もエラー扱いにしないようにしたところ、ソースコードには一切手を入れずにビルドが通りました。こういう「古いものを古いまま動かす」ための引き出しをすぐに出してくれるのは、流石だなと思います。自力ではたぶん解決できなかったかも。
nginxからCGIを動かす
もう1つの問題は、nginxにはCGIプログラムを直接実行する機能がないことです。旧サーバーのIISでは当たり前にできていたことが、nginxではできないようです。
そこで、Claude Codeの提案で fcgiwrap という仲介役のプログラムを入れて、「nginx → fcgiwrap → CGIプログラム」という流れで実行する構成にしました。
ここでも一度つまずいています。設定を入れてもカウンターが表示されず、ログには「Cannot get script name(スクリプト名が取得できない)」というエラーが出ていました。Claude Codeが調べたところ、nginxの設定の書き方の関係で、プログラムの場所が /usr/local/cgi-bin/cgi-bin/npc のように二重になっていたのが原因でした。設定を次のような書き方に変えて解決です。
location ~ ^/cgi-bin/(.*)$ {
fastcgi_param SCRIPT_FILENAME /usr/local/cgi-bin/$1;
...
}
ホームページ側の書き換え
最後に、ホームページのHTMLの中にある npc.exe の呼び出しを、新しい npc に書き換えます。これもClaude Codeが、Takesa’s Homepage と krp の両サイトで一括置換してくれました。
これで両サイトとも、カウンターの表示もカウントアップも、旧サーバーのときと同じように動くようになりました。
振り返り
今回は「配布元を探す」「古いソースをビルドする」「nginxで動かす」と、自分だけでやったらそれぞれ調べ物だけで半日はかかりそうな作業ばかりでした。Claude Codeは、そのどれにもすぐに具体的な手順を出してくれて、あっという間に古いカウンターが復活しました。
ちなみに、今回用意したCGIの実行環境(fcgiwrap)は、この後の電子掲示板の移行でも使っています。
次回
次回は、旧版ホームページ(BiND版よりも前にDreamweaverで作成していたホームページ)に設置していた電子掲示板(BBS)の移行です。1999年製のPerlスクリプトを、今のLinux環境で動かすまでの話になる予定です。
