AWSを利用してプライベートRedmineを構築する
今から半年程前、勢いでWeb業界に片足を突っ込んで、いきなりGithubやRedmineを使った超本格プロジェクトに関わることになりヒーヒー言っていたころ、古い友人でもありWebの師でもある人からこう言われたのだ。
「いつか、うちらのRedmineをAWSで構築してほしい」
もともと、インフラエンジニアの僕としては、絶対やってやると思っていたのだが・・・ついに先日構築がうまくいって運用が開始できた!
ということで、やってみれば「以外と簡単じゃん」なのですが、いかんせんネットでしか情報がなく一人で調べながらだと結構な時間を要しました。
自分の備忘録的な意味合いもありますが、ポイントとなる点を記事に書いておきたいと思います。
Contents
AWS/EC2概要
AWSって何?
Redmine構築に入る前に、必須知識となるAWSについて少し学んでいきます。
AWSといえば、近年デファクトスタンダードとなりつつあるAmazonのクラウドサービス。
僕も本職のネットワークエンジニアの分野で必須となってきている知識で馴染み深いものがあります。
とはいえ、AWSはユーザー主導型のサービスというのは有名な話で、業務ではあまり詳細な内容までは突っ込んでいけなかったのが現実。
ということで、この機会に書籍を一冊読んで概要を理解しました。
簡単に概要を記載します。
AWSには大きなカテゴリで13のサービスがあり、さらに細分化してみていくと膨大な量のサービスが存在します。(※この書籍自体、2015年のものなので現在は変更になっているかもしれません)
さらに、ネットワークインフラ(ルーター等)、サーバー、ロードバランサやDNSサーバーなど従来であればオンプレミスで準備していた高コスト環境がAWSのみで完結できます。
つまり、インフラ環境をハードウェアではなく、クラウド仮想環境を使って構築可能ということです!
EC2とは?
その中でも、Webサーバ構築に用いるのはEC2という仮想サーバーになります。
EC2には非常に多くのサービスプランがグレード別に用意されており、これをAWSでは「インスタンスタイプ」と呼んでいます。
AWSサービスを申し込みしてログインすると、いきなり「AMI」という用語が出てきて戸惑うのですが、これは「Amazonマシンイメージ」の略で、各インスタンスタイプに対してAMIが初期搭載されており、ユーザーがマッチングして構築する必要はありません。
インスタンスタイプはt2.microを選択
今回構築するRedmineは仲間内だけで使う、ミニマムでローカルなものになります。
このように、プライベートな環境を構築したい場合は、一番ミニマム、そして無料プラン適用のサービスを適用したいところです。
そこで、選択すべきインスタンスタイプは「t2.micro」となります。
では、実際にAWSの管理画面で「t2.micro」のインスタンスを構築していきたいと思います。
bitnami Redmineインスタンスを作成する
AWSマーケットプレイス
「AWSでRedmineを構築する」というキーワードで検索すると、大体がQiitaだったり、現役エンジニアさんのブログだったりがヒットしてきます。
しかし、その情報がそのまま使えるかというとそうではなく、ネットには古い情報もあったりするので結局はいろんなブログを行ったり来たりすることになるのです・・・。
また、Redmineにはオフィシャルサイトが存在していますが、
これを参照してPHPやらRubyやらをインストールして構築するのは、開発環境を構築したことがない人・・・少なくとも僕レベルの人間には到底敷居が高すぎました。
ちなみに、一度トライはしましたがRubyのインストールでエラーとなり断念しました。
そこで、回避策を探していたところ、AWSマーケットプレイスというものがあり、そこでbitnamiという企業が提供しているRedmineを初期実装したAMIを選択できることがわかりました。
それでは早速AWSにログインしてインスタンスを作成していきます!まずはログイン!

AWSにログインしたら左上の「サービス」からEC2を選びます。


そして「インスタンスの作成」を実行。

左側メニューから「AWS Marketplace」を選択。

検索バーに「bitnami」と入力します。

そして「Redmine Certified by Bitnami」を選択。あとは「Continue」「確認と作成」「確認」と進めていきます。




キーペアを作成する
AWSではサーバーに接続する際にローカル(自分の端末)側とパブリック(AWS)側でキーを共有して認証する方式をとっています。
インスタンス作成の段階でキーペアを作成するように促されますので作成します。
ここでは「Redmine」という名前でダウンロードフォルダに保存しておきたいと思います。


キーペアの作成が終わると自動で作成がはじまります。


少しの間待った後、EC2ダッシュボードに「running」状態のインスタンスが現れたら作成完了です!
Redmine稼動確認
続いてRedmineの稼動確認を行なっていきます。
ブラウザからアクセスする先は構築したサーバのパブリックDNS(IPv4)となります。
AWSマネジメントコンソールの以下の部分です。

これをそのままコピーしてブラウザのアドレスバーへ貼り付け!


無事、おなじみRedmineの画面が表示されれば稼働確認完了です!
初期パスワードを確認する
さらに続いて、Redmineにログインしていきます。
管理者権限のIDは「user」となります。
passwordについてはAWSコンソール上のシステムログから確認する必要がありますので以下の手順でシステムログを確認していきます。


上記の部分で初期パスワードが確認できます。


管理者権限ID「user」と確認したパスワードでログインができたらRedmineの利用開始です!
初期設定
言語設定
無事、管理者権限でログインできたら初期設定を行っていきます。
まず言語を日本語に変更していきます。
右上「My Account」を選択。

Languageを「Japanies(日本語)」に変更。
アカウント設定
次に自分をユーザーとして登録していきます。


「情報」に任意の情報を記載して「作成」するとユーザー権限アカウントの作成完了です!
SSH接続をする
キーペアを設定する
Redmineの利用自体はここまでの手順で開始できるのですが、メール通知機能を利用するためにサーバにログインしてコマンドラインで設定を追加する必要があります。
手順2-2でダウンロードフォルダの中に作成したキーペア(pemファイル)を/users/(ユーザ名)/の中に移動します。
これでコマンドラインからのssh接続が可能になります!

ちなみにpemファイルを適切な場所に移動していないと以下のようにssh接続が拒否されます。

pemファイルをユーザフォルダの直下へ。

ターミナルからSSH接続する
ssh接続するコマンドは「ssh -i “Redmine.pem” ubuntu@ec2-xxx-xxx-xxx-xxx.us-east-2.compute.amazonaws.com」になります。
EC2ダッシュボード上で確認、およびコマンドのコピーが可能なので利用すると良いでしょう。

上記のようにログインできました!
ちなみにxxx-xxx-xxx-xxxの部分は、インスタンスが持つグローバルIPアドレスでインスタンスを停止(再起動)すると変更になります。
メール初期設定
configuration.ymlの編集
ssh接続をしたら早速メール初期設定をします。
今回はメール送信サーバーにGmailを設定します。
~/apps/redmine/htdocs/configの中のconfiguration.ymlというファイルを編集してますので、cdコマンドで該当フォルダまで移動します。
そしてテキスト編集コマンド「vi」でコマンドライン上でテキストに必要な設定を書いていきます。
以下のように設定します。
〜編集前〜
email_delivery:
delivery_method: :smtp
smtp_setting:
address:
port: 587
domain: example.net
authentication: :login
user_name:
password:

〜編集後〜
email_delivery:
delivery_method: :smtp
smtp_setting:
enable_staettls_auto: true
address: “smtp.gmail.com”
port: 587
domain: “smtp.gmail.com”
authentication: :plain
user_name: “xxxxxxxxxxx@gmail.com”
password: “xxxxxxxxxxx”
*xxxxxxxxxxxは実際のメールアドレス、パスワード

ちなみにviは使ったことがないと戸惑うと思います。
vi〜コマンドでviエディタを開いたら「a」で編集モードへ、「esc」で編集モードから抜ける、「:wq」で変更を保存してviを終了、です。
Gmail設定
ここまでの手順でRedmineのメール設定は完了ですが、Gmailのメール送信サーバー(SMTPサーバー)がRedmineからのアクセスを不正なアクセスとみなすため、メール送信が失敗します。

回避策として、Gmail側にアプリパスワードというものを設定します。
Gmai側の設定手順としてはまず二段階認証を有効にして、不正とされているアクセスをアプリパスワードを事前設定してやることにより、許可すると言った流れになります。
こちらのGmailのオフィシャルヘルプからアプリパスワードの生成方法について確認することができます。

上記のページでアプリパスワードを追加した後、再度sshでログインしviエディタでGmailのパスワード部分をアプリパスワードに書き換えます。

そして設定を反映するため、インスタンスを再起動します。インスタンスにマウスオーバーして右クリック→再起動。

再度、Redmine上からテストメールをします。

これで無事メールが届くようになりました!
以上でAWS上でbitnami Redmineを動かす準備ができました!
あとはお好きに設定しちゃってください!