railsアプリ OS X Serverでのsession爆発&log肥大化対策


今週から、OS X ServerでRailsアプリの運用を開始した。
(ちなみにRuby1.82&Apache1.3&FastCGI&MySQL4.1)
そうするとRAILS_ROOT/log/*.logと、RAILS_ROOT/tmp/sessions/ruby_sess*が気になってくる。
そんな訳で早速対策。


session爆発は下記とAgile Web Development with Rails邦訳本を参考に。
debiancdn | AWS, Content Delivery Network and Debian

%vi /Users/hogehoge/bin/rails.session_clear.sh

#!/bin/bash
find /Users/hogehoge/rails/myapp/tmp/sessions/ -name "ruby_sess*" -cmin +60 -exec rm {} ?;

%chmod +x /Users/hogehoge/bin/rails.session_clear.sh

決め打ち。はは(´▽`)
で、cronに登録して同様に一時間毎にまわす事に。


log肥大は下記を見ました。
ログの肥大化対策 - おさかな学習帳


が、OSXにはlogrotateが見当たらず、調査。
/etc/periodic/weeklyの500.weeklyにlogrotate相当の記述を発見。
apacheの所をパクった。

%vi /Users/hogehoge/bin/rails.logrotate.sh 

#!/bin/bash
cd /Users/hogehoge/rails/myapp/log
 for i in fastcgi.crash.log production.log; do
if [ -f "${i}" ]; then
      echo -n " $i"
     if [ -x /usr/bin/gzip ]; then gzext=".gz"; else gzext=""; fi
     if [ -f "${i}.3${gzext}" ]; then mv -f "${i}.3${gzext}" "${i}.4${gzext}"; fi
     if [ -f "${i}.2${gzext}" ]; then mv -f "${i}.2${gzext}" "${i}.3${gzext}"; fi
     if [ -f "${i}.1${gzext}" ]; then mv -f "${i}.1${gzext}" "${i}.2${gzext}"; fi
     if [ -f "${i}.0${gzext}" ]; then mv -f "${i}.0${gzext}" "${i}.1${gzext}"; fi
     if [ -f "${i}" ]; then mv -f "${i}" "${i}.0" && if [ -x /usr/bin/gzip ]; then gzip -9 "${i}.0"; fi; fi
     touch "${i}" && chmod 666 "${i}" && chown www:www "${i}"
   fi
 done
  if [ -f /var/run/httpd.pid ]; then /usr/sbin/apachectl restart; fi
 echo ""

%chmod +x /Users/hogehoge/bin/rails.logrotate.sh

で、これをcronに登録して、週1回、深夜4時30分頃にローテーションしてgunzip。
FastCGIを良しなにしとかないといけないのかな?とりあえず後回しで。