万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    Supervisor X Tornadoのメモ Python

    いろいろブログ見たけど、ハマリどころを書いてないのでメモしました。ノイズみたいな記事が多すぎ。
    URL: http://d.hatena.ne.jp/anatoo/20120310/1331321778

    普通にインストールせずにファイルとしてSupervisorを置くだけで使えるらしいが、
    「supervisor.medusa」がインポートできない問題の解決策がわからないので、
    インストールはpipで行った。

    pip install supervisor

    この「echo_supervisord_conf」コマンドでデフォルトのコンフィグファイルを出力してくれるらしいので、
    /etc/supervisord.confに保存させる。

    echo_supervisord_conf > /etc/supervisord.conf

    おそらく、/etc配下は権限がないと出来ないので、

    sudo echo_supervisord_conf > /etc/supervisord.conf

    とかでやらないと出来ないでしょう。

    しかし僕はなぜか権限エラーで出来なかったので、

    echo_supervisord_conf > tmp

    いったんカレントディレクトリにtmpとして保存して、

    sudo mv tmp /etc/supervisord.conf

    mvコマンドで移動させるというやり方したw

    そのあとで、「supervisord.conf」。ここを強調してない記事があるので、見落としがちです。

    [include]
    files = /etc/supervisord.d/*.ini

    このように書き換えておきます、「/etc/supervisord.d」配下にある「〜.ini」ファイルを見てくれます。
    [include]の前にもセミコロンがあるのを外しておきましょう。
    「/etc/supervisord.d」というディレクトリが/etcの下にないといけないので

    mkdir /etc/supervisord.d

    を使います。

    supervisord

    でいったん起動します。

    次に、まだTornadoの起動の設定をしてないので、記載します。
    「tornado.ini 」ってファイルを「/etc/supervisord.d」配下に作ります。

    sudo vi /etc/supervisord.d/tornado.ini 
    [program:tornado]
    command=python /hoge_path/facebook.py --port=3000
    numprocs=1
    autostart=true  ; supervisorが起動したら自動的に起動する
    autorestart=true ; 落ちても自動的に再起動する
    user=tornado_usr
    redirect_stderr=true ; エラー出力を標準出力にリダイレクトする
    stdout_logfile=/tmp/tornado.log ; 標準出力をログに取る

    hoge_pathは自分のに置き換えましょう。
    また、
    facebook.pyは起動したいTornadoのPythonファイルですね。

      • port=3000もご自身のに置き換えましょう。

    %(process_num)s という書き方もできるらしいが、この変数をどこに設定するのかがわからないので
    無視しました。
    http://webos-goodies.jp/archives/deploying_tornado_with_supervisord.html#comments
    の記事を書いた人に質問しました。

    記載が終わったら、

    supervisorctl restart
    supervisorctl reread
    supervisorctl add tornado

    でいけるはずですね。

    「supervisorctl status」コマンドで確認できます

    $ supervisorctl status
    tornado                          RUNNING    pid 31712, uptime 0:00:08

    これで僕はさくらのサーバ使ってるけどコンソールを切ってもOKでした。