Ruby on RailsのPaaS「Heroku」の環境構築手順

Serverサーバー
この記事は約9分で読めます。

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 lokka

Herokuコマンドでアプリケーション作成

続いて、Heroku上のアプリケーションの作成を行う。

クローン(Clone)してきたフォルダへ移動し、以下のコマンドで行う。

#コマンド
C:\>cd lokka

C:\>heroku create sample-lokka
DL is deprecated, please use Fiddle
Creating sample-lokka... done, region is us
http://sample-lokka.herokuapp.com/
| git@heroku.com:sample-lokka.git Git remote heroku added

Gitの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 open

1つ目のコマンドでデータベース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)

最後のコマンドでブラウザが開く。

やっとできたー!!

そのうち消すかもしれませんが、今のところ公開中です。

Lokka画面

Lokka(公開中)

Test Site

参考サイト

Heroku(ヘロク)で,Ruby on Railsアプリを簡単に公開する方法の入門 (無料のRuby向けPaaS環境の使い方) – 主に言語とシステム開発に関して

rubyでCMS構築したい ~lokka~ | Chie a la Mode

サーバー
えふめん

大阪在住、30代。
業務系SE・社内SEの仕事を通じて学んだこと、PCトラブルで困って調べたこと、手作業を効率化して改善したこと、WordPressのブログ運営などの記事を書いています。

えふめんをフォローする
\よかったらシェアしてね/
この記事が気に入ったら
いいね!しよう
最新情報をお届けします。
俺の開発研究所

コメント

タイトルとURLをコピーしました