CentOSのPostgreSQLを9.2にアップグレードする

CentOS6系だとyumでPostgreSQLをインストールすると8.4が入ります。僕もこれで運用していました。ところが全文検索がデフォでサポートされているのは9.1以降なのでアップデートしたいという話です。

前もチラッと書きましたが、マルチバイト文字に対応するには若干コードを修正する必要があるので、自前でビルドという事になります。RPMを適当に探してきてというわけにはいきません。

またyum管理下のPostgreSQLを自前ビルドのバージョンで更新ということで、明らかに面倒そうなのでほったらかしていたのですが、先ほど重い腰を上げて作業したのでログを残しておきます。

Continue reading “CentOSのPostgreSQLを9.2にアップグレードする”

nginxでメンテナンスモードっぽい事をする

今まで自分のサーバでまともなメンテナンスをした事がなかったのですが、PostgreSQLをRPMの8.4から自前ビルドの9.2にアップデートしたいということで、そうすると結構な時間サービスを止めるので、その間メンテナンスページを表示したいと言う事です。

Continue reading “nginxでメンテナンスモードっぽい事をする”

uWSGIのログローテートが出来てなかった話

先日uWSGIのログをfluentdで取り始めたと書きましたが、寝て起きてみると早速問題が発生していて、zabbixにデータが送られてなくてグラフが空の状態になっていました。何で、と思ってみて見るとuWSGIのログが空になっていました。どうもログローテートが走った後にuWSGIがログを開き直しておらず、新しいファイルが空のままになっていたようです。これは酷い。

それでどうするんだっけと、/etc/logrotate.d/の他のファイルをチラチラ見てると、HUP送ったり再起動したりするのが定石っぽいので、uWSGIでもそうするのかなと思ってuwsgi –helpを読んでいると、

--touch-logreopen

というオプションを見つけました。このオプションにファイルを指定すると、そのファイルを監視して変更されたタイミングでログを開き直すというものです。再起動するよりコチラの方が良さそうなので、uwsgi起動スクリプトを少し修正しました。面倒なので変数の内容は割愛します。最後に先ほどのオプションを付け加えただけですね。

$ daemon --pidfile $PIDFILE $PROG --pidfile $PIDFILE --uid $UWSGI_USER -s $UWSGI_ADDRESS --pp $UWSGI_APP_ROOT --module wsgi -d $UWSGI_LOG --logfile-chown $UWSGI_USER --touch-logreopen $UWSGI_LOG.trigger

そしてlogrotateの設定ファイル中にpostrotateで、–touch-logreopenで指定したファイルを更新するようにします。

/path/to/uwsgi.log {
    daily
    rotate 7
    missingok
    notifempty
    compress
    sharedscripts
    size 1M
    postrotate
        touch /path/to/uwsgi.log.trigger
    endscript
}

以上でuWSGIのログがログローテートで途切れなくなりました。fluentdを使い始めたお陰で早速問題を修正出来て良かったです。

あと適当にググった感じだとfluentdのin_tailは、ログローテートにも対応してるとの事ですが、まだ動作は確認してません。明日のログローテートを待って、まだ問題があれば追記したいと思います。

2013.01.27 追記
in_tailばっちり動いていました。

nginxのngx_cache_purgeで404が出てハマった話

先日WordPressをnginxのプロキシキャッシュで高速化してみました。その後、新しい記事の投稿時などにキャッシュを消す為にngx_cache_purgeモジュールをインストールしました。それで万事解決と思っていたのですが、nginxのエラーログを見ていて、purge時に404エラーが返っていて、キャッシュが削除できていない事に気づきました。結果的には設定がミスっていただけなのですが、かなりハマったのでメモしておきます。

Continue reading “nginxのngx_cache_purgeで404が出てハマった話”

コマンドラインでデカ文字を出力する

tweepyのREADME見たいに名前を大きな文字で出力したいなぁと思って調べてみました。元々bannerコマンドは知ってたんですけど、これは少し違います。(見た目が)

$ banner hello

 #    #  ######  #       #        ####
 #    #  #       #       #       #    #
 ######  #####   #       #       #    #
 #    #  #       #       #       #    #
 #    #  #       #       #       #    #
 #    #  ######  ######  ######   ####

Continue reading “コマンドラインでデカ文字を出力する”