LoginSignup
0

More than 1 year has passed since last update.

posted at

HerokuでRedMica2.0を構築する

はじめに

本記事は、Redmine Advent Calendar 2021の12/2の記事です。
Qiitaには過去にRedmine2.5やRedmine3.0系をHerokuで構築する記事がありましたが、どうせならRedMica2.0を使ってみたいので、過去記事を参考に試行錯誤した結果、動作するようになりましたので紹介させていただきます。

Herokuとは

セールスフォース・ドットコムが開発と運営を行っているPaaS(Platform as a Service)です。詳細はいろいろなところで紹介されていますので割愛いたします。

RedMicaとは

ファーエンド・テクノロジー(株)が提供しているRedmine互換のOSSです。RedMica2.0はRedmine4.2.3をベースにして今後のRedmineに取り込まれる予定の機能を先行提供されています。(Redmineの機能を先取りしてリリースされているそうです)

前提条件

Windows10のPCを構築用に使います。(その他の環境でも同様のことはできるはずとおもいますが試してません。)

事前準備

Herokuにユーザ登録・Heroku CLIのインストール

詳細は割愛します。以下のBLOGなどを参照してユーザ登録、Heroku CLIのインストールを済ませておいてください。

その他の構築PC側準備

  • git clientがインストールされていること。まだの方はこちらからインストールしてください。
  • PostgreSQLがインストールされていること。Herokuで現時点でサポートされているPostgreSQLの最新バージョンは12ですので、構築用PCにも12の最新版をインストールします。まだの方はこちらからインストールしてください。(構築用PCでbundle installする際に、pg_config.exeというプログラムが必要で、そのためだけにインストールしています。実際に構築用PCでPostgreSQLサーバを動かすわけではありません)
  • Ruby+devkitがインストールされていること。まだの方はこちらからインストールしてください。
  • (任意)作業をするのにVS Codeがあると便利です。インストールする方はこちらから。詳細は割愛させていただきます。

構築手順

RedMicaのソースをgit cloneする

Heroku用アプリケーションを作成するフォルダを任意の場所に作成し、git bashでそのディレクトリに移動します。そこで、以下のコマンドでgit cloneします。cloneしたら、そのディレクトリに移動します。クローンするフォルダ名は任意です。(後でHerokuにアップする時のアプリケーション名と合わせた方がわかりやすいでしょう)

$ git clone https://github.com/redmica/redmica.git redmica2
$ cd redmica2

ちなみにここでオリジナルのRedmineのリポジトリhttps://github.com/redmine/redmine.gitをクローンすればRedMicaではなくRedmineになります

cloneしたファイルの編集

.gitignoreの編集

.gitignoreから以下の行頭に#を追加してコメント化

/config/configuration.yml
/config/email.yml
/config/initializers/session_store.rb
/config/initializers/secret_token.rb
/public/plugin_assets
/Gemfile.lock
/Gemfile.local

.gitignoreに以下を追加する

/vendor/bundle

Gemfileの編集

参考記事には、Gemfileにrubyのバージョンを2.2に指定する記述がありますがここでは実施しません。(もともとruby '>= 2.5.0', '< 3.1.0'と指定されています)

Gemfileから以下の部分を削除する

# Include database gems for the adapters found in the database
# configuration file
require 'erb'
require 'yaml'
database_file = File.join(File.dirname(__FILE__), "config/database.yml")
if File.exist?(database_file)
  yaml_config = ERB.new(IO.read(database_file)).result
  database_config = YAML.respond_to?(:unsafe_load) ? YAML.unsafe_load(yaml_config) : YAML.load(yaml_config)
  adapters = database_config.values.map {|c| c['adapter']}.compact.uniq
  if adapters.any?
    adapters.each do |adapter|
      case adapter
      when 'mysql2'
        gem "mysql2", "~> 0.5.0", :platforms => [:mri, :mingw, :x64_mingw]
      when /postgresql/
        gem "pg", "~> 1.2.2", :platforms => [:mri, :mingw, :x64_mingw]
      when /sqlite3/
        gem "sqlite3", "~> 1.4.0", :platforms => [:mri, :mingw, :x64_mingw]
      when /sqlserver/
        gem "tiny_tds", "~> 2.1.2", :platforms => [:mri, :mingw, :x64_mingw]
        gem "activerecord-sqlserver-adapter", "~> 6.1.0", :platforms => [:mri, :mingw, :x64_mingw]
      else
        warn("Unknown database adapter `#{adapter}` found in config/database.yml, use Gemfile.local to load your own database gems")
      end
    end
  else
    warn("No adapter found in config/database.yml, please configure it first")
  end
else
  warn("Please configure your config/database.yml first")
end

削除した部分に以下を追加する

group :production do
  gem "pg", ">= 0.11.0", :platforms => [:mri, :mingw, :x64_mingw]
  gem 'rails_12factor'
  gem "activerecord-jdbcpostgresql-adapter", :platforms => :jruby
  gem 'rexml', '~> 3.2', '>= 3.2.4'
  gem 'puma'
end

config/application.rbを編集する

# require 'sprockets/railtie'の行頭の#を消してコメントアウトを解除します

require 'sprockets/railtie'

また、以下を追加します。私はconfig.log_levelを設定しているところの下に追加しました。

config.assets.initialize_on_precompile = false

app/assets/config/manifest.jsを作成する

app/assets/configフォルダを作成します。その下に、manifest.jsというファイルを以下の内容で作成します。

manifest.js
  //= link_tree ../../../public/images
  //= link_directory ../../../public/javascripts .js
  //= link_directory ../../../public/stylesheets .css

Gemをインストール

bundleのオプション設定

以下のコマンドを投入します。
(先にインストールしたPostgreSQLで、pg_config.exeというファイルがC:\Program Files\PostgreSQL\12\bin\にある想定です。パスが違う場合は適宜読み替えてください。)

$ bundle config set --local path 'vendor/bundle' 
$ bundle config set --local without 'development test rmagick' 
$ bundle config set --local build__pg "--with-pg-config='C:\Program Files\PostgreSQL\12\bin\pg_config.exe'"

bundle install実行

bundle installを実行します。

$ bundle install

ローカルのgitリポジトリにコミット

以下ではコメントをRedmica for Herokuとしていますが、コメントは編集した内容に合わせて変更してください。

$ git add .
$ git commit -am "Redmica for Heroku"

heroku側の作業

herokuにログイン

以下のコマンドをうつと、ブラウザが起動し、二要素認証後にログイン完了します。

$ heroku login

herokuアプリケーションを作成

<app_name>はユニークなアプリケーション名である必要があります。ここで作成したアプリケーション名は、後々使うURLの一部になりますので、わかりやすい名前をつけましょう。(私はredmica2にしました)

$ heroku create <app_name>

herokuアプリケーションにPostgreSQLのアドオンを追加

$ heroku addons:add heroku-postgresql

herokuにpush(アップロード)

$ git push heroku master

herokuでDBのマイグレーションを実施

$ heroku run rake db:migrate RAILS_ENV=production

herokuでDBの初期データを読み込み

$ heroku run rake redmine:load_default_data RAILS_ENV=production

Select language: ar, az, bg,...のように言語を選択するように表示されます。単にリターンを入力するとen(英語)になりますので、ja(日本語)を入力します。

動作確認

ブラウザから動作を確認してみましょう。Herokuアプリケーションを作るときに指定した<app_name>によって、https://<app_name>.herokuapp.comにアクセスするとRedMicaの初期画面が起動します。
admin/adminでログインするとパスワード変更画面になるので管理者用パスワードを入力してください。
これでHerokuサービス上でRedMicaを起動することができました。
image.png

留意事項

ここまでの手順で、まずはRedMicaをHerokuで立ち上げているだけです。以下のような制約にご留意ください。

  • メールサーバの設定を行っていないので、メール通知をすることはできません。
  • ファイルの添付は、一見問題なく動作しますが、永続化の設定をしていないので、HerokuのDynoが再起動されるとなくなってしまいます。(HerokuのWeb Dynoは1日に1回は再起動されるそうです)
  • リポジトリの設定を行っていないので、リポジトリは使えません。
  • その他、全機能を確認したわけではないので、動かない機能があるかもしれません。

参考記事

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0