一昨日の設定だと、日記アカウントの数だけ 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ってゴールドフィルター付きのだよね? ぜひ一度ペーパーフィルターと飲み比べして感想を聞かせて〜