Your SlideShare is downloading. ×
Linux daemonとsupervisordの美味しい関係
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Linux daemonとsupervisordの美味しい関係

2,053
views

Published on

Supervisordとinit.dの起動の図やらなんやら。 …

Supervisordとinit.dの起動の図やらなんやら。
合わせてこちらもご参照ください。
http://d.hatena.ne.jp/graceful_life/20131201/1385912995

Published in: Technology

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,053
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
16
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Linux daemonと supervisordの美味しい関係 python,RoRのアプリの素敵なデーモン化 @myb1126
  • 2. (Daemon)アプリを作るときに、 覚える事が超たくさん Application framework 色んな言語 セキュリティ データベース apache HTTPD init Kernel
  • 3. 新人に言われた一言 Application framework HTTPD init Kernel initってなんですか?
  • 4. (  Д ) ゚ ゚
  • 5. よくよく考えて見れば昔はシンプルなところからスタートして 全部自分でやらなければならなかった。 ! しかし、考えてみて欲しい。 お前は何を考えて、 $ sudo /etc/init.d/****d restart を 打ってるんだ! ! ! ! しかし、ここで貶すのは簡単だが、今の現状を見つめなおしてみたい。
  • 6. コンフィグだけで 良くなってきてた。 プログラミング Application Webアプリ framework rails WSGI (python) php passenger mod_wsgi mod_php module HTTPD Apache コンフィグ init Kernel ちょっと前まではこんな感じでしたよね
  • 7. 最近は、一介のプログラマが触 る領域は赤線部分ですよね。 (色んなフェーズを飛ばしますが) Application framework HTTPD daemon nginx (rproxy +static file dist) mod_authn framework + その言語用の サーバ Apache init Kernel コンフィグ (他の人の仕事) プログラミング コンフィグ
  • 8. 赤線の部分の話をします。 Application framework mod_authn HTTPD framework + その言語用の サーバ nginx Apache init Kernel コンフィグ(他の人の仕事)
  • 9. 最近の動向 • nginx (えんじんえっくす) • • • 超高速フロントエンドサーバ&リバースプロキシ 情報が多くなってきた。ので、今回は対象外 Apache • • • 認証モジュールが豊富 過去のノウハウでみんな生きてる?有用な情報が少なめ。一時期みんなSSOとかで盛り上がって たのに。(オワコン?) フレームワーク • サーバが乱立&フレームワークごとでノウハウが分散 • 同じ役割を担っているにも関わらず、各情報に中々 • と言うか単一のフレームワークでも死ぬ りつけない。
  • 10. そもそもdaemonとは • daemon • • • Linuxの(Windowsで言うところの)サービス nginx / apache/ sambaなども全部daemon 作り方 • fork、親(fork元)は死ぬ
  • 11. init.d • Linuxの起動時に走るプロセス(init)から呼び出されるスクリプトの配置ディ レクトリ • 便利なユーティリティ(シェル関数)が用意されている • • • ubuntu /lib/lsb/init-functions centos /etc/rc.d/init.d/functions やってること • 一般的な操作の定義:start/stop/restart/status等のインターフェース を提供 • pidfile名やオプションをコマンドオプションなどで渡す。
  • 12. supervisord • 汎用のdaemon化ツール • daemon共通の設定(ログファイル等)を扱い、プロセスをdaemon化する。 • やってること • forkした後、コマンドでオプションを渡して起動 • 設定は、iniファイルに記載 • 面倒くさいお決まりの起動スクリプトを書かなくて良い!!! • (但しsupervisordのinitscriptは、自分で配置しなければならない。 ※後述)
  • 13. init.d init ****d(親) ****d(子) fork fork
  • 14. init+supervisord init supervisord ****d fork iniファイル 読み込み fork
  • 15. ****dって? • 各フレームワークごとにサーバがある。 • python:WSGI仕様のサーバ:gunicorn,uwsgi 等 • Ruby on Rails:unicorn,thin,passenger,mongrel  等 • その他自作プログラムでももちろん可能! • プロトタイピング時、実運用時プロダクトの特性に合わ せて、サービスを作ろう!
  • 16. 個人的おすすめ • 各言語 • • • python: gunicon ruby on rails : unicorn 加えて、以下の機構を利用する。 • unicornherder <https://github.com/ alphagov/unicornherder>
  • 17. unicornherder って何? • gunicorn / unicorn のラッパー • WSGI準拠のpythonアプリと、railsアプリを同様の設定で動かすこと が出来る!!! • 起動方法 • • unicornherder -u (gunicorn ¦ unicorn ¦ gunicorn_django) ̶ pidfile (pidfile) ̶ hogehoge 参考 • zero-downtime deployments with unicorn and supervisors <http://bit.ly/InqWFu>
  • 18. アーキテクチャが 統一できました!! Apps on framework Application 自作App ! ! redmine等 framework gunicorn unicorn mod_authn HTTPD unicornherder nginx Apache supervisord init Kernel 構築手順は教えるの面倒くさいけど、
  • 19. ※ • supervisord は、pipから導入すると、init scriptを自分で配置しなければならな い。 • • <https://github.com/Supervisor/initscripts> ここまでの内容を元に、試してみてね • • • 起動スクリプト /etc/init.d/supervisord 設定ファイル  /etc/sysconfig/supervisord debugは、shellなのでお決まりの方法で出来ます。 • sh -x /etc/init.d/supervisord (start¦restart¦stop) • (これが言いたいがために超遠回りした。。。)
  • 20. まとめ • 最近調べてた&教えなきゃいけないインフラ?周 りのことについて共有 • /etc/init.d/***d はdaemon起動スクリプト • pythonやRoRアプリのデーモン化は、 supervisord + unicornherderを使うと便利 • Linuxの常識を覚えたり、アーキテクチャの統一し たり、shell scriptなんかも大事!
  • 21. ご閲覧ありがとうございました。 Happy Daemon Life ! http://bit.ly/1j6tDsR