すでに作ったherokuのアプリケーションに対してデプロイする
チュートリアルなど各所の説明をみていると、heroku createからはじめて、新しくアプリを作ってからデプロイする方法はよく載っているけれど、
そんなことしてたらあっという間に無料枠5つ埋まってしまうので困る。
そうじゃない、こないだ作ったアプリケーションに変更を反映させたいのですよ。
ということで、
【Rails】git push時に、Permission denied (publickey)エラー - せかいや
とか、githubのキーの作り方のページを参考にしながらやってみた。
ワークツリーでconfigの中に.sshディレクトリを用意し、その中にconfigというファイルを作る
configファイルの中身は
Host heroku.com
User git
port 22
Hostname heroku.com
IdentityFile ~/.ssh/heroku_id_rsa(キーの名前)
TCPKeepAlive yes
IdentitiesOnly yes
と書いて保存(一緒にgithub用などのキーの設定を書いてもいい)。
cd condig/.sshでこのconfigファイルのあるディレクトリに移動して、キーを作成する。
ssh-keygen -C (Herokuに登録したメールアドレス) -t rsa
を入力。Windowsの場合はこのコマンド、という資料が多いが、Macもこれでいい。このオプションをつけないとHeroku用のキーとして認められないので注意する。
途中に名前の入力が求められるが、上のキーの名前と合わせること。
本当は、ここでのキーの名前入力はファイル名というよりファイル名含む相対アドレスのことなので、.sshディレクトリに移動しなくてもできるけれど、入力が面倒なので。。
herokuに作成したキーを登録する。
heroku keys add
キー作成のコマンドでオプションを忘れていたりして間違いが含まれていると、このコマンドで新しく認証キーが作成されてしまう。
これで作成されたファイルをconfigファイルに書いてもいいかもしれないけれど。
あとは元のディレクトリに戻ってpush。
git push heroku(heroku用に登録しているgitのurl) master
を実行。事前に
git remote add heroku git@heroku.com:application-name.git
をして、herokuという名前のpush先のアドレスを登録しておくこと。
このgitアドレスはherokuのアプリケーションの設定画面から見ることが可能。
なお、herokuの動作環境はローカルホストと違ってproductionなので、データベースに変更があった場合(モデルが追加されているなど),
heroku openの前に
heroku run rake db:migrate
をしておかないと正常に動かないことがある(大体pending:"動かすために必要と思われるコマンド"がエラーメッセージに入っているみたいなので探す)。