header

2013年3月19日火曜日

herokuにNode.jsのアプリを登録

ちょっとNode.jsに興味があってherokuにNode.jsのアプリを登録してみました。
以下は自分の忘れ防止

herokuのアカウントを作成

  1. http://api.heroku.com/signup から新規にアカウントを作成
  2. Email,passwordを選択

herokuのtoolbeltをインストール

herokuの toolbelt をインストールするのになんかコマンドがかかれてたのでコピペで実行
そのあと heroku コマンドが利用できるようになった。

sshの鍵の登録

githubやbitbucketで鍵をわけて利用していたので,heroku用に鍵を作成
私はパスフレーズを登録しました。

mkdir -p ~/.ssh/heroku
cd ~/.ssh/heroku
ssh-keygen -t rsa -C "Mail Addless"


それと~/.ssh/configに以下を追加しました。
(IdentityFileは秘密鍵の場所)

Host heroku
HostName heroku.com
IdentityFile ~/.ssh/path/to/heroku/secret-key_id_rsa
User git

heroku

  1. heroku loginでアカウント情報を入力
    heroku loginでアカウント情報を入力
    sshの鍵は次で登録するのでNoにしました。



    heroku login
  2. heroku keys:addでheroku用のsshの公開鍵を登録



    heroku keys:add file-path(作成したid_rsa.pubのような公開鍵の方のパス)

herokuへpushするとき

普通にpushするには


ssh-add heroku's_secret_key
git push heroku master

でいいと思います。そのあと対象のディレクトリで


heroku open

でそのアプリをブラウザで開けました。

Emacsからpush

私はEmacsでmagitからpushしたかったので下記のコードを.emacsなどの設定ファイルに
追加しました。(ssh-agentが動いていることも必要です)

(defun my/ssh-add ()
(interactive)
(let* ((github "~/path/to/github's_id_rsa")
(bitbucket "~/path/to/bitbucket's_id_rsa")
(heroku "~/path/to/heroku's_id_rsa")
(ssh-add
(lambda (filepath)
(unless (string< "" (shell-command-to-string
(concat "ssh-add -l | grep " filepath)))
(shell-command (concat "ssh-add " filepath)))))
match)
(goto-char (point-min))
(when (search-forward-regexp
"^Remote: master @ .* (\\(.*\\))" nil t)
(setq match (match-string 0))
(when (string-match "@bitbucket.org" match)
(funcall ssh-add bitbucket))
(when (string-match "git@github.com" match)
(funcall ssh-add github))
(when (string-match "git@heroku.com" match)
(funcall ssh-add heroku)))))
(defadvice magit-push
(around ad-magit-push activate)
(my/ssh-add)
ad-do-it)


アプリの/.git/configにbranchの設定を追加しました。
追加後magitでcommitしたところpush待ちのものが見れるようになりました。

[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "heroku"]
url = git@heroku.com:YOUR-APPLICATION-NAME.git
fetch = +refs/heads/*:refs/remotes/heroku/*
[branch "master"]
remote = heroku
merge = refs/heads/master


あとはmagit-statusから"P","P"すればpushしてくれるはずです。


0 件のコメント:

コメントを投稿

Popular Posts

Blogger templates

Blogger news