サイトアイコン A1 Style

AWS EC2+RDSの構成でBitnami Redmineを稼働させる方法

Amazon Web Service(AWS)には、Elastic Compute Cloud(EC2)だけでなく、Relational Database Service(RDS)にも一年間に渡って20GBの無料利用枠があります。

両方で50GBだから結構なボリュームですね。Bitnami Redmineで一緒にインストールされたローカルのMySQLを、RDSに置き換えることができれば、EC2のリソースに少し余裕も生まれます。

そこで試行錯誤した結果、EC2(Windowsサーバー)にインストールしたBitnami Redmineを、EC2+RDSのシステム構成で上手く稼働させることができたので、手順を紹介します。

Bitnami Redmineのレアな情報を織り交ぜながら手順を紹介していますので、最後までお付き合いいただければ嬉しいです。

DBインスタンスの作成

DBインスタンスの作成を始めるには、RDSダッシュボードの「今すぐ始める」ボタンをクリックします。
ウィザードに沿って数クリックすれば作成できます。また、ウィザードはいつでも中止することができます。

DBエンジンの選択

MySQLを選択します。

開発/テストの選択

無料利用枠での使用を目的としているので、「開発/テストのMySQL」を選択します。

DB詳細の指定

最初に「RDS 無料利用枠内で利用できるオプションのみを表示」にチェックを入れて、不用意に有利オプションを選択しないようにしておきましょう。

今回は次のように指定しました。マスターユーザーの名前とパスワードは、この後度々使用します。忘れないようにご注意ください。

詳細の設定

「ネットワーク&セキュリティ」の次の項目を確認します。

パブリックアクセス可能

自宅PCからODBCで接続する場合は「はい」を入力します。

VPCのセキュリティグループ

「default(VPC)」は外部から全くアクセスできないようになっています。今回はEC2と併用するので、今使っているEC2インスタンスと同じセキュリティグループを選択します。
その他の項目は、デフォルトのままで大丈夫ですが、「データベースの名前」を入力しておくとRDSインスタンスの生成と同時にデータベースが作成されるので、ちょっとだけ手間が省けます。今回は「redminedb」と入力しました。

[DBインスタンスの作成]ボタンをクリックすると、作成が始まります。

少し時間がかかるので、インスタンスの一覧を表示しながら待ちましょう。ステータスが「利用可能」になれば完成です。

文字コードをutf8に変更

RDSでは、データベースのパラメータを「パラメータグループ」で管理します。作成したばかりのRDSインスタンスには、デフォルトのパラメータグループが設定されています。

このグループでは、ほとんどがDBエンジンのデフォルトのため、主な文字コードの設定が次のような設定になっています。

パラメータ設定
character_set_clientengine-defaultutf8
character_set_connectionengine-defaultutf8
character_set_databaseengine-defaultlatin1
character_set_resultsengine-defaultutf8
character_set_serverengine-defaultlatin1

明示的にすべて「utf8」を指定したいのですが、デフォルトのパラメータグループは変更できないため、独自のパラメータグループに差し替えてから変更します。

独自グループの作成

RDSダッシュボードのパラメータグループにある[パラメータグループの作成]ボタンをクリックします。

グループ名、説明(全角文字はNGのようです)を入力して[作成]ボタンをクリックします。

独自のパラメータグループ「myparam」を作成しました。作成直後の内容は、デフォルトと同じになっています。

インスタンスへの適用

RDSダッシュボードのインスタンスで、「インスタンスの操作」の「変更」を選択します。

「DBパラメータグループ」のプルダウンリストから、先ほど作成した独自のパラメータグループを選択します。「すぐに適用」にチェックを入れて、[次へ]ボタンをクリックします。確認画面が表示されるので、[DBインスタンスの変更]ボタンをクリックして変更を適用します。

パラメータの変更

RDSダッシュボードのパラメータグループから対象を選択して、[パラメータの編集]ボタンをクリックします。

次の各パラメータの値を「utf8」に変更して、[変更の保存]ボタンをクリックします。

パラメータ
character_set_client
character_set_connection
character_set_database
character_set_results
character_set_server

RDSダッシュボードからインスタンスを再起動すれば、文字コードの変更は完了です。

EC2からのアクセス確認

ここで、Windowsサーバー(EC2)からMySQL(RDS)にアクセスできるか、一度確認しておきます。ついでですから、変更したデータベースの文字コードも確認しておきましょう。

コマンドプロンプトの起動

Windowsサーバー(EC2)にリモートデスクトップで接続して、Bitnami Redmineのコマンドプロンプトを起動します。

RDSへのアクセス

マスターユーザーでMySQL(RDS)にログインします。コマンドの構文は次の通りです。

mysql -h [エンドポイント] -P [ポート番号] -u [マスターユーザー名] -p

問題無くアクセスできることが確認できました。続けて文字コードを確認しましょう。

show variables like “chara%”;

「latin1」だった「character_set_database」と「character_set_server」が「utf8」に変更されていることが確認できました。

データベースの一覧を表示します。

show databases;

インスタンスと一緒に作成したデータベース「redminedb」が表示されています。

次は、このデータベースにRedmineのテーブルを生成していきます。

Redmineのテーブルを生成

「database.yml」を変更後に、rakeコマンドを実行してテーブルを生成します。

database.ymlの変更

「(インストールディレクトリ)\apps\redmine\htdocs\config」にある「database.yml」をテキストエディタで開いて、次のように変更します。

roduction:
adapter: mysql2
database: データベース名
host: エンドポイント
username: マスターユーザー名
password: マスターパスワード
encoding: utf8
port: ポート番号

rake db:migrateの実行

データベースにRedmineのテーブルを生成するため、rakeコマンドを実行します。

rake db:migrate RAILS_ENV=production

「rake aborted!」が返ってきました!失敗です。「今のrakeのバージョンは10.1.0だが11.1.2が必要」とのことです。このエラー、バージョンの違いこそあれ、Bitnami Redmineでは毎度のことですね。

手作業でrakeのGemをインストールするため、https://rubygems.org/で「rake」を検索して「11.1.2」をダウンロードしてきました。

「C:\Bitnami\redmine」フォルダにダウンロードしたGemファイルを保存して、次のコマンドでインストールを実行します。

gem install rake -v 11.1.2

インストールできたので、もう一度rakeコマンドを実行すると、今度は大量のログが出力されました。上手く生成できたようです。

なお、この時、Redmineのシステム管理者(Bitnami Redmineのインストール時に決めたアカウント)が初期ユーザーとして登録されています。

マスターユーザーでMySQL(RDS)にログインして、テーブルが作成できているか、確認してみましょう。

use redminedb;
show tables;

Redmine用アカウントを作成

MySQLに、Redmine用のアカウントを作成します。ユーザー名とパスワードを自由に決めてください。ぼくはユーザー名を「bitnami」、パスワードを「tokyo@03」にしました。

database.ymlの変更

「(インストールディレクトリ)\apps\redmine\htdocs\config」にある「database.yml」をテキストエディタで開いて、「username」と「password」をRedmine用アカウントに変更します。

production:
adapter: mysql2
database: データベース名
host: エンドポイント
username: Redmine用アカウントのユーザー名
password: Redmine用アカウントのパスワード
encoding: utf8
port: ポート番号

MySQLにアカウントを登録

「database.yml」に記載したアカウントを、MySQLに登録します。EC2インスタンスからログインするので、IPアドレスはEC2インスタンスのプライベートIPです。IPはリモートデスクトップの右上にも表示されています。

grant usage on . to ‘ユーザー名’@’IPアドレス’ identified by ‘パスワード’;
grant all privileges on データベース名.* to ‘ユーザー名’@’IPアドレス’;

Redmineの起動確認

サービスの再起動

Bitnami Redmineの管理画面にある[Restart All]ボタンをクリックして、Redmineのサービス一式を再起動します。

ローカルのデータベースにはアクセスしないので、「MySQL Database」は再起動の必要はありませんが、ワンクリックで済むので、まとめて再起動しています。

Redmineへのアクセス

起動したら、自宅PCのWebブラウザから、Windowsサーバー(EC2)のRedmineにアクセスしてみましょう。

ログイン画面を表示して、Redmineのシステム管理者でログインします。

無事ログインできました!これで作業は完了です。お疲れさまでした。

まとめ

手順は結構長めですがマウスによる操作が多く、内容は比較的簡単でした。

今回のポイントをまとめると次の三つになります。

まだ、不要となったEC2内のMySQLの削除や、それに伴うBitnami Redmineの管理画面の調整などが残っています。これらについては、また別の記事で紹介していきます。

モバイルバージョンを終了