GitBucketの設定をリセットする場合という記事でwarファイルから簡単にGitBucketを起動して運用してみたことについて言及しました。
しかし、このGitBucket環境。しばらく使っているとなぜか画像が表示されなくなったり、CSSが効かなくなったり・・・。
warファイルを再起動するとなぜか治るので不思議とTwitterにつぶやいたら・・・
@coelacanth java -jar gitbucket.warで実行すると組み込みJettyがリソースを/tmpに展開するのですが、そのファイルがOSで消去されているのではないかと思います。 http://t.co/bU1u7YTjFP
— Naoki Takezoe (@takezoen) July 14, 2014
という助言をいただく。
確かに起動すると/tmp/jetty-0.0.0.0-8080-gitbucket.warというディレクトリに色々展開している模様。
CentOSは/tmpとか/var/tmpなどにおかれたファイルを一定時間更新がないと削除するから確かにこれが怪しい。
というわけで挙動について確認すると、/usr/sbin/tmpwatchというコマンドでファイルを削除しているらしく、
その辺は毎日実行するクロンとして/etc/cron.daily/tmpwatchに定義されている(もしかしてこれ常識?)。
そもそも/tmpに作成するのが間違っているのだが、指定先を変えるオプションなどがわからない・・・。
tmpwatchは-xオプションで除外ファイルを指定できるようなのでこれを指定することに(正しい方法ではない気がするが)。
このファイルを以下のように書き換えて様子見。結果は後ほど。
flags=-umc /usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \ -x /tmp/jetty-0.0.0.0-8080-gitbucket.war -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \ -X '/tmp/hsperfdata_*' 240 /tmp /usr/sbin/tmpwatch "$flags" 720 /var/tmp for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do if [ -d "$d" ]; then /usr/sbin/tmpwatch "$flags" -f 720 "$d" fi done
Please give us your valuable comment