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_client | engine-default | utf8 |
character_set_connection | engine-default | utf8 |
character_set_database | engine-default | latin1 |
character_set_results | engine-default | utf8 |
character_set_server | engine-default | latin1 |
明示的にすべて「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のサービス一式を再起動します。
Redmineへのアクセス
起動したら、自宅PCのWebブラウザから、Windowsサーバー(EC2)のRedmineにアクセスしてみましょう。
ログイン画面を表示して、Redmineのシステム管理者でログインします。
無事ログインできました!これで作業は完了です。お疲れさまでした。
まとめ
手順は結構長めですがマウスによる操作が多く、内容は比較的簡単でした。
今回のポイントをまとめると次の三つになります。
- DBインスタンスの文字コード
- Widowsサーバー(EC2)からMySQL(RDS)へのログイン
- Redmineデータベースのセットアップ
まだ、不要となったEC2内のMySQLの削除や、それに伴うBitnami Redmineの管理画面の調整などが残っています。これらについては、また別の記事で紹介していきます。