2016/10/10にリリースされた 3.3.1 をHerokuにデプロイして利用できるようにする。
しかしこれがわりとハマるところが多かった…
前例多いけど、わりと環境にも依存するので なかなか一筋縄でいかない感じが(
そしてまだリアルタイム作業中だよ!よ!
そもそもなぜHerokuを選んだか
みなさんいろんな観点で選定すると思うんですよ。
クラウド使う人が多いとは思う。
今回はこういう観点で選定してみまんた。
- 自前でリソース準備しなくても良い(=PaaS含めクラウドのメリット)
- 初期構築コストが(IaaSほど)かからない
- IaaSの場合:OSにも左右されるのでライブラリの依存関係もわりとシビアに考えないといけなかったり
- Ruby、Java、Python、Scalaなど複数言語とフレームワークをサポート
- 基本的な機能は無料枠で利用できる。お財布に優しい
- Gitを使ってデプロイ
- Gitに慣れているデベロッパはNO学習コスト
RedmineのDLページ
[Guide » Installation Guide » RedmineInstall » Download]
(http://www.redmine.org/projects/redmine/wiki/Download)
3rd-party製のもの
RedmineがバンドルされたVMもある。
- とにかく Redmine 使いたいんや(震え声
- 環境構築 手間かかりすぎィ!?
- パッケージの 依存関係 考えるのマンド!
という諸々の理由により手っ取り早くデプロイしたい場合
こちらを利用するのもあり。
今回はあえてマンドイ手法を採用します。
そして案の定マンドかったです。
Redmineをインストール
先人のお知恵をかなり拝借させていただきました。
[Redmine3.0系をHerokuで動かせるようにする]
(http://qiita.com/KazuyaHara/items/27818ad3e7285cfefde1)
RedmineはRedmineなだけあって、公式もちゃんとRedmine上で書かれてる。
Guide » Installation Guide » Installing Redmine
Redmineの動作環境
Redmine version | Supported Ruby versions | Rails version used |
---|---|---|
3.3, current trunk | ruby 1.9.3, 2.0.0, 2.1, 2.2, 2.3 | Rails 4.2 |
3.2, 3.1 | ruby 1.9.3, 2.0.0, 2.1, 2.2 | Rails 4.2 |
各パッケージのアップデート/インストール
当方の環境は MacOS Sierra なのでその環境ベースでの手順。
尚、パッケージ管理には Homebrew 使用。
Ruby
> % ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
stable版で2.3.3が出てる。Redmineでもサポートされているのでここでアップデートしてしまう。
-> % brew info ruby
ruby: stable 2.3.3 (bottled), devel 2.4.0-beta3, HEAD
Powerful, clean, object-oriented scripting language
https://www.ruby-lang.org/
/usr/local/Cellar/ruby/2.3.1_2 (1,261 files, 18.8M) *
Poured from bottle on 2016-10-14 at 21:14:58
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/ruby.rb
==> Dependencies
Build: pkg-config ✔
Required: libyaml ✔, openssl ✔
Recommended: readline ✘
Optional: gdbm ✔, gmp ✘, libffi ✔
・・・ (以下略) ・・・
どうせなら上げてしまいたいのでアップデートする。
-> % brew upgrade ruby
・・・ (中略) ・・・
==> Installing ruby
==> Downloading https://homebrew.bintray.com/bottles/ruby-2.3.3.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring ruby-2.3.3.sierra.bottle.tar.gz
==> Using the sandbox
==> Caveats
Emacs Lisp files have been installed to:
/usr/local/share/emacs/site-lisp/ruby
==> Summary
🍺 /usr/local/Cellar/ruby/2.3.3: 1,263 files, 18.9M
2.3.1 → 2.3.3 へ上がったことを確認
-> % ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]
RubyGems(gem)
Rails含め、ruby関連のパッケージ管理用に RubyGems を使用(以下gemとする
まずgem本体をアップデートする
※ ここは用途・目的に応じてアップデートの要否は自身の判断で
-> % gem update --system
Updating rubygems-update
Fetching: rubygems-update-2.6.8.gem (100%)
Successfully installed rubygems-update-2.6.8
Rails - インストール時にまさかのビルドエラー発生
Railsはサポートされてるバージョンが 4.2 であるため、バージョンを指定してインストールしたが、ビルド時にエラー発生。nokogiri怪しい。
-> % gem install rails -v 4.2.0
ERROR: Error installing rails:
ERROR: Failed to build gem native extension.
current directory: /usr/local/lib/ruby/gems/2.3.0/gems/nokogiri-1.6.8/ext/nokogiri
/usr/local/opt/ruby/bin/ruby -r ./siteconf20161215-7511-1r17cb1.rb extconf.rb
Using pkg-config version 1.1.7
checking if the C compiler accepts ... /usr/local/Cellar/ruby/2.3.3/lib/ruby/2.3.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /usr/local/Cellar/ruby/2.3.3/lib/ruby/2.3.0/mkmf.rb:571:in `block in try_compile'
from /usr/local/Cellar/ruby/2.3.3/lib/ruby/2.3.0/mkmf.rb:522:in `with_werror'
from /usr/local/Cellar/ruby/2.3.3/lib/ruby/2.3.0/mkmf.rb:571:in `try_compile'
from extconf.rb:138:in `nokogiri_try_compile'
from extconf.rb:162:in `block in add_cflags'
from /usr/local/Cellar/ruby/2.3.3/lib/ruby/2.3.0/mkmf.rb:629:in `with_cflags'
from extconf.rb:161:in `add_cflags'
from extconf.rb:414:in `<main>'
To see why this extension failed to compile, please check the mkmf.log which can be found here:
/usr/local/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-16/2.3.0/nokogiri-1.6.8/mkmf.log
extconf failed, exit code 1
Gem files will remain installed in /usr/local/lib/ruby/gems/2.3.0/gems/nokogiri-1.6.8 for inspection.
Results logged to /usr/local/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-16/2.3.0/nokogiri-1.6.8/gem_make.out
前El Capitanの時はビルドエラーにならなかったので (Railsインストール自体は実は以前やってる
あれ?と思い、とりあえずログをあさる。
/RubyGems_PATH/2.3.0/extensions/x86_64-darwin-16/2.3.0/nokogiri-1.6.8/mkmf.log
このへんが問題っぽい。
xcrun: error: invalid active developer path
(/Library/Developer/CommandLineTools),
missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Sierraだとわりと発生してる問題なのかな。
macOS Sierra: invalid active developer path
あと本家にも明記されてる。
Installing Nokogiri - MacOS X
なのでインストールする。
コマンド実行したらGUIでインストールのポップアップ画面が出てくるので、ウィザードに沿ってインストール。
> % xcode-select --install
xcode-select: note: install requested for command line developer tools
からのgemパッケージアップデート
> % gem update
で、Railsインストール(--no-ri --no-rdocオプションつけ忘れ
やっと成功したがまだ先は長い。。。
-> % gem install rails -v 4.2.0
Fetching: rails-4.2.0.gem (100%)
Successfully installed rails-4.2.0
Parsing documentation for rails-4.2.0
Installing ri documentation for rails-4.2.0
Done installing documentation for rails after 334 seconds
1 gem installed
Heroku
herokuもここでインストールしておく
> % gem install heroku
ここからやっと本題のRedmineの設定へ
とりあえずホームディレクトリに移動
-> % cd ~/
ホームディレクトリ配下にRedmineをgit cloneする
-> % git clone https://github.com/redmine/redmine.git
Cloning into 'redmine'...
remote: Counting objects: 131947, done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 131947 (delta 6), reused 0 (delta 0), pack-reused 131928
Receiving objects: 100% (131947/131947), 46.56 MiB | 5.01 MiB/s, done.
Resolving deltas: 100% (100519/100519), done.
Checking connectivity... done.
Redmine - バージョン確認
取得してきたRedmineのバージョンを確認する。
3.3.1だから現時点の最新のバージョン。
module Redmine
module VERSION #:nodoc:
MAJOR = 3
MINOR = 3
TINY = 1
ディレクトリを移動する
-> % cd redmine
各種設定はこちらを参考に。
HerokuにRedmineをデプロイする方法
Herokuの設定
herokuコマンドで設定する。
デプロイ用のスペース(=アプリ名)を作成
-> % heroku create redmine-XXX
Creating ⬢ redmine-XXX... done
https://redmine-XXX.herokuapp.com/ | https://git.heroku.com/redmine-XXX.git
gitでローカルにコミットする
-> % git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: .gitignore
modified: Gemfile
new file: Gemfile.lock
renamed: config/database.yml.example -> config/_database.yml.example
modified: config/application.rb
modified: config/environments/production.rb
> % git commit -am "[add]redmine deploy"
[master 7f3bd7dea] [add]redmine deploy
6 files changed, 229 insertions(+), 39 deletions(-)
create mode 100644 Gemfile.lock
rename config/{database.yml.example => _database.yml.example} (100%)
HerokuにPush → エラー発生
nonexistent database だからDBがなくてrejectされたっぽかったので
remote: Tasks: TOP => environment
remote: (See full trace by running task with --trace)
remote: !
remote: ! Precompiling assets failed.
remote: ! Attempted to access a nonexistent database:
remote: ! https://devcenter.heroku.com/articles/pre-provision-database
remote: !
remote: ! Push rejected, failed to compile Ruby app.
remote:
remote: ! Push failed
remote: Verifying deploy....
remote:
remote: ! Push rejected to redmine-XXX.
-> % heroku addons:add heroku-postgresql
Creating heroku-postgresql on ⬢ redmine-XXX... free
Database has been created and is available
! This database is empty. If upgrading, you can transfer
! data from another database with pg:copy
Created postgresql-tetrahedral-60883 as DATABASE_URL
Use heroku addons:docs heroku-postgresql to view documentation
Herokuに再度Push → それでもエラー
Gemfile見直さないと。。。
remote: Gem::LoadError: Specified 'postgresql' for database adapter, but the gem is not loaded. Add `gem 'pg'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
remote: Gem::LoadError: pg is not part of the bundle. Add it to Gemfile.
後半につづく