Archive for 6月, 2008

, | No Comments | 6月 25th, 2008

Railsを起動するとき、いつもPoundの後ろで複数ポートで振り分けっていうのをよくやっていたのだけど、unix socket で nginx の後ろで thin を動かすと早いらしいとのことで、試してみた。

環境はOSX

thinのインストール

$ sudo gem install thin
$ sudo gem install eventmachine --source http://code.macournoyer.com

2行目は、thinをsocket指定して動かす時に eventmachin の 0.11.0 以上が必要とのことで、OSXでデフォルトで入らなかったので入れた。

インストールはこれで完了。

nginxのインストール

Portで入るのが 0.5.1 ?とかで、ちょっと古かったので公式サイト(http://nginx.net/)から現時点で安定版の 0.6.31を取得してインストール

$ wget http://sysoev.ru/nginx/nginx-0.6.31.tar.gz
$ tar xvzf nginx-0.6.31
$ cd nginx-0.6.31
$ ./configure --prefix=/usr/local
$ make
# make install

で、無事インストールが終わるはず。configure で pcre チェックされてたので、 pcre とか入ってない場合はいれたほうがよさげ。VirtualHostの設定するときに使われるのかな?

nginxの設定

configure のオプションで –prefix=/usr/local とした場合、設定ファイルは /usr/local/conf/nginx.conf に生成されていて、デフォルトでこれを読みに行きます。

編集します。最低限の設定だけ。

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  0;

    upstream backend {
        server unix:/tmp/thin.0.sock;
        server unix:/tmp/thin.1.sock;
        server unix:/tmp/thin.2.sock;
        server unix:/tmp/thin.3.sock;
    }

    server {
        listen       80;
        location / {
            proxy_pass http://backend;

        }
    }
}

これで、80番ポートにきたものを、unix socket の /tmp/thin.[0-3].sock で動いてる何かに転送出来るようになりました。

以下のように、-t をつけて設定ファイルの文法チェックをします。OKなら以下のようなメッセージが出ました。

$ sudo /usr/local/sbin/nginx -t
2008/06/25 01:05:12 [info] 14511#0: the configuration file /usr/local/conf/nginx.conf syntax is ok
2008/06/25 01:05:12 [info] 14511#0: the configuration file /usr/local/conf/nginx.conf was tested successfully

thinの設定(起動)

Rails でしか使ったことないので、以下 Rails アプリのディレクトリ直下で叩いてくだしあ。コマンドに引数渡すだけだけど、先ほど nginx.conf で指定した unix socket で動かす。

* s は サーバ4つで、–socket で /tmp/thin.sock とするとサーバの数だけ /tmp/thin.n.sock が出来るようだ。

$ thin start -s 4 --socket /tmp/thin.sock 

nginxの起動

以下のコマンドで起動します。ぼくの環境だと、何も標準出力されずに起動しました。起動したら lsof -i:80 とかして80番で立ち上がってることを確認します。

$ sudo /usr/local/sbin/nginx

これで動いてるようだ。

この状態で、裏を切ってみる。Rails だと、thin の pid ファイルが tmp/pids/ 以下に出来ますんで、今 /tmp/thin.[0-2].sock で動いてるところを切ってみます。

$ kill cat `tmp/pids/thin.0.pid`
$ kill cat `tmp/pids/thin.1.pid`
$ kill cat `tmp/pids/thin.2.pid`

これで3だけが動いてる状態になりましたが、正常につながっているようです。ちゃんと振分けられてるみたいですねー。

Pound に比べていいなって思うところが、バックエンドが落ちたときの挙動です。Pound は Alive で指定した秒数でポーリングでバックエンドを死活監視をしてるみたいなので、後ろが落ちちゃったあと次のポーリングまではエラー画面が出てしまいます。

nginx で今回試してみた感じ、後ろが落ちても前にエラーが表示されることはないみたい?全部落ちると、もちろんエラー画面が出ますけど。

参考URL: http://wiki.codemongers.com/Main (nginx の wiki)

中国行ってるとき、家のサーバ落ちたら終わりかと(‘A`)

| No Comments | 6月 16th, 2008

 遅ればせながら、CDをamazonで注文してみた。mana様プロデュースで、ヴァンパイアの騎士のOPになってるようです。明後日届く予定です。

| No Comments | 6月 11th, 2008

 土曜日、渋谷のBunkamura で開催されていた薔薇空間へ行ってきた。薔薇ってこんなに種類あるんだ?てくらいたくさんの薔薇の絵を見ることが出来ます。

 薔薇はあまりその辺じゃ見かけないけど、生活の中には「薔薇」という花は綺麗なものっていう位置づけで結構存在してると思います。その辺にありふれた花じゃないからこそなのかも。

 絵を見ると、ひとくちに薔薇と行っても全然違う花に見えるものもあって新鮮です。植物の絵って小学生のときと大学の実験くらいでしか書いたことないけれど、ずっと薔薇の絵を書き続ける情熱っていうのはすごい。

 薔薇といったら棘みたいなイメージが強いんですが、その辺も含めて緻密に描かれているので足を運ぶと薔薇の美しさを再認識できるかも。

 薔薇と行ったら、MALICE MIZER の薔薇の聖堂が頭に浮かんでCD をiMacに入れたものの、認識されず取り出しも出来なくなったね(‘A`) 再起動しないととれないか… iMacカコイイんだが、困ったものだ。

| No Comments | 6月 10th, 2008

先々週の日曜日、芸術都市パリの100年展 へ行ってみた。「一滴の水のための一滴の涙」っていう絵にかなり魅入ってしまいました。水を持った女性が怖いくらい綺麗というか、怖すぎて綺麗なのか。

色々な絵が楽しめるんですが、昔の人は絵画、詩、戯曲、政治など様々な分野に渡って有名な人が多くてすごいなって思います。今でもそういう人はいるけれど、昔は今よりきっと何をするにも気軽にっていう風ではなかったんじゃないかなと思うとなおさら。

それよか、今みたいにTVやラジオやネットなどで情報が急速に広まるような世の中でなくても、評価される人はされて有名になるんだなーっていうことが面白いと思います。

ボードレールって名前しか知らなかったけど、さわりだけでも知ってみようかなと思います。

この展覧会は上野の東京都美術館だったんだけど、上野は美術館がたくさんあってあと動物園もあってゆっくり行きたいなーと思ってます。家から近いのに今まで全然行ってなかったよ。

, | No Comments | 6月 10th, 2008

 Macでzshを使ってみた。漢のzsh っていうのを参考に設定してみた。

 まず、デフォルトのログインシェルを変更する。

 システム環境設定 -> アカウント -> 自分のアカウントで Ctrl + Click -> 詳細オプション -> ログインシェルを /bin/zsh

 とすればおk。

 上記URLをもとに設定ファイルを書いてみたけど、よく分かってない。デフォで Bash の Ctrl + R みたいな感じな設定なんだけど、慣れたら速そう。慣れるまでストレスになりそう。

autoload colors
colors
case ${UID} in
0)
  PROMPT="%B%{${fg[red]}%}%/#%{${reset_color}%}%b "
  PROMPT2="%B%{${fg[red]}%}%_#%{${reset_color}%}%b "
  SPROMPT="%B%{${fg[red]}%}%r is correct? [n,y,a,e]:%{${reset_color}%}%b "
  [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] &&
    PROMPT="%{${fg[white]}%}${HOST%%.*} ${PROMPT}"
  ;;
*)
  PROMPT="%{${fg[red]}%}%/%%%{${reset_color}%} "
  PROMPT2="%{${fg[red]}%}%_%%%{${reset_color}%} "
  SPROMPT="%{${fg[red]}%}%r is correct? [n,y,a,e]:%{${reset_color}%} "
  [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] &&
    PROMPT="%{${fg[white]}%}${HOST%%.*} ${PROMPT}"
  ;;
esac
 
 
export LSCOLORS=gxfxcxdxbxegedabagacad
alias ls='ls -G'
zstyle ':completion:*' list-colors ${(s.:.)LSCOLORS}
autoload -U compinit
compinit
PROMPT="%/%% "
PROMPT2="%_%% "
SPROMPT="%r is correct? [n,y,a,e]: "
 
 
case "${TERM}" in
kterm*|xterm)
  precmd() {
    echo -ne "\033]0;${USER}@${HOST%%.*}:${PWD}\007"
  }
  ;;
esac
 
# 履歴を10000件保存する
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt hist_ignore_dups     # ignore duplication command history list
setopt share_history        # share command history data
 
# viのキーバインドになる
bindkey -v
 
# 履歴検索 Ctrl+P, Ctrl+N でたどれる
autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^P" history-beginning-search-backward-end
bindkey "^N" history-beginning-search-forward-end
 
# cd が pushd になる
setopt auto_pushd
 
# 自動補完設定
autoload predict-on
predict-on
 
# alias設定
download the hurt locker  
UA-682965-1