Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save tatsuro-ueda/4192953 to your computer and use it in GitHub Desktop.
Save tatsuro-ueda/4192953 to your computer and use it in GitHub Desktop.
WindowsでHerokuをセットアップする手順

WindowsでHerokuをセットアップする手順

※数日後にアクセスしたら

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

ではじかれて入れません。なんてこったあああ!


(その後)Macからだと問題なくpushできました。謎です。


RubyをWindowsにインストールしたときに入る「Start Command Prompt with Ruby」を使うとpushはできました。が、rakeは相変わらずMacからでないとダメのようです。


(その後)Macからだと問題なくpushできました。謎です。 こんにちは。最近あいさつで始まるエントリーをよく見かけるようになったので私も挨拶してみます。挨拶って大切ですよね。

私は、以前はさくらインターネットのホスティング・サーバーを使っていたのですが、Sinatraが使いたくてHerokuに乗り換えました。しばらくHerokuを使っていて、じゅうぶん便利だと感じたので、さくらインターネットの方は解約しました。

その後、職場でMacマシンからWindowsマシンへ移住するよう言われ、一時的にHerokuが使えない状況でした。しかしサーバー環境がないと検証できない案件が発生したため、WindowsでHerokuのセットアップにトライしてみました。会社のプロキシ内という条件もあり、厳しいかなと思ったのですが、意外とすんなりうまくいきました。

本稿ではHerokuに「Hello World!」と出力するだけのSinatraアプリケーションをデプロイします。Railsの場合も手順はほぼ同様だと思われます。

  1. Ruby1.9.3をインストール(http://rubyinstaller.org/)

    Ruby1.9.3-p125が現時点のHeroku推奨バージョンなのですが、どうにもダウンロードできなかったので、Ruby1.9.3-p327をインストールしました。

  2. GitHub for Windowsをインストール(http://windows.github.com/)

    個人的にあまりコマンドラインが好きではないので、わかりやすいGUIを備えているGitHub for Windowsをインストールします。といってもCommitにしか使わないのですが。

    インストールしたらログインしてリモートレポジトリを見ておきます(要GitHubアカウントでした・・・)。こうすることで手元の環境に公開鍵が作成されます。

  3. Heroku Toolbeltをダウンロード(https://toolbelt.heroku.com/)

    heroku gem、foreman gem、Gitの3つがインストールされます。こちらでもGitがインストールされますが、GUIがわかりにくいので使いません。

    gemだけインストールするなら

     $gem install heroku
    

    でも良いような気がしますが、念のためToolbeltをインストールします。

  4. 以下の作業はレポジトリを置きたいディレクトリで行なってください。

  5. コマンド

     $heroku login
    

    私はすでにアカウントを持っているのでログインできます。持っていないかたは新規登録してください。

  6. おっと、プロキシのせいでheroku loginコマンドが失敗

    下記コマンドで環境変数をセットしてあげると成功します。

     $set http_proxy=http://proxy-server.com:port
    

    この方法はbundleコマンドでも同様のようなので、ひょっとしたら他のケースでも使えるかもしれません。

  7. コマンド

     $heroku apps:create <app-name>
    

    app-nameという名前のherokuアプリケーションを作成します。アプリケーションの名前に含めることのできる記号は「-」(ダッシュ)だけです。

     $heroku create
    

    というコマンドでも作ることができるのですが、変な名前が自動的に付くので、やめておきます。

  8. コマンド

     $git clone git@heroku.com:<app-name>.git
    

    は、

     Permission denied (publickey).
    

    で失敗します。手元の環境の公開鍵がHerokuに登録されていないためです。公開鍵自体はGitHub for Windowsで作ってあるので、それをHerokuに登録します。

  9. コマンド

     $heroku keys:add
    

    このコマンドだけで手元の環境の公開鍵が自動的に登録されます。Herokuの鍵まわりは嵌りやすいポイントなのでホッとしました。

    以下の様なメッセージが表示されます。

     Found existing public key: C:/path/.ssh/github_rsa.pub
     Uploading SSH public key C:/path/.ssh/github_rsa.pub... done
    
  10. コマンド

     $git clone git@heroku.com:<app-name>.git
    

    緊張の一瞬ですが成功しました。ふー。

     warning: You appear to have cloned an empty repository.
    

    というメッセージが返ります。作ったばかりなので当然ですね。

  11. cloneしてきたフォルダにapp.rb, config.ru, Gemfile作成します

    適当なエディタでファイルを作っていきます。ちなみに私はSublime Text 2というエディタを使っています。Windowsでも使えるのが嬉しいですね。

  12. app.rb:

    以下のように編集します。

    require "rubygems"
    require "sinatra"
    
    get "/" do
      "Hello world!"
    end
    

    「Hello world!」とだけ出力するシンプルなSinatraアプリケーションです。

  13. config.ru:

    以下のように編集します。

    require "./app"
    run Sinatra::Application
    

    このファイルはRack用なんですかね。

  14. Gemfile:

    以下のように編集します。

    source "https://rubygems.org"
    gem "sinatra"
    

    HerokuはBundler必須なのでGemfileを用意します。

  15. コマンド

    おっと、gemをインストールしなければ・・・

    $gem install sinatra bundler
    
  16. コマンド

    Bundler gemをつかってアプリケーション依存gemをレポジトリにインストールします。

    $bundle
    
  17. コマンド

    まずは手元の環境でアプリケーションがちゃんと動いているか確認しましょう。

    $ruby app.rb
    

    http://localhost:4567」をWebブラウザで開きます。「Hello World!」と表示されているのを確認します。

  18. GitHub for WindowsでCommit

    ・・・いや、

    git commit -m 'comment message'
    

    でも全然いいのですが。ここは個人的な趣向です。

  19. .git/configをエディタで開いてoriginをherokuに変更します

    これはよくわからないのですがHerokuからCloneしてくると「origin」ターゲットとして設定されるので「heroku」ターゲットに書き換えます。こうすることで、このレポジトリをGitHubにPushできるようにもなります。詳しいやり方は下記記事を参考にしてください。

    GitHubとHerokuに両対応させるには — Gist https://gist.github.com/3595855

  20. コマンド

    $git push heroku master
    

    でデプロイします

    ドキドキの瞬間です。

  21. ブラウザで動作を確認

    念のためWebブラウザで確認します。表示されていますか?長い道のりでしたね。お疲れさまでした。

これで楽しいHerokuライフが待っています。

静的なコンテンツだけを置くのもSinatraがあればpublicフォルダに入れるだけなので簡単ですね。

memcache、New Relic、Mongo Labといった様々なアドオンも魅力的です。

それにアクセスが集中したらいつでもスケールアップさせることができます。私は、残念ながらそういう嬉しい悲鳴を上げるような状況には遭遇していないのですが、いつかはやってみたいものです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment