自身が一番興味を持って取り組んだ分野のひとつである、Apache HTTP ServerとApache Module。
これらで使えぞうなのは、Apache Module Registryに申請している。
現在、自身で書いたApache Moduleで、Apache Module Registryにおいて承認されているmoduleを簡単に説明する。
[important]
[/important]
とりあえず、以上のモジュールは一定水準のクオリティ(ある程度使える)であると思われる。
「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。
自身が一番興味を持って取り組んだ分野のひとつである、Apache HTTP ServerとApache Module。
これらで使えぞうなのは、Apache Module Registryに申請している。
現在、自身で書いたApache Moduleで、Apache Module Registryにおいて承認されているmoduleを簡単に説明する。
[important]
[/important]
とりあえず、以上のモジュールは一定水準のクオリティ(ある程度使える)であると思われる。
This is the distribution page for the Apache module mod_vlimit.
mod_vlimit allows “Apache HTTP Server” administrators to limit the number of simultaneous connections(exec cgi php) from the same IP address or all to any files.
If client accessese are over the limit connections, mod_vlimit return 503 error message to the client.
[warning]
mod_vlimit is for Apache 2.x.
If you use “VirtuaHost”, This is OK.
mod_vlimit is approved Apache module by “Apache Module Registry“.
[/warning]
mod_vlimit is approved Apaceh module by “Apache Module Registry“.
You can search or browse on “Apache Module Registry“, if you’d like to get the information for mod_vlimit.
[note]
[/note]
最近はクラウド基盤と呼ばれるオープンソースソフトウェアについて、セミナーや勉強会が盛んに行われている。
クラウド基盤とは、クラウド(コンピューティングリソースをプールしておき、必要最低限の手間で、消費者が使いたいと思ったときに、リソースをすぐにプロビジョニングできる状態)環境を構築するためのソフトウェアだ。
amazonEC2と同じような仕組みを作ることができると思ってもらえればよい。
僕自身もEC2等には非常に興味があるので、動向調査や研究の意味で勉強会にも参加したりしている。
ということで、現状のオープンソースのクラウド基盤でどういったものがあるのかを簡単にまとめようと思う。
現在、オープンソースとしてのクラウド基盤で注目されているソフトウェアは以下の4つである。
[important]
[/important]
である。
ではそれぞれについて、簡単な特徴を説明する。
題名の通りなのだが、PXEブートとNFSとメモリ上でOS起動を連携させることで、結構なことができるようになる。
例えば、自動インストールを考えてみよう。
上記の3要素をうまく使えば、kickstartにはあまりそぐわないようなインストール方法をとることができる。
どういった場合かというと、
[note]
などである。
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;
}