[備忘録] AWSにConfluenceを立ち上げる （未完)

# はじめに
老後を考え「五十の手習い」で始めたIT云々。 ぼんやりとした方向性はあるもの、とりあえず、いろいろと食い散らかしている最中。 さすがに、メモリーの劣化はまのがれず。 Qiitaは場違いとは思うが、ド素人の備忘録として少々スペースをつかわせていただくことにした。

# テーマ
- いろいろ試行錯誤しながら知識と経験を積み重ねて行こうとするが、それらを容易に記録し後で簡単に活用できるスペースがないので、自分で作る。

# 背景
- 会社でAtlassianのJIRAやConfluenceを使っていたので、自分で立ち上げてみようと思った。
- JIRAとConfluenceは、10ユーザーまでなら10ドルで利用できる。
- AWSの無料の範囲は、「五十の手習い」には充分。

# 目標
- AWSにできるだけ安い環境を作り、Confluenceを立ち上げる。

# ステップ
1. AWSにできるだけ安い環境を作る
    1. EC2を立てる
    2. ボリュームを追加する
    3. データベースを作る（RDS）
4. ConfluenceをEC2にインストールする
    5. Apatchインストールする。
    7. MYデータベースを設定する

# AWSにできるだけ安い環境を作る
## AWS上でEC2を立てる
- Amazonマシンイメージ（AMI）から無料利用枠対象のAMIを撰
    - Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type - ami-a0cfeed8
- インスタンスタイプを選ぶ
    - **注意！** 無料枠の「t2 micro」だとスペックが低すぎてConfluenceが立ち上がらない。 止むを得ず「t2 small」を選択。 これだと、辛うじて立ち上がる。
- インスタンスの詳細の設定 （省略）
    - 以前に、AWSで遊んだ時の環境があったので、ネットワーク（VPC）やセキュリティグループ等は既存を活用
- ストレージの追加
    - ここで新しいボリュームを追加（参考1）
        - /dev/sdfに10GBをSSDで追加
        - 念の為、削除防止とEC2と同時に削除を設定

## AWS上でデータベースを作る
- RDSサービスからインスタンスの追加を行う
    - 今回は、PostgrSQLを使う （理由：なんとなく好きだから）
    - **注意！** 嬉しくて最新のバージョンで作らないこと。 適応バージョンを確認してから。 今回は、```9.6```
    - [x] RDS無料利用枠対象のみを有効化にチェック
    - DBインスタンスのクラスは、無料枠の[db.t2.micro - 1 vCPU, 1 GiB RAM]を選択
    - 設定（DBインスタンス識別子、マスターユーザー名とパスワードの設定）は注意深く行う。 必ずメモっておく。
    - [詳細設定]の設定での注意点
        - アベイラビリティーゾーンは、DBを利用するEC2のインスタンスを合わせておく。 経験では、ここが違うとEC2からDBが使えない。
        - パブリックアクセスは、「はい」に

## 立ち上げたEC2上での設定
- WindowsからGitBashで立ち上げたEC2にSSH
    - 踏み台のインスタンスを立ち上げていたので、\.ssh\configを作って簡単ログオンできるようにした（参考3)
- 追加したボリュームをマウント
    - fdiskをインストール
    - リストでディスクを確認 
    - 初期化を行いマウント
    
```
$ sudo yum -y install xfsprogs
$ sudo fdisk -l
<--- 略 ---/>
$ sudo mkfs.ext3 -b 4096 /dev/xvdf
$ sudo mkdir /mnt/data
$ sudo mount /dev/xvdf /mnt/data
$ mount
<---マウントを確認 ---/>
/dev/xvdf on /mnt/data type ext3 (rw)
<---自動的にマウントする設定---/>
$ sudo vi /etc/fstab
<---vimで以下のラインを追加---/>
/dev/xvdf /mnt/data ext3 noatime 0 0
```

- httpd（HyperText Transfer Protocol Daemon）をインストールする

```
$ sudo yum -y install httpd
$ sudo chkconfig httpd on
$ sudo service httpd start
<---WEBブラウザーでIPを叩いてAmazon Linux AMI Test Pageが表示されることを確認---/>
```

- httpd.confを編集しておく
    - 後でインストールするConfluenceへのアクセス方法を定義

```
$ sudo vi /etc/httpd/conf/httpd.conf
<---以下を追記---/>
<Location /jira>
  ProxyPass ajp://localhost:8209/wiki
</Location>

<---httpdをリロード---/>
$ sudo /etc/init.d/httpd reload
```



# 立ち上げたEC2にConfluenceをインストールする
- EC2にSSH
    - WindowsからGitBashで立ち上げたEC2にSSH
        - 踏み台のインスタンス経由
- ディレクトリの作成（参考1）
    - 今回は、少ない容量の活用と管理を容易にするために以下のようなディレクトリを作ってインストールした
        - アプリ用 ```/mnt/atlassian/confluence```
        - データ用 ```/mnt/data/atlassian/confluence-home```
- Confluneceのダウンロードとインストール
    - [Confluence Installation Guide](https://confluence.atlassian.com/doc/confluence-installation-guide-135681.html)から最新版のをダウンロードしてインストール

```
$ wget https://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-6.11.0-x64.bin
$ sudo chmod a+x atlassian-confluence-6.11.0-x64.bin
$ sudo ./atlassian-confluence-6.11.0-x64.bin
<---インストールを始めると、選択肢が要求される。今回の設定は、以下のとおり---/>
<Custom Install [2]/>
<Where to install: /mnt/atlassian/confluence />
<Default location for data: /mnt/data/atlassian/confluence-home />
<Confluence as service? [Yes] />
```

- Confluenceの設定を始める前に、server.xmlを編集

```
$ sudo vi /mnt/atlassian/confluence/conf/server.xml
<--- === HTTP - Proxying Confluence via Apache...=== の下にあるセクションの設定からコメントアウトを取り、以下のように編集 ---/>
<Connector port="8209" connection... protocol="AJP/1.3"/>

<--- さらに、下にあるセクションにあるContext Pathを以下のように変更 ---/>
<Context path="/wiki" .../>
```

- ここまでできたらConfluenceの再起動

```
<---サービスとしてインストールしたので、以下のコマンドから捜査---/>
$ sudo /etc/init.d/confluence start
$ sudo /etc/init.d/confluence stop
$ sudo /etc/init.d/confluence restart
```

# Confluenceの設定
- サーバー側の設定が完了したところで、Confluenceの初期設定を行う
- WebブラウザーからConfluenceが稼働しているEC2のIPをアドレスを叩く
    - 今回は、server.xmlとhttpdの設定を変えているので、```http://xxx.xxx.xxx.xxx/wiki```
- Confluenceの初期設定画面が表示されたら、画面の指示に従って設定を行う。
    - 本番稼働するには、あらかじめライセンスを購入し、ライセンスキーを準備しておく
    - データベースは、「My Databasw」を使った。　
    - 全ての設定が終わると、Confluenceが内部で初期設定を開始する。

# しかし、ここで問題発生！　
設定ももうすぐ終わるかとワクワクしていたら、いきなりエラーが返された。

```
com.atlassian.util.concurrent.LazyReference$InitializationException: java.lang.IllegalStateException: Spring Application context has not been set
    at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:149)

caused by: java.lang.IllegalStateException: Spring Application context has not been set
    at com.atlassian.spring.container.SpringContainerContext.getComponent(SpringContainerContext.java:48)
```

なんのことやら、チンプンカンプン。　JIRAをインストールした時には、こんな問題は発生しなかったのに。　アトラシアンのサポート資料を漁って対策を探すも時間がかかりそう。
ここで、気力が尽きてしまった。　いったん、ここで作業を中断。　気力が戻ったら再開しよう。

      
        

# 参考資料
1. [Amazon LinuxにAtlassian JIRA 5.2.5をインストールしてみた (都元ダイスケ)](https://dev.classmethod.jp/cloud/aws/atlassian-jira-5_2_5-on-amazon-linux/)
2. [AmazonLinuxにConfluenceを入れてみました。(豊崎隆)](https://dev.classmethod.jp/etc/instaleed_confluence_to_amazonlinux/)
3. [Amazon VPC環境にメンテナンス用の踏み台サーバを構築する (都元ダイスケ)](https://dev.classmethod.jp/cloud/aws/bastion-host-on-amazon-vpc/)