OpenShiftにRedmineを導入②

いよいよRedmineを入れる。

OpenShiftのGitHubにインストール用の一式があるのでそれを使う。
openshift-redmine-quickstart

README.mdに書かれていることをそのままトレースするだけの簡単なお仕事。
MySQLで入れるかPostgreSQLで入れるかが最大の悩み。PostgreSQLの方が使い慣れているけど、新しいことにチャレンジしようということでMySQLにしてみる。

C:\>rhc app create redmine ruby-1.9 mysql-5.1

これで一見Redmineが入ったようにログが見えるけれど、表示されたURLにアクセスしてもWelcomeページが表示されるだけ。続いてGitを使ってソースをアップする必要があるよう。

READMEを見るとredmineディレクトリがあるようだがローカルにない。
試しに次のgitコマンドを投げてみる。

$ git remote add upstream -m master git://github.com/openshift/openshift-redmine-quickstart.git
fatal: Not a git repository (or any of the parent directories): .git

やっぱりエラー。
よくよくrhcコマンドのログを見ると、

You do not have git installed, so your application's git repo will not be cloned

と。どうやらgitが入っていないからリポジトリをcloneできなかった様子。
Git for Windowsは入れていなくてSourceTreeでGitを使っているからgitコマンドにパスが通っていないのが原因か。

SourceTreeのターミナルならgitコマンドが使えるので、このターミナル上でアプリケーションのインストールをしてみることにする。
その前に、まずはできてしまった中途半端なredmineを削除する。rhcのヘルプを見ると「app delete xxx」で消せるよう。

$ rhc app delete redmine
This is a non-reversible action! Your application code and data will be
permanently deleted if you continue!

Are you sure you want to delete the application 'redmine'? (yes|no): yes

Deleting application 'redmine' ... deleted

$ rhc apps
No applications. Use 'rhc create-app'.

消えたようなので、気を取り直して。
前回の実行ログからするとカレントディレクトリの直下にredmineのリポジトリがcloneされるようなので、先にリポジトリを作ってもいいパスに移動して置いたほうがよさそう。(リポジトリの場所をきちんと管理したいので)

そこでまずGitのリポジトリ用のディレクトリをローカルに作る。
ここでは「C:\Users\Username\Documents\OpenShift」とする。

次にそのディレクトリに移動してから再度rchコマンドを実行。

$ cd /c/Users/Username/Documents/OpenShift/
$ rhc app create redmine ruby-1.9 mysql-5.1

やっぱりgitがないと言われてしまった。。。
ログをよく見ると最後のところにアプリケーションのgitのURLが書かれていることに気付いた。
仕方ないので、このURLを指定して手動でローカルにcloneをすることにする。

まず、SSHのキー登録が必要。先に登録しておかないとcloneするときに怒られる。
まずはPuTTY用のキーを生成する必要があるよう。SourceTreeの「ツール – SSHキーの作成/インポート」でPuTTYのキージェネレータを起動し、「Conversions – Import key」からOpenShiftのSSHキー(秘密鍵)を読み込む。SSHキーは「rhc setup」をした時に「C:\Users\Username\.ssh\id_rsa」としてできている。
に、「Save private key」で秘密鍵を保存する。元のキーと同じ場所に「id_rsa.ppk」というファイル名で保存。

続いて、PuTTYに上記で保存したキーを登録する。
タスクトレイに「Pageant」というPuTTYのエージェントがいるのでダブルクリックして起動し、「Add key」で先ほどの「id_rsa.ppk」を読み込み登録完了。

いよいよリポジトリのclone。SourceTreeなので「新規/クローンを作成する」から。「元のパス/URL」にログに出ていたURLを、「保存先のパス」に「上記で作ったリポジトリ用のディレクトリ/redmine」を指定して、「クローン」を。まだ何もないのですぐに完了。
(うっかりログを保存せずにコマンドプロンプトを閉じてしまった場合は「rhc apps」で確認できるのでご安心を。)

ようやくGitHubのリポジトリを持ってきてOpenShiftにアップする準備が整った。
気を取り直してopenshift-redmine-quickstartの続きを。ここからは手順にあるコマンドを打つのでGUIではなくSourceTreeのターミナルから。

$ git remote add upstream -m master git://github.com/openshift/openshift-redmine-quickstart.git
$ git pull -s recursive -X theirs upstream master
warning: no common commits
remote: Counting objects: 3341, done.
remote: Total 3341 (delta 0), reused 0 (delta 0), pack-reused 3341
Receiving objects: 100% (3341/3341), 6.04 MiB | 250.00 KiB/s, done.
Resolving deltas: 100% (522/522), done.
From git://github.com/openshift/openshift-redmine-quickstart
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> upstream/master
(省略)
$ git push
Counting objects: 3350, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2701/2701), done.
Writing objects: 100% (3339/3339), 6.04 MiB | 742.00 KiB/s, done.
Total 3339 (delta 529), reused 3327 (delta 522)
(省略)

pushしたらインストールが動くのが不思議。いったいどうなっているのか謎。「.openshift」の中にいろいろスクリプトがあるようなので、これらがgitに更新されたら自動的に動く仕組みなんだろうか。気が向いたらいずれ調べる。

http://redmine-ドメイン.rhcloud.com/にアクセスするとちゃんとRedmineのトップページが表示される。adminのパスワードを変えてとりあえずインストール完了。

OpenShiftにRedmineを導入①

以前にホスティングサーバ上にRedmineを入れようとして失敗し、そのまま放置していたが、やっぱりRedmineが使いたくなったので再調査。

何かいい方法(できればお金をかけず)がないか探していたところ、Redhatが提供するOpenShiftというPaaS上に構築できることが判明。しかも無料。早速試してみる。

まずはOpenShift Onlineのアカウントを作る。

次にOpenShiftをいじくる環境を整備。rhcという独自のクライアントツールを使うようで、これにはrubyとgitが必要らしい。「Getting Started with OpenShift Online」を参考に環境を整える。

まずはRubyのインストール。Ruby Installerを使って最新版(投稿時2.2.2)を入れればOK。

次にGitのインストール。既にインストール済みなので割愛。

続いてRubyGemsを使ってrhcをインストール。

C:\>gem install rhc

続いてrhcのセットアップ。

C:\>rhc setup
C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- dl/import (LoadError)
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/net-ssh-2.9.2/lib/net/ssh/authentication/pageant.rb:1:in `<top (required)>'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/net-ssh-2.9.2/lib/net/ssh/authentication/agent/socket.rb:5:in `<top (required)>'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/net-ssh-2.9.2/lib/net/ssh/authentication/agent.rb:22:in `<top (required)>'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/net-ssh-2.9.2/lib/net/ssh/authentication/key_manager.rb:4:in `<top (required)>'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/net-ssh-2.9.2/lib/net/ssh/authentication/session.rb:4:in `<top (required)>'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/net-ssh-2.9.2/lib/net/ssh.rb:11:in `<top (required)>'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rhc-1.36.4/lib/rhc/ssh_helpers.rb:18:in `<top (required)>'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rhc-1.36.4/lib/rhc/wizard.rb:77:in `<class:Wizard>'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rhc-1.36.4/lib/rhc/wizard.rb:7:in `<module:RHC>'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rhc-1.36.4/lib/rhc/wizard.rb:6:in `<top (required)>'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rhc-1.36.4/lib/rhc/commands/base.rb:4:in `<top (required)>'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rhc-1.36.4/lib/rhc/commands/account.rb:2:in `<module:Commands>'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rhc-1.36.4/lib/rhc/commands/account.rb:1:in `<top (required)>'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rhc-1.36.4/lib/rhc/commands.rb:189:in `block in load'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rhc-1.36.4/lib/rhc/commands.rb:188:in `each'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rhc-1.36.4/lib/rhc/commands.rb:188:in `load'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rhc-1.36.4/lib/rhc/cli.rb:36:in `start'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rhc-1.36.4/bin/rhc:20:in `<top (required)>'
        from C:/Ruby22/bin/rhc:23:in `load'
        from C:/Ruby22/bin/rhc:23:in `<main>'

おーい。。。
調べてみると、どうやらnet-ssh-2.9.2が悪いのかnet-ssh-2.9.3beta1を入れろと書いてある。あるいはrubyを1.9.3にするか。
どちらにしようか悩んだが、beta版を入れるのはあまり好きではないし、Gettng Startedでは1.9.3を入れているようなので1.9.3に入れなおすことにする。

一旦2.2.2をアンインストールして1.9.3をインストール。
その後、rhcのインストールもやり直し。
先ほどは出なかったドキュメントのインストールエラーが出るが、ドキュメントなので放置。

気を取り直してrhcのセットアップを。

C:\>rhc setup
OpenShift Client Tools (RHC) Setup Wizard
(省略)
Your client tools are now configured.

何とか成功したよう。
とりあえず今日はここまで。
次回こそRedmineのインストールを。