LoginSignup
4
3

More than 5 years have passed since last update.

gaffer + fabric で簡単デプロイ環境

Posted at

半分個人メモというかブログの下書き。
python 界隈でアプリケーションのプロセス管理と行ったら supervisord が有名ですが
gunicorn のドキュメントを読んでいたら gaffer という似たようなツールを発見したので fabric と併せて使ってみたテスト。

インストール

$ pip install gaffer

簡単。

Procfile が使える

heroku をいじったことがある人ならピンと来るかと思いますが
Procfile と呼ばれるものをプロジェクト内に置いて、そいつを読ませることで指定した挙動ができます。
gunicorn で動かす場合はこんな感じ

gunicorn: gunicorn main:app -c gunicorn.conf.py

とりあえず使ってみる

とりあえず試したければ $ gaffer start で同ディレクトリの Procfile を読み込んで内容を実行してくれる。

デーモン化したければ $ gaffer load を実行することで Procfile をデーモン担当の
gafferd に送ってくれます。

この時、 gafferd がデーモン状態で起動していないと ConnectError が帰ってくるので
OS 起動時に gafferd --daemon が走るようにしておくこと。
(ここで小一時間詰まった)

fabric と連携

連携というかなんというか。
とりあえず以下でデプロイができます。

fabfile.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from fabric.api import local, run, env, cd, hosts

CODE_DIR = "/お前の/ディレクト/リ"
env.user = "ユーザー名"


@hosts('localhost:5959')
def commit():
    message = raw_input("Enter a git commit message: ")
    local("git add . && git commit -m \" %s \"" % message)
    local("git push github master")


@hosts('さーばー')
def deploy():
    with cd(CODE_DIR):
        run("git pull origin master")
        #再読み込み
        run("gaffer unload")
        run("gaffer load")

いちいち unload しなくていいんじゃないかなーと思いつつこれから検証してみます。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3