Ubuntu 12.04 LTSでApacheからnginxに乗り換える。

年の瀬に研究室にきたので、研究室に残してたブルーノちゃん(サーバの名前)のWebサーバをApache2からnginxに移行してみました。
まずはApache2のアンインストールです。
SE'S BOOK: Debian 完全にApache2をアンインストールし、再インストールする

つぎにWordPress用の設定。
VPS(Ubuntu 12.04)でWordPress環境(しかもnginx)を構築する。 | The intersection
上記サイトの設定をApacheからの引き継ぎで直したら無事動きました。

コマンド等は以下のブログがまとまっていてわかりやすかったです。
Ubuntu Server×Nginx本体の設定 | ID-Blogger

ググっただけで何もしてないし、php-fpmの設定とかあまりに簡単で拍子抜けしました。Raspberry PiでPerlとかも試してよさげならDTIのVPSもこっちに移行しちゃうかもしれません。nginx側でApacheからの移行が簡単にできるようになってるのもポイント高いですね。

それではよいお年を!

followingとfollowerをリストに突っ込むスクリプトのさらに続き。

forkでApacheのタイムアウト時間無視できるようにしてたつもりが、普通にkillされてたので処理を書き直しました。
あと、DTIのVPSで公開DNSサーバを踏み台にされてるユーザがいるそうで、それで周りのサーバもみんな不安定になってるみたいです。私はBIND系入れてないのですが、とりあえずチェックだけはしときました。
色々工夫したのですが、サーバへの負荷と処理の煩雑さを見るとコールバックで処理完了通知を書くのは無理なので諦めました。
一番楽な方法として「処理の完了通知をDMかツイートで行う」というのがあるのですが、ユーザの意思に反する投稿を行うのは私のポリシーに反するので、リストの説明文に処理結果を出力することにしました。
とりあえず5000人の配列で3600人くらいまで入れられたのでもういいかなって気がします。前にも書いたけど、15分スリープ処理とか、途中から再開する機能の実装はそこまでする義理がないのでやりません。メール通知版だけ15分後に再開させるようにしました。通知しない版は終了確認で負荷がかかるのと、むやみにプロセス増やしたくないので切り捨てました。
retrorocket/list

あと、今回色々あってgithubのリポジトリ全部消そうか悩むレベルで本当に懲りたのと、リアルでもご指摘受けたのでgithubのREADMEにライセンスについて書いておきました。BSDライセンスが自分の希望と組み合わせて使えるのかわからないのですが、とりあえず「list関数は流用したら著作権表示をお願いする」形式で行きたいと思います。無理そうなのでBSDライセンスだけにしました。
私がgithubにソースを載せているのは、ロジックに怪しい部分がないとかそういうことの証明に使ってるというのと、Twitter API周りはモジュールの使い方とかサンプルみたいなものがないと取っ掛かりが厳しいと思うので、ちょっとプログラム書いてみたいけどよくわからないと思ってる方向けに公開しています。自分が色々な方の書いたコードに助けられてる面が大きいので、自分も力になれればいいなーっていう気持ちです。まあモジュール叩いてるだけだから何もしてないっちゃしてないんですけど…。
プログラムすらすら書ける人からみたらひどいコードですが、このソースコード書くまでに私もそれなりに時間をかけて学習していて、そのままコピペされたのを使われてサービス公開されたらさすがに凹むので勘弁してください。

あと、人のコードを流用して使うときはロジックと環境をちゃんと理解してから使って欲しいなぁと思いますし、自分も人のコード使うときは理解して使いたいなと思います。

フォロワーを全員(5000人)リストに突っ込むスクリプトの続き。

処理に時間かかりすぎてタイムアウトしてる方が多い印象だったので、処理の終了をメールで知らせる機能を実装しました。(まだリリースはしてません。あとで差分のコード追記しておきます。)
色々迷走した結果、結局一番最初に実装したmojoliciousのmailプラグインでメールを送るだけ、という何の面白みもない仕様になりました。ちなみにfavicoのメールフォームもこれを使っています。

$self->mail(
        to      => 'postのパラメータで受け取ったアドレス',
        subject => 'タイトル',
        data    => '本文' ,
        from    => '差出人のメールアドレス'
);

ザクリ!グサリ!ドチャリ・・・町は一瞬にして血に染まり・・・

サーバのディスク使用量が上限達成してた件。

DTIのVPSからスクリプト打ったら結果が出力されないので、syslogを見てみたら22日の21時頃からログが綺麗に記録されてませんでした。
いやなよかんがしたので、df -hで調べてみたら、完全にディスクの使用上限(50GB)を使い切っててファッ!?ってなりました。
(ServersMan@VPSなら /dev/simfs )

メールボムでも食らったかと思ったのですがそうでもなさそうだし原因が見当がつかなかったので、以下の方法でどこが問題なのか調べてみることにしました。
linuxでディスクがフルになったときの調査方法 du df – Qiita [キータ]
/var/logが50GB使ってるというアホみたいな数字が出てきたので、中身を見てみたらxconsole.logが50GBまで膨れ上がってました。
sendmail-binが1秒毎に延々エラーを起こしてたようなのですが、どうもcrontabの実行結果がfaultだったのでメールを送ろうとしたらそれがコケて、そのコケたのをどうにかしようとしてたらしいです。
sendmail側の設定を弄ったら解消出来ました。よかったよかった。

おかげでupicoとメールフォームは完全に使えなかったようです。ご迷惑をおかけしました。
これを機会にlog系統の設定をちゃんと見直そうと思います。

ちなみに21時頃は秋葉原で買い物したりゲーセンでグルコースしたりナツゲーさんにちょっとだけおじゃましたりしてました。
帰ってきたのが23時位でサーバ異常に気づいたのが24時、復旧が24時50分だったので、復旧に1時間弱かかったことになります。もうちょっと早く解決したかったですね。

あと、裏塔劇はシューティング技能検定を開幕から1時間ほど観戦してましたが、安置があったり押し出して相手を殺してたり見ててすごい楽しかったし熱かったです。
なぜか宇宙大作戦チョコベーダーの時と同じ雰囲気を感じました。

フォロワーを全員(5000人)リストに突っ込むスクリプト。

作った奴に頼んだら作ってくれるだろって発想が湧いてくるあたりほんとゆとってんなーすごいなーって思いました。(KONAMI

TimeLine Copier – フォローしてる人をリストにコピーするツール
retrorocket/list
まあつくったんだけど。

せっかくなので1年ぶりくらいにRubyをさわろうかと思います。CSV処理くらいしかやったことないけど。

あと、このブログのタイトルとかの元ネタになってるモンスーノが最終回を迎えてからもう3ヶ月ですね。
WP3.8の管理画面がめっちゃくちゃコアテックっていうかチェイスさんみたいな配色なのでなんだかしんみりしてしまいました。
モンスーノ終了で空いた心の穴を埋めるためにガイストクラッシャーを見ていますが、やっぱり物足りないですね。