独り言

プログラミングの講師をしています。新人研修で扱う技術の解説と個人の技術メモ、技術書の紹介など

【Redmine】Redmineの構築

サーバーにRedmineの環境を構築する作業をしましたが、いくつかつまずいた箇所があったのでそのメモです。

サーバーの環境

インストールを実施した環境は以下

  • OS:CentOS6(Sakura VPS
  • DB:MySQL 5.6
  • Ruby:未導入

インストールしたもの
* Ruby 2.5.7 * Redmine 4.0.7

導入手順

導入手順いついては、基本的には公式サイトのインストール手順を参考に実施。

Redmineガイド

ガイドによると、MySQL5.6以降については既知の問題があると書かれているが、サーバー環境は既に他のシステムも色々と導入されてしまっているので、バージョンを変更するわけにもいかないので、とりあえずそのまま手順書通り進めることにした。

※実際には手順書通りにはうまくかなかった。
これについては後ほど記載。

Rubyインストール

RedmineRailsで動いているとのこと。
ということでまずはRubyのインストールが必要。
以下のサイトを参考にインストール

https://qiita.com/NaokiIshimura/items/ff04b6eaa40b33c4bea8

https://qiita.com/h_matsuno1028/items/7d3a13be4f37bff8be36

rbenvというものを使ってrubyをインストールする。 インストールしたら、使用するrubyのバージョンを rbenv global バージョン で指定する。
バージョンの指定までしないと、gemやrubyコマンドが使えないので注意。
今回構築した環境ではバージョン2.5.7しか選べなかったので、そちらを選択した。

Railsのインストール

Rubyのあとはrailsのインストール

railsのインストール

gem list -e -rails

とかで、インストールできるバージョンを確認できるらしいけれど、特にバージョンの表示がされなかった。。 ただ、

gem install rails

としたらインストール自体は成功した。
ただし、

rails -v

でバージョン確認すると、rails 6.0がインストールされてしまっていた。
詳しくはわからないが、Redmineのガイドを見る限り、バージョン5系の方が無難な気がしたので、一度アンインストールして5系をインストールすることに。

以下のサイトを参考に一度アンインストール

https://qiita.com/Hassan/items/eef26c870eb26a0c68e0

サイト通りにやればうまくアンインストールできた。

次はバージョン指定してインストール

gem install rails -v 5.2.4

うまくインストールすることができた。

Redmine

導入したRedmineのバージョンは4.0.7
ダンロードサイト
からredmine-4.0.7.tar.gzをダウンロード。
scpコマンドでサーバーに転送し、tarコマンドで展開。
展開したディレクトリを適当なディレクトリに配置。
今回は/var/www/html/redmine
に配置。
※ネットで色んなサイトを見ていると、/var/lib/redmine
あたりに配置するのが定番っぽかった。

redmineディレクトリに移動して

$ gem install bundler
$ bundle install --without development test

を実行する場面で色々とエラーが出た。
エラーになるのは事前に必要となるものがインストールされていないことが原因らしい。
親切にもメッセージをよく見るとインストールのコマンドが表示されていたりするので、指示に従って足りないものをインストールする。

私の環境では

sudo yum install mysql-devel

gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'

などが必要だった。

その後、データの追加

RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

でエラーが出まくった。
テーブルにカラムがない、だのなんだのと色々エラーが出た。

こんな感じのエラー

Error: Mysql2::Error: Unknown column 'roles.builtin' in 'where clause': SELECT  1 AS one FROM `roles` WHERE `roles`.`builtin` = 0 LIMIT 1

試しにテーブルにカラムを追加してみると、上記のエラーは出なくなったが、別のエラーが出てきた。
その度にカラムを追加するなど、対応をしてみたが、一向にエラーがなくなる気配がなく、埒が明かない。

根本的に環境に何か問題があるのかもしれない。

エラーメッセージを頼りに色々と調べていると、同じエラーでMySQLのデータベースの文字コードutf-8にしたら解決した、的なページが出てきた。
ということで試してみた。

公式サイトだとMySQLのデータベース作成のコマンドは

create database redmine character set utf-8mb4;

となっているが、utf-8に変更してみた。

drop database redmine;
create database redmine character set urf-8;

そうすると、テーブル作成のスクリプトもデフォルトのデータ作成のスクリプトもうまくいった。

Step9でWEBrickによるwebサーバを起動して、インストールができたか確認する手順がある。

bundle exec rails server webrick -e production

この時、ポートが3000になるので、ファイアウィールで3000を解放する必要がある。
CentOS6の場合はiptablesでポートを開放する。
この辺りの記事を参考に
https://loups-garous.hatenablog.com/entry/20120917/1347900472

Apacheで動作させる

動作確認できたら、Apacheで動くように設定する。
どうやらrailsapacheで動かすのに色々必要っぽい。

こちらも公式サイトで手順があるので、基本はこれを参考に実施。
https://redmine.jp/tech_note/apache-passenger/

手順に沿ってやるのだが

passenger-install-apache2-module

のコマンドで色々とエラーが出た。
が、こちらも必要なものをインストールしてください、とインストールのコマンドが出てきてくれた。

 * To install Curl development headers with SSL support:
   Please install it with yum install libcurl-devel

 * To install Apache 2 development headers:
   Please install it with yum install httpd-devel

 * To install Apache Portable Runtime (APR) development headers:
   Please install it with yum install apr-devel

 * To install Apache Portable Runtime Utility (APU) development headers:
   Please install it with yum install apr-util-devel

ということでyumコマンドでそれぞれインストールして、再度実施したらうまくいった。

最後は、httpdの設定ファイルに追加する内容が出てくるので、それをコピーしておく。

LoadModule passenger_module /home/develop/.rbenv/versions/2.5.8/lib/ruby/gems/2.5.0/gems/passenger-6.0.6/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /home/develop/.rbenv/versions/2.5.8/lib/ruby/gems/2.5.0/gems/passenger-6.0.6
     PassengerDefaultRuby /home/develop/.rbenv/versions/2.5.8/bin/ruby
   </IfModule>

公式サイトだと、httpd.confに追加すると書いているのだが、色々サイトを見ていると、
etc/httpd/conf.f/passenger.conf
を作成して、その中に記述する、と書いているサイトもあった。
どっち??
と思ったけど、おそらくどっちでも良いらしい。
2つ書いてhttpdを再起動したら、既に読み込まれています、的な警告メッセージが出た。
なのでどこに書いてもおそらくは読み込まれているのだろう。
ディレクトリで読み込むファイルが決まるようになっているのかな??

設定完了後、
http://<サーバーのIP>/redmine にアクセスしてみたが、

index of /redmine
ディレクトリの中身が表示されるだけで、redmineが起動しない現象が起きた。
これはおそらくVirtualHostの問題。
Redmineインストールディレクトリ/public
ドメインと紐づければおそらくうまくいく。