ユーザ用ツール

サイト用ツール


fabric

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
fabric [2014/09/05 10:38] – 作成 nullponfabric [2014/09/11 05:21] (現在) – [サーバプロセスが起動できない] nullpon
行 1: 行 1:
 ====== fabric ====== ====== fabric ======
  
-python製のデプロイツール+python製のデプロイツール。複数のサーバに対してアップロードしたり、複数のサーバで一気にコマンドを実行したりできる。
  
 ===== インストール ===== ===== インストール =====
行 9: 行 9:
     $ easy_install pip     $ easy_install pip
     $ pip install fabric     $ pip install fabric
 + 
 +===== 接続ユーザ情報の設定 =====
 +
 +sshでサーバを操作するのでssh情報が必要なのでどっかに書かないとだめ
 +
 +==== fabfile.pyに直接設定を書く ====
 +
 +<code python>
 +from fabric.api import env
 +
 +env.key_filename = ['~/.ssh/id_rsa']
 +env.user = 'nullpon'
 +env.password = 'nullpon_password'
 +</code>
 +
 +==== .ssh/configを読むようにする ====
 +
 +<code python>
 +from fabric.api import env
 +
 +env.use_ssh_config = True
 +</code>
 +
 +fabricを実行するマシンから操作対象のマシンへ。鍵認証のときはパスフレーズなしにするなり、agent起動するなりでno pass実行可能にしておくと良い。
 +
 +
 +===== タスクのファイル分割 =====
 +
 +<code>
 +$ fab content.deploy   # 静的コンテンツデプロイ
 +$ fab app.deploy       # アプリのデプロイ
 +</code>
 +
 +のようにタスクを呼べるようにする方法
 +
 +pythonスクリプト用のディレクトリを掘って
 +
 +<code>
 +fabfile.py
 +fabtask/
 +  content.py
 +  app.py
 +  __init__.py
 +</code>
 +
 +ファイルの中身は…
 +
 +<code python>
 +# fabfile.py
 +import fabtask.content as content
 +import fabtask.app as app
 +
 +# fabtask/content.py
 +from fabric.api import task
 +
 +@task 
 +def deploy():
 +    pass
 +
 +
 +# fabtask/app.py
 +from fabric.api import task
 +
 +@task 
 +def deploy():
 +    pass
 +</code>
 +
 +===== QA =====
 +
 +==== サーバプロセスが起動できない ====
 +
 +以下のようにしても起動できない
 +
 +  run('node hoge.js >hoge.log &')
 +
 +sshの切断時に端末からsighupが送られて速攻でプロセス終了してるのが原因なので、ssh接続時に疑似端末を作らないようにする
 +
 +  run('node hoge.js >hoge.log &', pty=False)
 +
 +nohup付けても何故か効かなかった…
fabric.1409913524.txt.gz · 最終更新: 2014/09/05 10:38 by nullpon