PXEブートとNFSとメモリ上でOS起動を組み合わせる

題名の通りなのだが、PXEブートとNFSとメモリ上でOS起動を連携させることで、結構なことができるようになる。

例えば、自動インストールを考えてみよう。

上記の3要素をうまく使えば、kickstartにはあまりそぐわないようなインストール方法をとることができる。

どういった場合かというと、

[note]

  • HDDのデータをまるごとバックアップしておいて、壊れた場合はサーバー再起動するだけで自動復旧
  • kickstartでは融通がきかないような作り込まれたシステムでも、サーバー再起動するだけで自動インストール
  • サーバー毎のインストールデータを/からそれぞれ保持しておいて、新しいサーバーを再起動するだけで用途にあったデータをコピーして自動インストール[/note]

などである。

続きを読む

香川のオープンソースカンファレンス(2日目)

※投稿名はOSCですが、全くOSCとは関係ありません。

さて、友人Tと健康ランドのエアコン効きまくりのレストルームというところで寝た後は、健康ランドからうどん食べに出発。

エアコン効きすぎていたが、意外とぐっすり寝られたので、結構元気な二人。

まぁまぁ有りな泊まり方だった。

続きを読む

VirtualHost名だけでなくServeAliasもみる

VirtualHost対応のために、アクセス時のホスト名とVirtualHost名をapacheモジュール内で比較させる方法がある。 しかし、これだけでは不十分で、実際にはServerAliasの設定がされているサーバーも多く、Aliasとマッチさせる必要もでてくる。 そのための関数を書いてみた。以下ソース。

static int check_virtualhost_name(request_rec *r) {

    int i;
    const char *header_name;
    const char *alias_name;

    header_name = apr_table_get(r->headers_in, "HOST");

    if (strcmp(header_name, r->server->server_hostname) == 0) {
        vlimit_debug_log_buf = apr_psprintf(r->pool, "Match: access_name=(%s) ServerName=(%s)"
            , header_name
            , r->server->server_hostname
        );
        VLIMIT_DEBUG_SYSLOG("check_virtualhost_name: ", vlimit_debug_log_buf, r->pool);
        return 0;
    }

    for (i = 0; i < r->server->names->nelts; i++) {
        alias_name = (char **)r->server->names->elts + (r->server->names->elt_size * i);
        vlimit_debug_log_buf = apr_psprintf(r->pool, "INFO: access_name=(%s) ServerAlias=(%s)"
            , header_name
            , alias_name
        );
        VLIMIT_DEBUG_SYSLOG("check_virtualhost_name: ", vlimit_debug_log_buf, r->pool);
        if (strcmp(header_name, alias_name) == 0 ) {
            vlimit_debug_log_buf = apr_psprintf(r->pool, "Match: access_name=(%s) ServerAlias=(%s)"
                , header_name
                , alias_name
            );
            VLIMIT_DEBUG_SYSLOG("check_virtualhost_name: ", vlimit_debug_log_buf, r->pool);
            return 0;
        }
    }

    vlimit_debug_log_buf = apr_psprintf(r->pool, "Not Match: access_name=(%s)"
        , header_name
    );
    VLIMIT_DEBUG_SYSLOG("check_virtualhost_name: ", vlimit_debug_log_buf, r->pool);

    return 1;
}

続きを読む

香川のオープンソースカンファレンス(1日目)

今年は全国各地のオープンソースカンファレンスに出てみようと思い、まずは今年初のオープンソースカンファレンス(以降OSC)が開催される香川へ向かった。

まずは、金曜日に仕事を定時で切り上げ、梅田発20:10の高松行き高速バスに向かった。

1時間ほど早くついたので、麺屋六三六で飯を食った。

続きを読む

Apache Module Registry申請通過

世界中のWEBサーバーのほとんどはApacheで構築されている。

Apacheの開発が行われているApache Software Foundation(以下ASF)では、サードパーティ製の推奨モジュール群を、Apache Module Resgistryというサイトで提供するようにしている。

そのサイトは、Apacheモジュール開発者がソースと共に登録申請を出し、ASF側で問題無く推奨できるモジュールであれば、Apache Module Registryに登録され、ASFの推奨モジュールとして世界中に提供される。

僕も、apacheモジュールを開発したりしているので、ためしに作ったモジュールを二つほど申請してみた。

すると、なんと数日後申請がおり、Apache Module Registryに登録された。

申請したのは以下のモジュール。

[important]

[/important]

これで名実ともにApache(モジュール)開発者と名乗っちゃってもいいのかな。