uttsu.com > uttsuの日記 >

2003年2月

2005年 8月
2004年 5月
2003年 11月, 10月, 8月, 5月, 4月, 3月, 2月, 1月
2002年 12月, 11月, 10月, 9月, 8月, 5月, 3月, 2月, 1月
2001年 6月, 5月, 4月, 3月
2003.02.19
2003.02.09
2003.02.03
2003.02.02
2003.02.01

2003年2月19日

# suEXEC 設定

ApacheのsuEXECを設定。suEXECは各ユーザーの権限でApacheが動作する機能で、nobody権限でApacheが動作する場合だとサーバー内の他のユーザーでもファイルにアクセスできてしまうので設定した。

VirtualHostで機能させるにはsuexecのディレクトリ情報を正しく設定する必要があるのだけど、これにはソースからmakeする必要があるみたい。で、configureとmakeをやってみた。

そのままインストールするとApacheも置き換わってしまうので、正しく設定したsuexecだけをもとのsuexecの場所にコピー。今のところちゃんと動いている様子。

# Jcode.pm インストール

jcode.plの後継であるJcode.pmをサーバーにインストール。インストールしなくても各自のディレクトリにJcode関連のファイルを置けば使えるのだけど、use Jcode;と書くだけで使えたほうがスマートだしね。

apt-get install libjcode-pm-perl

で、インストールできた(と思う)。

2003年2月9日

# CFドメイン復活!?

長い間(1年間くらい?)ルートサーバーがダウンしていたCFドメイン(中央アフリカ共和国)が、いつの間にか復活していた。実はここのドメインを1つ持っているんだけど、取得したときはルートサーバーが長期間ダウンするなんて考えてもみなかったなぁ。

# サーバー監視スクリプト

ちょっと改良。proxyサーバーを経由していたのを、直接接続するようにしてみた。UNIXのPerlでも、気長に待てばSOCKET接続でタイムアウトしてくれるみたいだし。

#!/usr/local/bin/perl

# Usage: is_alive_http.pl server

use strict;

my $host = $ARGV[0] or die;
my $mail = '○○';   # 携帯のアドレス

main();

# ◆
sub main {
    if (!is_alive_http($host)) {
        print "$host is down\n";
        system("echo '$host is down' | mail $mail");
    }
}

# ◆
sub is_alive_http {
    my $target = shift;
    my @result;

    my $addr = (gethostbyname($target))[4];
    my $name = pack("S n a4 x8", 2, 80, $addr);
    socket(SOCKET, 2, 1, 0);
    connect(SOCKET, $name) or return 0;
    binmode(SOCKET);
    select(SOCKET); $| = 1; select(STDOUT);
    print SOCKET "OPTIONS * HTTP/1.0\n\n";
    @result = <SOCKET>;
    close(SOCKET);

    return (join('', @result) =~ /200 OK/ ? 1 : 0);
}

2003年2月3日

# 青果店へ

いつもは買い物を近くのスーパーで済ませているのだけど、少し離れたところにある青果店へ足を運んでみた。スーパーでの値段を見慣れているためか、野菜の安いこと、安いこと。これからはちょくちょく寄ってみよう。

2003年2月2日

# サーバー設定ミス

プライベートで運営しているサーバーが外部から接続できない状態になっていて、メールで教えてもらって気がついた。設定ミスが原因で、自宅からだと直接サーバーに繋がるので気がつかなかった。利用者のみなさまには大変ご迷惑をお掛けしましたm(_ _)m

きちんと確認していれば防げたことなので、未熟さを実感。まさかこんな単純なミスをするとは・・。再発防止のために定期的に外部のサーバーから監視するスクリプトでも書こう。毎回の確認もきちんと。

# サーバー監視スクリプト

httpサーバーが動いているか監視して、ダウンしている場合はメールで知らせてくれるスクリプトを書いた。運営中のサーバーも、安定性は並のレンタルサーバーくらいを目指したいな。

#!/usr/local/bin/perl

# Usage: is_alive_http.pl server

use strict;

my $host = $ARGV[0] or die;
my $mail = '○○';              # メールアドレス
my $proxy_host = '○○';        # proxyサーバー
my $proxy_port = 80;            # proxyのポート

main();

# ◆
sub main {
    if (!is_alive_http("http://$host/")) {
        print "$host is down\n";
        system("echo '$host is down' | mail $mail");
    }
}

# ◆
sub is_alive_http {
    my $target = shift;
    my @result;

    my $addr = (gethostbyname($proxy_host))[4];
    my $name = pack("S n a4 x8", 2, $proxy_port, $addr);
    socket(SOCKET, 2, 1, 0);
    connect(SOCKET, $name);
    binmode(SOCKET);
    select(SOCKET); $| = 1; select(STDOUT);
    print SOCKET "OPTIONS $target HTTP/1.0\n\n";
    @result = <SOCKET>;
    close(SOCKET);

    return (join('', @result) =~ /200 OK/ ? 1 : 0);
}

cronで定期的に実行すればOK。

0,20,40 * * * * /path/to/script target.com

2003年2月1日

# テスト期間

テスト期間到来。というわけでプログラミングの方はしばらくお休み。


2005年 8月
2004年 5月
2003年 11月, 10月, 8月, 5月, 4月, 3月, 2月, 1月
2002年 12月, 11月, 10月, 9月, 8月, 5月, 3月, 2月, 1月
2001年 6月, 5月, 4月, 3月

Copyright (C) Takashi Utsunomiya. All Rights Reserved.