2014年12月20日土曜日

OpenShiftでRedmineを動かそうという話

こんばんは。前回に引き続きRedmineをアレコレしています。

前回、さくらサーバーでの動作が悲惨だったので、今回はPassengerをタダで使えることを前提にして、いろいろと調べてみました。
やっぱりVPSやIaaSなどを借りるほどでもないので、PaaSを使ってRubyをデプロイできる環境にすることに。
最初は、Herokuとか思いつきましたけど、容量問題でGitリポジトリブラウザが使えなかったり、DB1万行も尾を引きそうだったので、RedmineをOpenShiftというRedhatが提供するPaaSサービスを利用することにしました。
OpenShiftを用いる理由として、

  • Redmineの高速インストールができる
  • 1GBのデータ領域
  • SSHでガチャガチャしたりやりたい放題できる
などなど、様々な理由があります。
しかし、案の定日本語のドキュメントが少なかったので、英語とコード(Ruby歴3時間)との戦いを強いられたのでメモを残します。

1.OpenShiftで試しに高速インストール

Redmineをインストールするのは、超簡単で、OpenShiftのアカウントを作ってログインしたら、まず[ Add Applications...]というボタンをおして、検索窓に「Redmine」と入力して、URLを設定したら、あとは[Create Application]を押すだけ。
数分すると、Redmineのインストールが完了してもうすでに動いています。
URLにアクセスすると、Redmineにログインできるので、ID=admin PW=adminでさくっとログインして使えます。
標準でSSLにも対応しているようです。

2.Redmineをバージョンアップしたら動かなくなった

さて、これでインストールされるRedmineはV2.4と古めです。なんで新しいRedmine 2.6を当ててみます。

まずは、Gitの設定をしておきます。SourceTreeあたりで、OpenShiftのコンソールに表示されているGitのURLをコピペしてcloneしておきます。

次にRedmine2.6をダウンロードです。
http://www.redmine.org/projects/redmine/wiki/Download

ダウンロードしたら、ファイルを展開して、Redmineの2.6をクローンしたリポジトリに放り込んでPushします。
まあこれでとりあえず、Internal server errorが出て動かなくなります。

というわけで、SSHして直接いじります。

$ cd app-root/repos
$ bundle install --no-deployment

(追記 2014/12/25)rakeすんの忘れてた。
$ rake generate_secret_token
$ rake db:migrate RAILS_ENV="production"
$ rake redmine:plugins:migrate RAILS_ENV="production"


これで、インストールされているGemを吹き飛ばして、Gemfileに沿って最初からダウンロードされます。このとき、Railsのルートに「Gemfile.lock」というファイルが用意されるのですが、こいつがわりと重要になります。

OpenShiftのリポジトリの中には、「.openshift」というフォルダがあるのですが、これはOpenShiftの環境系ファイルの塊です。そのうち、「action_hooks」というフォルダがあるのでみてみると、pre_○○とか、明らかにビルド前後に実行されそうなスクリプトが並んでます。
そのうちのpre_buildをみてみると、

pushd "$OPENSHIFT_REPO_DIR" > /dev/null
[ ! -f Gemfile.lock ] && cp -f "Gemfile.lock.ruby-$OPENSHIFT_RUBY_VERSION" Gemfile.lock
cp config/database.yml-$OPENSHIFT_RUBY_VERSION config/database.yml
popd > /dev/null
cpでGemfile.lockをRubyバージョンに合わせて再生成してます本当にありがとうございました。
あと、ついでとばかりにdatabase.ymlもコピッてつくってますね。
とりあえず、detabase.ymlのOpenShiftのRubyバージョンは考えなくてもよさそうなので、放っておきます。
わかったことは、(最近作ったGearなら、)Gemfile.lock.ruby-1.9をbundle install --no-deploymentで作成したGemfile.lockの内容に書き換えればいいわけですな。

総括

RedmineをOpenShiftでインストールしようとすると、さくっとできるけど、変更を加えたりするのがとても大変な感じですね。
Gemfile.lockを手作業で変更するのはとても大変なので、わざとコケさせてGemfile.lockを作らせるのが吉っぽいです。

(追伸)
Blogger使いにくいでござる。面倒だし、なんか別のブログサービスみつからないかなあ…


0 件のコメント:

コメントを投稿