一昨日の設定だと、日記アカウントの数だけ index.fcgi が動くので、メモリを食いすぎますし、これだとどんなに CPU が余力があってもこれ以上アカウントを増やすのは無理です。
そこで、複数の日記アクセスを一つの FastCGI でさばけないか考えてみたところ、意外に簡単にできました。 moriq さんの記事を参考に、こんな感じの index.fcgi を各日記のディレクトリに symlink で置きました(同じディレクトリにそれぞれの日記用の tdiary.conf や symlink の index.rb があります)。
#!/usr/bin/ruby
require 'fcgi'
FCGI.each_cgi do |cgi|
begin
ENV.clear
ENV.update(cgi.env_table)
class << CGI; self; end.class_eval do
define_method(:new) { cgi }
end
if /\A(.+)\.tdiary.net\z/ =~ cgi.server_name
dir = "/home/tdiary/users/#{$1}"
else
dir = File::dirname(__FILE__)
end
Dir.chdir(dir) do
load 'index.rb'
end
ensure
class << CGI
remove_method :new
end
end
end
要するに、SERVER_NAME 環境変数をみて、その日記ユーザのディレクトリに chdir してから index.rb を読んでいるだけです。そのあたりの部分はもちろん環境にあわせて書き換えてください。
なお、「複数の日記アクセスを一つの FastCGI でさばける」とは言っても、同時に複数の日記アクセスが来たら、その数だけは fcgi スクリプトは走るみたいで、今はだいたい 5 個程度の fcgi スクリプトが起動しています。
というメールをいただきました。 素晴らしい! → HikiDoc.pm 公開
元の Ruby 版 HikiDoc も、もうすこし(というかもっと)コードをいじりたいと思いながら、もう半年ちかくたってしまいましたが、変換する HTML を柔軟にカスタマイズできるようにするとか、いつかやりたいと思っています。。。
以前に「私は名もないコーヒーメーカー使ってます〜」とか言ってしまったのですが…実は、Vitantonioというちゃんとしたメーカーさんの物でした(^^;)気づくのが遅すぎました〜。
Vitantonio のデザインはけっこう好き。以前言ってた写真をあらためて見たけど、VSC-300 とかかな?
VSC-300みたいです〜。
VSC-300ってゴールドフィルター付きのだよね? ぜひ一度ペーパーフィルターと飲み比べして感想を聞かせて〜