はじめに
Heroku使った何かをいろいろやりたくなって今さらですがHeroku導入記事。
phpやpythonとかでも若干違うと思いますが今回はRubyで。
今回のメモは公式のGetting Started with Ruby on Heroku
に沿って行います。
https://devcenter.heroku.com/articles/getting-started-with-ruby#introduction
このメモのゴールは
自分のheroku URLで表示されるherokuページに簡単な書き換えを行って表示できる
というところまでにしたいと思います。
ながれ
以下のながれでGetting Startedを進めてみます。
はじめるまえに
はじめる前の前提知識として下記を載せておきます。細かい技術的などうこうよりは概念的なところです。
→PaaSの基礎知識とHerokuで開発を始める準備
技術的にrubyやらrailsやら先に知っておいたほうがいいとかあるかもですが言い出すとキリないですしね。
遅延勉強法でも良いかなーと。
→勉強が苦手な人向けの「遅延評価勉強法」
次からがオペレーションメモになりますが、Introduction(上記1〜3)が一番長く、こんな構成になってます。
→Getting Startedページ
1. アカウントを作る
まずはにGetting Started with Ruby on Heroku
ページを開きます。
→Getting Started with Ruby on Heroku : Introduction
開く
リンクからアカウント作成画面へ行きます
仮登録
各種情報を入力して仮登録を済ませます。Rubyのアイコンを選択するのを忘れずに。
OKだと仮登録完了画面に進みます
と、同時にConfirm your account on Heroku
みたいなタイトルでメールが届くので認証を済ませます。
本登録(activate)
メールに記載されているURLを開くとactivate画面(ログイン画面)が表示されるので
先ほど入力したアドレスとパスワードでinします。
これでアカウントの登録は終わりです。
2. Ruby(とRails)のインストール
Introduction画面にもどってrubyのインストールを行います。
今回はmacなのでチュートリアルはこのリンクから開きます。
自分はmac osの10.9.5だったのでそれ用のチュートリアルに従いました。
→Setup for OS X
Ruby(とRails)のインストールで行うこと
Ruby(とRails)のインストールで行うことはこんな感じです
Command line toolsのインストール
# xcode-select --install
command line toolsとhomebrewのインストールについては以前書いたこちらも参考に。
→Mac OS XにHomebrewインストール。command line developer tools入れたり使い方メモったり(install、update、upgradeなど)
Install Homebrewのインストール
# ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
rbenvのインストール
※ homebrewのアップデート # brew update ※ rbenvとかをインストール # brew install rbenv rbenv-gem-rehash ruby-build ※ ターミナル起動時にrbenv initコマンドを呼び出す設定を追加 # echo 'eval "$(rbenv init -)"' >> ~/.bash_profile ※ 環境変数の設定 # echo 'export PATH="$HOME/.rbenv/shims:$PATH"' >> ~/.bash_profile ※ 設定を反映 # source ~/.bash_profile
補足
以前にbrew経由でmysqlをいじっていたせいか、brew updateでmysql関連のエラーが出たので下記な感じで直しました。
他のエラーでもこれでいける場合が多いですね。
# cd $(brew --prefix) # git fetch origin # git reset --hard origin/master
→brew updateでerror: Your local changes to the following files would be overwritten by merge と言われる解決方法
補足
ここで直接関係ないですがrbenv-gem-rehash
をインストールしてるのでrehashについての参考
→rbenv rehashは何をやっているのか?
rubyのビルド
# rbenv install 2.2.0
補足
ここでも何やら言われたので下記を実行してから再度コマンド
※ 怒られる # rbenv install 2.2.0 uby-build: definition not found: 2.2.0 ・・・省略・・・ ※ おもむろにruby-build。結構ながい。。。 # brew update && brew upgrade ruby-build ※ 再度実行で成功 # rbenv install 2.2.0
デフォルトrubyの切り替え
# rbenv global 2.2.0
railsのインストール
# gem i rails --no-ri --no-rdoc
3. Bundlerインストール
またまたIntroduction画面にもどってbundlerのインストールを行います。
URLだとこれですね。http://bundler.io/
インストールしてみる
# gem install bundler
Bundlerについてはこちらを参考に
→Bundlerを使ったGemパッケージの管理
4. Toolbeltをインストール
Toolbeltをインストールします。
これを入れるとHerokuをコマンドラインから操作できるようになります。
→Getting Started with Ruby on Heroku : Set up
ダウンロード
ここからダウンロードします
インストール
インストーラーが立ち上がるので続ける系を押す
ログインしてみる
インストールが完了したら、確認もかねてコマンドからheroku loginしてみます
# heroku login Your version of git is 1.9.3. Which has serious security vulnerabilities. More information here: https://blog.heroku.com/archives/2014/12/23/update_your_git_clients_on_windows_and_os_x Enter your Heroku credentials. Email: hogehoge@gmail.com Password (typing will be hidden): Authentication successful.
5. herokuアプリの作成、デプロイ、確認
herokuアプリのひな形アプリを作ってそれをデプロイしてみます。
→Getting Started with Ruby on Heroku : Prepare the app
リポジトリ取得
※ heroku用にディレクトリ作って移動 # mkdir ~/heroku # cd heroku ※ リポジトリのcloneと移動 # git clone https://github.com/heroku/ruby-getting-started.git # cd ruby-getting-started.git
アプリの作成とデプロイ
heroku create
コマンドでherokuにアプリケーションを追加、git push heroku master
でherokuにpushします。
→Getting Started with Ruby on Heroku : Deploy the app
※ Herokuに新しいアプリケーションを作成 # heroku create Your version of git is 1.9.3. Which has serious security vulnerabilities. More information here: https://blog.heroku.com/archives/2014/12/23/update_your_git_clients_on_windows_and_os_x Creating hoge-xxxx-yyyy... done, stack is cedar-14 https://hoge-xxxx-yyyy.herokuapp.com/ | https://git.heroku.com/enigmatic-sea-yyyy.git Git remote heroku added ※ 作ったアプリをHerokuにプッシュします # git push heroku master
また、heroku create
コマンド実行後表示されるhoge-xxxx-yyyy
がアプリ名、
https://hoge-xxxx-yyyy.herokuapp.com/
がURLになってます。
heroku createコマンドは引数を指定するとhoge-xxxx-yyyy
の部分は好きに設定できます。
herokuアプリにアクセスしてみる
確認する方法は2つあります。
- 表示されたURL
https://hoge-xxxx-yyyy.herokuapp.com/
をブラウザで表示heloku open
コマンドを叩く(ブラウザ起動される)
以下のように表示されれば無事成功です
6. ログ、設定(Procfile)、プロセスを簡単に確認する
ログ見る
ログを見る場合もherokuコマンドが使えます。
→Getting Started with Ruby on Heroku : View logs
# heroku logs --tail Your version of git is 1.9.3. Which has serious security vulnerabilities. More information here: https://blog.heroku.com/archives/2014/12/23/update_your_git_clients_on_windows_and_os_x 2015-03-10T14:09:18.977239+00:00 heroku[api]: Enable Logplex by hogehoge@gmail.com 2015-03-10T14:09:18.977239+00:00 heroku[api]: Release v2 created by hogehoge@gmail.com
Procfile見る
ファイル自体は最初からできています。
→Getting Started with Ruby on Heroku : Define a Procfile
※ もうあるので取り急ぎ確認 # ls -l Pro* -rw-r--r-- 1 hoge hoge 40 3 10 23:06 Procfile # vim Procfile
プロセス見る
プロセスを見る際もheroku ps
コマンドで確認できます。
→Getting Started with Ruby on Heroku : Scale the app
# heroku ps
プロセス数を変更したりもできるので以下のサイトを参考に
→お財布を大事にする人のherokuプロセスコマンドまとめ
→Heroku入門
7. ローカル環境でアプリを立ち上げて確認する
databaseとtableを作成
ローカル環境でアプリを立ち上げるにはデータベースが必要です。
→Getting Started with Ruby on Heroku : Run the app locally
databaseとtableを作るためにまずはtutorialの通り下記のコマンドを打ってみます。
# bundle exec rake db:create db:migrate could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"? ・・・省略・・・
エラーになります。。。Postgres入れた記憶も起動した記憶もないですしね。
チュートリアルにuses Postgres
とは書いてありますがPostgresを入れるところは書いてくれてないので自分で入れてから試してみます。
Postgres入れる
ということで気を取り直してPostgres入れてみます。
※ brew経由でpostgresqlをインストールする # brew install postgresql ※ データベースの初期化 # initdb /usr/local/var/postgres -E utf8 ※ PostgreSQLサーバの起動 # postgres -D /usr/local/var/postgres ※ データベース一覧を確認 ※ psql -l Name | Owner | Encoding | Collate | Ctype | Access privileges ----------------------------------+----------------+----------+-------------+-------------+--------------------------------------- postgres | hogehoge | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | ruby-getting-started_development | hogehoge | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | template0 | hogehoge | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/"hogehoge" + | | | | | "hogehoge"=CTc/"hogehoge" template1 | hogehoge | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/"hogehoge" + | | | | | "hogehoge"=CTc/"hogehoge" (4 rows)
→Homebrewを使ったPostgreSQLのインストール(Mac OS Lion)
再度 databaseとtableを作成
create_tableと表示されて成功しました
# bundle exec rake db:create db:migrate == 20140707111715 CreateWidgets: migrating ==================================== -- create_table(:widgets) -> 0.0088s == 20140707111715 CreateWidgets: migrated (0.0089s) ===========================
Foremanを使ってローカルでアプリを起動する
下記のコマンドでローカルでアプリケーションを立ち上げて確認します。
# foreman start web ・・・省略・・・
フォアグラウンドで立ち上がるのでそのままブラウザでhttp://localhost:5000/
と打って確認します。
成功するとこんな感じで表示されます。(先ほどと変わらない表示ですが)
heroku上で確認するかローカルで確認するかの違いですね。
終了する場合はcontrol + c
で終了します。
PG::ConnectionBadと表示される場合
こんな感じで表示される場合、DB(Postgres)を起動しましょう。
※ Postgresを起動する # postgres -D /usr/local/var/postgres ※ postgresもフォアグラウンドで立ち上げてるので ※ 違うターミナルでForemanでアプリ起動する # foreman start web
bandle exec rake 参考
foreman 参考
8. ローカルのアプリを変更、デプロイ、確認してみる
ここまでくれば最終段階です。ローカルのアプリを変更してpush、デプロイします。
→Getting Started with Ruby on Heroku : Push local changes
Hello worldページをローカル編集&確認
Gemfile編集
bundle installするためのGemfileにgem 'cowsay'
を追加します。
'cowsay'はジョークgemらしいです。
# pwd /Users/hoge/heroku/ruby-getting-started # vim Gemfile ---- vi編集 ---- source 'https://rubygems.org' gem 'cowsay' ←この行を追加 # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '4.1.4' ---------------
index.erb(Hello worldページ)の編集
Hello worldページのファイルを編集します。
# pwd /Users/hoge/heroku/ruby-getting-started # vim app/views/welcome/index.erb ---- vi編集 ---- <!-- 一番したに追加 --> <pre> <%= Cowsay.say("Hello") %> </pre> ---------------
bundle installからのforeman startでアプリ確認
これはもう打つだけですね。
もしローカルアプリを立ち上げっぱなしの場合は一旦落としてから行います。
# bundle install # foreman start
確認
localhost:5000にアクセスして確認します。こんな感じで表示されてれば成功です。
postgresは起動しっぱなしにしましょう。
デプロイ
これはチュートリアルのまんまコマンド打ちます
# git add . # git commit -m "Demo" # git push heroku master
確認
heroku open
コマンドでheroku上にデプロイしたアプリを確認します。
ローカルと同じようにアスキーアートが表示されれば成功です。
# heroku open
やっとゴールまでたどり着きました!
9. 補足など
bundle installでこんなエラー
エラーの内容
これはこのメモでいうところの7. ログ、設定(Procfile)、プロセスを簡単に確認する
の後にめんどくさいからbundle installってアプリ確認しちゃえーとやろうと思ったらおきました。
postgresをおとなしくインストールしておけばおきなかったエラーなので
ちゃんとtutorial通りやれってことですね。。。
# bundle install Gem::Ext::BuildError: ERROR: Failed to build gem native extension. /Users/hoge/.rbenv/versions/2.2.0/bin/ruby -r ./siteconf20150312-26578-1hv16lo.rb extconf.rb checking for pg_config... no No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config checking for libpq-fe.h... no Can't find the 'libpq-fe.h header *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options.
対応
postgresqlをインストールすれば終わり
# brew install postgresql
まとめ
つまづいたところがあったもののherokuにというよりはrubyにですね。。。
しかしサクっと何かを試したい場合なんかは楽だなーと思いました。
いろいろ勉強ですね\(^o^)/