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のインストールを。

レンタルサーバにRedmineを導入③

遂にRedmine本体をインストール。

が、はじめに結論から言うと、失敗。
Redmineのインストールそのものは成功していると思われるが、レンタルサーバのApacheを経由してアクセスすることができず。。。

以下、作業手順。

まずはインストール。

$ wget http://rubyforge.org/frs/download.php/76013/redmine-1.3.3.tar.gz
$ tar zxf redmine-1.3.3.tar.gz
$ mv redmine-1.3.3 ~/var/lib/

続いてDBの設定を変更。

$ cd ~/var/lib/redmine-1.3.3/config/
$ cp database.yml.example database.yml
$ vi database.yml

「production:」を残して全て削除。
「production:」の設定を以下のように変更。(今回はMySQL)

production:
  adapter: mysql
  database: ホスティング会社から指定されたデータベース名
  host: ホスティング会社から指定されたDBサーバのホスト名
  username: ホスティング会社から指定されたDBユーザー名
  password: ホスティング会社から指定されたDBユーザーパスワード
  encoding: utf8

次に全般的な設定の変更。
とりあえずメールの設定のみ。

$ cp configuration.yml.example configuration.yml
$ vi configuration.yml

「production:」のブロックのみ以下のように変更。
(今回はサーバ上のsendmailを使う設定に)

production:
  email_delivery:
    delivery_method: :sendmail

次にenvironment.rbの設定。

$ vi environment.rb

「ENV[‘RAILS_ENV’] ||= ‘production’」のコメントを外す。

次にDBの初期化とデフォルトデータのロード。
~/var/lib/redmine-1.3.3/config/にて実行。
最後のデータロードでは言語を聞かれるので「ja」を入力。

$ rake generate_session_store
$ rake db:migrate RAILS_ENV=production
$ rake redmine:load_default_data RAILS_ENV="production"
Select language: ar, bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ja
====================================
Default configuration data loaded.

次にCGIの設定。

$ cd ~/var/lib/redmine-1.3.3/public/
$ cp dispatch.cgi.example dispatch.cgi
$ vi dispatch.cgi

先頭行を以下のように変更。

#!/usr/local/bin/ruby

さらに.htaccessの設定。

$ cp htaccess.fcgi.example .htaccess
$ vi .htaccess

「Options +FollowSymLinks +ExecCGI」をコメントアウト。

最後にpublicディレクトリをHTTPでアクセスできるところにシンボリックリンク。
で、ブラウザからアクセスしたら、
———————————————————————————
Application error

Rails application failed to start properly
———————————————————————————
だそう。orz
dispatch.cgiをシェルから直接動かすと原因がわかるという情報があったので試す。

$ ruby dispatch.cgi
/home/ユーザー名/var/lib/redmine-1.3.3/vendor/rails/actionpack/lib/action_controller/cgi_process.rb:22:in `__send__': undefined method `env_table' for nil:NilClass (NoMethodError)
    from /home/ユーザー名/var/lib/redmine-1.3.3/vendor/rails/actionpack/lib/action_controller/cgi_process.rb:22:in `dispatch_cgi'
    from /home/ユーザー名/var/lib/redmine-1.3.3/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:101:in `dispatch_cgi'
    from /home/ユーザー名/var/lib/redmine-1.3.3/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:27:in `dispatch'
    from dispatch.cgi:10

いろいろ調べてみたら、Passengerというのが入っていないのが原因っぽいが、とりあえずここで断念。
つづく。(といいのだが…)

レンタルサーバにRedmineを導入②

続いて、Railsをインストール。
バージョンは先のサイトのRedmine 1.3.xの対応バージョンに記載されていた2.3.14を指定。

$ gem install -v=2.3.14 rails --include-dependencies
INFO:  `gem install -y` is now default and will be removed
INFO:  use --ignore-dependencies to install only the gems you list
Fetching: rake-10.0.4.gem (100%)
Fetching: activesupport-2.3.14.gem (100%)
Fetching: activerecord-2.3.14.gem (100%)
Fetching: rack-1.1.6.gem (100%)
Fetching: actionpack-2.3.14.gem (100%)
Fetching: actionmailer-2.3.14.gem (100%)
Fetching: activeresource-2.3.14.gem (100%)
Fetching: rails-2.3.14.gem (100%)
Successfully installed rake-10.0.4
Successfully installed activesupport-2.3.14
Successfully installed activerecord-2.3.14
Successfully installed rack-1.1.6
Successfully installed actionpack-2.3.14
Successfully installed actionmailer-2.3.14
Successfully installed activeresource-2.3.14
Successfully installed rails-2.3.14
8 gems installed
Installing ri documentation for rake-10.0.4...
Installing ri documentation for activesupport-2.3.14...
Installing ri documentation for activerecord-2.3.14...
Installing ri documentation for rack-1.1.6...
Installing ri documentation for actionpack-2.3.14...
Installing ri documentation for actionmailer-2.3.14...
Installing ri documentation for activeresource-2.3.14...
Installing ri documentation for rails-2.3.14...
Installing RDoc documentation for rake-10.0.4...
Installing RDoc documentation for activesupport-2.3.14...
Installing RDoc documentation for activerecord-2.3.14...
Installing RDoc documentation for rack-1.1.6...
Installing RDoc documentation for actionpack-2.3.14...
Installing RDoc documentation for actionmailer-2.3.14...
Installing RDoc documentation for activeresource-2.3.14...
Installing RDoc documentation for rails-2.3.14...

$ rails -v
Rails 2.3.14

無事にインストール完了。

レンタルサーバにRedmineを導入①

レンタルサーバにRedmineを導入する。

私が借りているinetdのサーバにはRuby1.8.6が入っているようなので、入れられるRedmineは1.3.xが最も高いバージョンのよう。

http://www.redmine.org/projects/redmine/wiki/RedmineInstall?version=146

まずはRailsを入れるためにRubyGemsをインストールする。

上記サイトに「RubyGems <= 1.7」と書いてあったので1.7.2をインストールしようとしたらエラーが発生。順番にバージョンを落として試したところ、結局1.4.2まで落とさないとインストールできなかった。

以下、インストール手順。

$ wget http://rubyforge.org/frs/download.php/73882/rubygems-1.4.2.tgz
$ tar zxf rubygems-1.4.2.tgz
$ ruby setup.rb --prefix=$HOME/local
$ mv ~/local/bin/gem18 ~/local/bin/gem

.bash_profileに以下の3行を追加

export RUBYLIB=${HOME}/local/lib
export GEM_HOME=${HOME}/local/lib/rubygems
export PATH=${PATH}:${HOME}/local/bin:${GEM_HOME}/bin

環境変数を適用して実行(バージョンを表示してみる)

$ source ~/.bash_profile
$ gem -v
1.4.2

無事にインストール完了。