Fabricを使ってWebアプリを自動デプロイする

Fabricを使用してローカルのプロジェクトをGithubにPushしてその後リモート側でGit Pullを実行して、動いているGunicornのプロセスを止めてNginxをRestartさせればよい。

コード例は以下。(Port番号は5000と仮定する)

    #coding: utf-8
    from fabric.api import run,env,local,settings
    from fabric.operations import sudo
    from fabric.context_managers import cd
    import os

    def try_cmd(host_type,cmd):
        run_cmd = host_type(cmd)

    def host_type():
        run("uname -s")

    from fabric.api import env, run
    env.use_ssh_config = True

    env.user = "your_name"
    env.hosts = ["name@your_ip_address"]


    def push():
        with settings():
            try_cmd(local,"git push origin master -f")
            with cd("/var/www/blog"):
                try_cmd(sudo,"git pull origin master")
                try_cmd(sudo,"fuser -k tcp 5000/tcp")
                try_cmd(sudo,"gunicorn manage:app -b 0.0.0.0:5000 -D")
                try_cmd(sudo,"sudo service nginx restart")

Related Contents

Pickup Contents