前回、さくらサーバーでの動作が悲惨だったので、今回は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にも対応しているようです。
数分すると、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をみてみると、
あと、ついでとばかりにdatabase.ymlもコピッてつくってますね。
とりあえず、detabase.ymlのOpenShiftのRubyバージョンは考えなくてもよさそうなので、放っておきます。
わかったことは、(最近作ったGearなら、)Gemfile.lock.ruby-1.9をbundle install --no-deploymentで作成したGemfile.lockの内容に書き換えればいいわけですな。
まずは、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をみてみると、
cpでGemfile.lockをRubyバージョンに合わせて再生成してます本当にありがとうございました。pushd "$OPENSHIFT_REPO_DIR" > /dev/null[ ! -f Gemfile.lock ] && cp -f "Gemfile.lock.ruby-$OPENSHIFT_RUBY_VERSION" Gemfile.lockcp config/database.yml-$OPENSHIFT_RUBY_VERSION config/database.ymlpopd > /dev/null
あと、ついでとばかりに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 件のコメント:
コメントを投稿