Ruby on RailsのPaaS「Heroku」を使ってみた。
きっかけは、Facebookアプリ作ってみたいなーと思って、開発者登録して新規アプリ作成しようとしたとき。
Web Hostingのチェック欄横に、「Yes, I would like free web hosting provided by Heroku」って書かれてて何ぞ?となった。
調べてみたら、Ruby on Railsのクラウドホスティングサービスらしい。
さらに、Webアプリケーションサーバ の1プロセス(1dyno)と「PostgreSQL」のDB容量5MBまで無料らしい。
ソース管理とデプロイは分散型バージョン管理システムの「Git」を使用するみたい。
最近は何でもクラウドですなぁー。
自宅サーバなど不要な時代なのですかねぇー。
…とりあえずやってみた。
今回の環境は以下です。
- Windows 7 Professional SP1(32bit)
- Ruby2.0.0-p0
- gem2.0.3
- Rails3.2.13
- Heroku Toolbelt2.37.2 (i386-mingw32)
- Git1.8.1.msysgit.1
Herokuのアカウント登録
Herokuサイトへアクセスし、「Sign Up」よりメールアドレスを入力し、アカウント登録を行う。
Heroku Toolbeltのインストール
Heroku Toolbeltサイトへアクセスし、「Heroku Toolbelt」のWindows版をダウンロードし、インストール。
しかし、Heroku Toolbeltと同時にRuby、Gitも一緒にインストールされてしまう。
「Ruby1.9.3-p392」が…。
なので、インストールされたRubyはアンインストールし、以下のファイルのRubyのパスが設定されている箇所を、インストールされているRubyのパスに編集する。
「C:\Program Files\Heroku\bin\heroku.bat」の6行目
:: Don't use ECHO OFF to avoid possible change of ECHO :: Use SETLOCAL so variables set in the script are not persisted @SETLOCAL :: Add bundled ruby version to the PATH, use HerokuPath as starting point @SET HEROKU_RUBY="C:\Ruby200\bin" @SET PATH=%HEROKU_RUBY%;%PATH% :: Invoke 'heroku' (the calling script) as argument to ruby. :: Also forward all the arguments provided to it. @ruby.exe "%~dpn0" %*「C:\Program Files\Heroku\bin\heroku」の3行目
#!/bin/sh # find embedded ruby relative to script bindir=`cd -P "C:\Ruby200\bin" 2>/dev/null; pwd` exec "$bindir/ruby" -x "$0" "$@" #!/usr/bin/env ruby # encoding: UTF-8 # resolve bin path, ignoring symlinks require "pathname" bin_file = Pathname.new(__FILE__).realpath # add locally vendored gems to libpath gem_dir = File.expand_path("../../vendor/gems", bin_file) Dir["#{gem_dir}/**/lib"].each do |libdir| $:.unshift libdir end # add self to libpath $:.unshift File.expand_path("../../lib", bin_file) # inject any code in ~/.heroku/client over top require "heroku/updater" Heroku::Updater.inject_libpath # start up the CLI require "heroku/cli" Heroku.user_agent = "heroku/toolbelt/#{Heroku::VERSION} (#{RUBY_PLATFORM}) ruby/#{RUBY_VERSION}" Heroku::CLI.start(*ARGV)環境変数Pathの設定
環境変数PathにRuby、Heroku、Gitのパスが設定されていることを確認する(設定されていない場合は設定する)。
今回の場合は以下の4つ。
#Ruby C:\Ruby200\bin; #Heroku C:\Program Files\Heroku\bin; #Git C:\Program Files\git\bin; C:\Program Files\git\cmd;Herokuのコマンドでログイン
Heroku Toolbeltをインストールし、Pathを通したことで「heroku」コマンドが使用できるようになる。
以下のコマンドでログインを行う。
ローカルにSSH公開鍵がない場合は、生成するかどうかを確認される。
もし、「ssh-keygen.exeは動作を停止しました」とかのエラーが出た場合は、ウイルス対策ソフトが邪魔をしている可能性がある。
俺の場合、ウイルスセキュリティZEROの「ウイルス・スパイウェア対策」を全て無効にしたら無事に生成できた。
なお、SSH鍵の生成場所は「C:/Users/ユーザ名/.ssh」で、公開鍵がサーバに送信され、公開鍵暗号方式で認証が可能になる。
C:>heroku login DL is deprecated, please use Fiddle Enter your Heroku credentials. Email: アカウント登録したメールアドレス Password (typing will be hidden): パスワード(非表示) Could not find an existing public key. Would you like to generate one? [Yn] y Generating new SSH public key. Uploading SSH public key C:/Users/[ユーザー]/.ssh/id_rsa.pub... done Authentication successful.アプリケーションの準備
今回はお試しということで、オープンソースのものを使用し、Herokuに乗っけてみる。
Ruby製のCMS「Lokka」というもの。
GitHubで公開されているので、そちらからクローン(Clone)する。
コマンドは以下のどちらでも構わない。
もし、「ssh.exeは動作を停止しました」とかのエラーが出た場合は、上記と同様にウイルス対策ソフトを無効にしてみるといい。
#コマンド C:>git clone git@github.com:lokka/lokka.git lokka C:>git clone https://github.com/lokka/lokka.git lokkaHerokuコマンドでアプリケーション作成
続いて、Heroku上のアプリケーションの作成を行う。
クローン(Clone)してきたフォルダへ移動し、以下のコマンドで行う。
#コマンド C:>cd lokka C:>heroku create sample-lokka DL is deprecated, please use Fiddle Creating sample-lokka... done, region is us| git@heroku.com:sample-lokka.git Git remote heroku addedHeroku | Application ErrorGitのpushコマンドでデプロイ
ローカル環境とHerokuクラウド環境の準備が整ったので、ローカル環境から本番環境のHerokuクラウド環境にアプリケーションをデプロイする。
コマンドは以下。
ここでも、「ssh.exeは動作を停止しました」とかのエラーが出た場合は、上記と同様にウイルス対策ソフトを無効にする。
#コマンド C:>git push heroku master続いて、Lokkaのフォルダ直下にある「README.md」ファイルに記載されている通り、いくつかコマンドを叩いてく。
C:>heroku addons:add heroku-postgresql:dev DL is deprecated, please use Fiddle Adding heroku-postgresql:dev on sample-lokka... done, v5 (free) Attached as HEROKU_POSTGRESQL_BLACK_URL Database has been created and is available ! This database is empty. If upgrading, you can transfer ! data from another database with pgbackups:restore. Use `heroku addons:docs heroku-postgresql:dev` to view documentation. C:>heroku pg:promote HEROKU_POSTGRESQL_BLACK_URL C:>heroku rake db:setup C:>heroku open1つ目のコマンドでデータベースURL「HEROKU_POSTGRESQL_BLACK_URL」が設定されたので、2つ目のコマンドでそれを指定してやる。
これをしないと、3つ目のコマンドで以下のようなエラーになるので注意。
C:>heroku run rake db:setup Running `rake db:setup` attached to terminal... up, run.1 rake aborted! +options+ should be Hash or Addressable::URI or String, but was NilClass (See full trace by running task with --trace)最後のコマンドでブラウザが開く。
やっとできたー!
参考サイト
Heroku(ヘロク)で,Ruby on Railsアプリを簡単に公開する方法の入門 (無料のRuby向けPaaS環境の使い方) – 主に言語とシステム開発に関して
コメント