ペパボの教科書が届きました。
価格:1,575円(税込)
ペパボの教科書が届きました。
データベースサーバをChefで構築することを行っていて、そのサーバにバックアップスクリプトを撒いて併せてcronで定期的にバックアップを行わせることを行いたかったのでその際のメモです。
ここに全てが記載されていますがchefでcron設定を行う場合、以下の様な記述をrecipeに記載することで実現できます。
cron "Backup script" do user "remper" command "/bin/sh /home/foo/backup_script" hour "3" minute "55" end
上記の様な記述だと、
remper
ユーザのcronに設定/bin/sh /home/foo/backup_script
を意味していることになり、Chefを適用したサーバには、
$ whoami remper $ crontab -l # Chef Name: Backup script 55 3 * * * /bin/sh /home/foo/backup_script
とcronが設定されます。
そして続けて新しく立ち上げた時のユーザ認証と外部ホストから接続できる様にする設定を忘れていたのでメモ...。
mongodb.conf
の設定を以下の様にする
bind_ip = 127.0.0.1
が有効になっていてMongoDBと同じホストからのみ接続できる様になっているので無効化#auth = true
となっていてユーザ認証が無効になっているのでこれを解除してユーザ認証を有効化滅多にやらないので忘れる...。2回調べたのでメモする。
foo_production
データベースに追加する場合$ mongo MongoDB shell version: 2.0.6 connecting to: test > use foo_production > db.addUser("foouser", "foopassword");
%s/ *$//
こういうのが無意識で出てこないのが情けない。
といってもスマートフォンアプリじゃないのが僕らのやり方です。
YouTube動画を連続再生できるWebアプリ REMP(http://www.remp.jp/hello) がスマートフォンビューに対応しました。
PC上で作成したプレイリストをそのままスマートフォンでも確認できて再生もできます。是非お試しください!
unicornを無停止で再起動(新しい設定をリロード) すなわちgraceful restartさせるのにはマスタープロセスに対して kill -s USR2
すると薄ら理解していたのですが、そのためにはきちんと設定がいるのでその際の対応と、実際に行った際に観察したプロセスをメモしておきます。
まず、設定しているunicorn.confには以下の設定を記載しておきます。
よく参照されているunicorn.conf.rb の中でコメントアウトされている辺りを有効にする必要があります。
また、リスタート時にGemfileのパスを強制的に指定させる様にしているのは、graceful restartさせた後に新しいGemfileの更新を適用させるためです。
上の記述がある状態でunicornを起動していれば、USR2シグナルをmasterのプロセスに送るとgraceful restartできます。
試しに手動でプロセスをkillしてみます。まずは現状を確認。masterのプロセスは7864であることが確認できます。
remper 7864 66.2 7.1 320460 72732 ? Sl 23:11 0:05 unicorn master -c config/unicorn.conf -E production -D remper 7876 0.0 6.7 320460 69156 ? Sl 23:11 0:00 unicorn worker[0] -c config/unicorn.conf -E production -D remper 7880 0.0 6.7 320460 69148 ? Sl 23:11 0:00 unicorn worker[1] -c config/unicorn.conf -E production -D
この状態から、master processをkillしてみます。
$ kill -s USR2 (unicorn master processのPID, ここでは7864)
とすると、現行のmasterが新しいmasterをforkします。
(下のプロセス一覧だと7908というPIDが該当)
remper 7864 15.2 7.1 320460 72900 ? Sl 23:11 0:05 unicorn master (old) -c config/unicorn.conf -E production -D remper 7876 0.0 6.8 321488 69744 ? Sl 23:11 0:00 unicorn worker[0] -c config/unicorn.conf -E production -D remper 7880 1.2 7.0 320896 71576 ? Sl 23:11 0:00 unicorn worker[1] -c config/unicorn.conf -E production -D remper 7908 57.0 2.2 84032 23164 ? Rl 23:11 0:00 ruby /〜/releases/11/vendor/bundle/ruby/1.9.1/bin/unicorn -c config/unicorn.conf -E production -D
そして、いままでのmasterから生えていたworkerが無くなって、新しいworkerが新しいmasterから生えてきます。
下の一覧だと unicorn worker[(0|1)] というプロセスのPIDが上のPID一覧のものと換わっているのがわかります。
remper 7908 44.6 7.1 320580 72736 ? Sl 23:11 0:05 unicorn master -c config/unicorn.conf -E production -D remper 7922 0.0 6.7 320580 69116 ? Sl 23:11 0:00 unicorn worker[0] -c config/unicorn.conf -E production -D remper 7926 0.1 6.7 320580 69112 ? Sl 23:11 0:00 unicorn worker[1] -c config/unicorn.conf -E production -D
ということで、unicorn.confに適切な設定を記載することでgraceful restartさせることができました。
そして、もろもろこの辺り調べていると大抵私が所属しているペパボのエンジニアの方のブログにぶつかって便利。そして感謝。
Unicornのgraceful restartで少しハマった件 - blog.tnmt.info
はてなブログから移設した際にgraceful restartのスクリプト例が崩れていたのでgistで貼り直しました。
気温差が激しくて微妙に調子の悪い一週間だった。本当に微妙だったので来週はすっきり過ごしたい。
1995年に収録されたスティーブ・ジョブズのインタビュー動画が公開されていたのを電車の中で見た。
インターネットとオブジェクト指向がキーワードで、あとこの時点でインターネットを利用した購買が革命を起こしていくということを的確に指摘されていた。
NeXTSTEP (そしてObjective-C) がベースとなってMacOS Xになって、それが今のiPhone OSにも受け継がれる系譜になっている訳で全て95年の時点で見えていたのかなと思うと興味深かった。
最近のコメント