Macにfabricを入れてherokuへデプロイしたい時につまずいた。
やろうとした事
fablicを使ってherokuにある本番へデプロイをしたい
環境
OS: OS X El Capitan 10.11.6 python : 2.7.0
pipをインストール
まずこのPCにはpipが入っていなかったのでpipをダウンロード。
sudo easy_install pip
動作確認
pip -V pip 9.0.1 from /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (python 2.7)
fabricをインストール
pip install Fabric
インストールの確認
pip freeze asn1crypto==0.24.0 bcrypt==3.1.4 cffi==1.11.2 cryptography==2.1.4 enum34==1.1.6 Fabric==1.14.0 idna==2.6 ipaddress==1.0.19 paramiko==2.4.0 pyasn1==0.4.2 pycparser==2.18 PyNaCl==1.2.1 six==1.11.0
無事にfabricが入ったのでfabfileをつくる
デプロイのためのfabfile.pyをつくる
# -*- coding: utf-8 -*- from fabric.api import * from fabric.decorators import runs_once from datetime import datetime env.hosts = ['00.000.000.0'] env.user = 'ec2-user' env.key_filename = '~/.ssh/deploy_file.pem' env.project_root = '../' env.build_path = project_path env.config_path = project_conf_path env.branch = 'master' env.archive = '' env.server_api_dir = path @task @runs_once def build_play(): timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") env.archive = "api-%(timestamp)s.tar.gz" % {"timestamp":timestamp} with lcd(env.project_root): local("/usr/local/bin/activator clean stage") local("tar cvfz %(archive)s target" % {"archive":env.archive}) put("%(archive)s" % {"archive":env.archive}, "%(dir)s/" % {"dir" : env.server_api_dir}) local("rm %(archive)s" % {"archive":env.archive}) @task @runs_once def unck(): run("sudo rm -Rf %(dir)s/target" % {"dir" : env.server_api_dir}) run("tar zxvf %(dir)s/%(archive)s -C %(dir)s" % {"dir" : env.server_api_dir, "archive":env.archive}) @task @runs_once def deploy(branch=env.branch): execute(build_play) execute(unpack)
ここまでは順調
問題発生
fabricは問題なくお登勢てるにもかかわらずfabコマンドが動かない
deployディレクトリに移動してfab deployを叩くも失敗 どうしたもんか。。。 heroku側の設定も問題ないし、何より上のコマンドで先輩はdeployできている。
もうちょい調べる必要がありそうです。