Redmine Plugin 開発環境構築メモ (RHEL7,MariaDB,Ruby,WEBrick)

# はじめに
AWS EC2のRHEL7.2でRedmine Pluginの開発環境を構築したときのメモです。

| 項目 | 内容 |
|:-----------|------------:|:------------:|
| OS | Red Hat Enterprise Linux 7.2 |
| Redmine | 3.2.0 |
| Ruby | 2.3.0 |

# EC2インスタンス準備
## インスタンス作成
| 項目 | 内容 |
|:-----------|------------:|:------------:|
| AMI | Red Hat Enterprise Linux 7.2 (HVM), SSD Volume Type |
| インスタンスタイプ | t2.micro |
| セキュリティグループ | SSH,HTTP,HTTPS,3000を許可 |

## インスタンス初期設定
### SELINUXを無効に変更
```
sudo vi /etc/sysconfig/selinux
```

以下を変更

```
SELINUX=enforcing
↓
SELINUX=disabled
```

### タイムゾーン変更
```
sudo ls -la /etc/localtime
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Japan /etc/localtime
sudo ls -la /etc/localtime
```

### redmineユーザ作成
```
sudo useradd redmine
sudo passwd redmine
```

# 周辺ツールインストール
## 開発ツール(Cコンパイラ等)のインストール
```
sudo yum -y groupinstall "Development Tools"
sudo yum -y install wget ipa-pgothic-fonts
```



## MariaDBのインストール
```
sudo yum -y install mariadb-server mariadb-devel
```

```
sudo vi /etc/my.cnf
```
/etc/my.cnfで、以下の設定を追加

```
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8
show-warnings
```
起動と自動起動の設定の追加

```
sudo systemctl start mariadb
sudo systemctl enable mariadb
```
初期設定

```
mysql_secure_installation
-- > パスワードなどを設定

mysql -uroot -p
> -- my.cnfの設定確認。character_sets_dir 以外の値がすべて utf8 になっていることを確認
> show variables like 'character_set%';
> 
> -- Redmine用データベース(通常用)と操作権限を持つユーザーの作成
> create database db_redmine default character set utf8;
> grant all on db_redmine.* to user_redmine@localhost identified by '********';
> 
> -- Redmine用データベース(開発用)と操作権限を持つユーザーの作成
> create database db_redmine_dev default character set utf8;
> grant all on db_redmine_dev.* to user_redmine@localhost;
>
> -- 設定確認
> show databases;
> show grants for user_redmine@localhost;
> 
> -- 設定反映
> flush privileges;
>
> exit
```



## Rubyのインストール
Rubyのダウンロードページからソースコードをダウンロードしてインストールします。
http://www.ruby-lang.org/ja/downloads/

```
cd /usr/local/src/
sudo wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.gz
cd /var/lib
sudo tar xvf /usr/local/src/ruby-2.3.0.tar.gz
cd ruby-2.3.0
sudo ./configure --disable-install-doc
sudo make; sudo make install

ruby -v
--> バージョン確認
```

## ImageMagickのインストール
ImageMagickはガントチャートをPNG形式の画像にエクスポートする機能や、添付ファイルのサムネイル画像を作成するのに使われます。
Gemパッケージのインストールする際、PATHを設定しても以下のようなエラーが出るので、対策としてImageMagickをインストールしています。

```
# bundle install --without development test --path vendor/bundle
[略]
An error occurred while installing rmagick (2.15.4), and Bundler cannot continue.
Make sure that `gem install rmagick -v '2.15.4'` succeeds before bundling.

# gem install rmagick -v '2.15.4'
[略]
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found
[略]
```

ImageMagickインストール方法（もっと良い方法ありそう）

```
cd /usr/local/src/
sudo wget http://sourceforge.net/projects/imagemagick/files/old-sources/6.x/6.9/ImageMagick-6.9.1-10.tar.gz
cd /var/lib
sudo tar xvf /usr/local/src/ImageMagick-6.9.1-10.tar.gz
cd ImageMagick-6.9.1-10
sudo ./configure
sudo make;sudo make install
```



# Redmineインストール
## Redmine本体の入手
Redmineのダウンロードページからソースコードをダウンロードしてインストールします。
http://www.redmine.org/projects/redmine/wiki/Download

```
cd /usr/local/src
sudo wget http://www.redmine.org/releases/redmine-3.2.0.tar.gz
cd /var/lib
sudo tar xzfv /usr/local/src/redmine-3.2.0.tar.gz
sudo ln -s redmine-3.2.0/ redmine
ll redmine
cd /var/lib/redmine
sudo chown -R redmine.redmine .
```

## データベース接続設定
database.yml.exampleを参考に、DBに合わせて記述します。ここでは、productionモード(通常用)とdevelopmentモード(開発用)の両方を記述しています。

> productionモード(通常用)とdevelopmentモード(開発用)とは？
> Railsでは、productionモードとdevelopmentモードの2つの動作モードが用意されています。実際に稼動する場合はproductionモードで動作させますが、開発に使う場合はdevelopmentモードの方が少し便利です。
productionモードでは動作を速くするため、一度読み込んだコードは覚えておいて、再度表示する場合はそれを使います。developmentモードの場合は、表示するたびに毎回読み込んでくれます。


```
su - redmine
cp /var/lib/redmine/config/database.yml.example /var/lib/redmine/config/database.yml
chmod 600 /var/lib/redmine/config/database.yml
vi /var/lib/redmine/config/database.yml
```


例

```
production:
  adapter: mysql2
  database: db_redmine
  host: localhost
  username: user_redmine
  password: ****
  encoding: utf8

development:
  adapter: mysql2
  database: db_redmine_dev
  host: localhost
  username: user_redmine
  password: ****
  encoding: utf8
```

## Gemパッケージのインストール
Redmineはrubyの各種モジュールを使用しています。まずは、bundlerという、Redmineが使用するGemを一括インストールするためのツールをインストールします。
その後、bundleコマンドで関連パッケージをインストールします。

```
cd /var/lib/redmine
gem list
gem install bundler --no-rdoc --no-ri

su - redmine
cd /var/lib/redmine
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
bundle install --without development test --path vendor/bundle
```

## Redmine初期設定
Redmineの初期設定をします。

```
bundle exec rake generate_secret_token
--> セッションデータ改竄防止用鍵(クッキーを暗号化する鍵)に生成
bundle exec rake db:migrate RAILS_ENV=production
--> テーブル作成(通常用)
bundle exec rake db:migrate
--> テーブル作成(開発用)
```

## 起動

```
cd /var/lib/redmine

bundle exec rails s --bind=0.0.0.0 -e production
--> productionモードで起動
 
bundle exec rails s --bind=0.0.0.0
--> developmentモードで起動
```

URLにアクセスして、Redmineのホーム画面が表示されれば成功です。

```
http://サーバーのIP:3000/
```

Redmineプラグインの開発環境の準備が整いました。


# 参考
[プラグイン開発ガイド](http://www.r-labs.org/projects/r-labs/wiki/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E9%96%8B%E7%99%BA%E3%82%AC%E3%82%A4%E3%83%89)
[EC2のRHEL7にRedmineを構築するレシピ](http://linux-memo.sakura.ne.jp/aws/redminewithaws_build.html)
[Redmine 2.6をCentOS 7.0にインストールする手順](http://blog.redmine.jp/articles/2_6/installation_centos/)