EC2+RDSの環境にAlfrescoを導入してみる

# 参考記事
必要な情報の殆どを以下の記事から得ることができました。ありがとうございます。

- [Alfrescoのインストール作業をコマンド単位で丁寧に記載します](https://qiita.com/sadayuki-matsuno/items/87fb9793b1d38ab58e18)
- [0から始めるAWS入門④：RDS編](https://qiita.com/hiroshik1985/items/6643b7323183f82297b2)

# 構築環境

| AWSリソース | ソフトウェア | バージョン |
|:-:|:-:|:-:|
| EC2 | Ubuntu | 16.04.3 LTS |
| RDS | MySQL | 5.6.37 |


# WEBからダウンロードしたもの

- [Alfresco5.1のインストーラ](https://download.alfresco.com/release/community/201707-build-00028/alfresco-community-installer-201707-linux-x64.bin)
Alfresco公式サイトよりlinux版を入手。

- [MySQLのJDBCドライバ](https://dev.mysql.com/downloads/connector/j/)
tar.gzの方を入手。WEBからダウンロードする場合、Oracle IDの作成が必要だった。
後から分かったが、EC2から以下のコマンドを実施しても入手できた。

```bash
$ sudo wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.45.tar.gz -P /opt
```

その後、EC2上に「/opt」を作成しダウンロードしたAlfresco5.1のインストーラとMySQLのJDBCドライバをアップロードした。

# VPCについて

#### サブネット

- パブリックサブネット 1個
- プライベートサブネット 2個 (RDSを利用するために2個必要)


#### セキュリティグループ

- EC2は8080ポートの開放が必要。


# MySQLの設定

#### MySQLのRDSインスタンスを開始
コンソールから実施。

#### MySQLのRDSインスタンスにログイン

EC2からRDSに接続した。

```bash
$ mysql -u admin -p -h ${RDSのエンドポイント名}
```

#### MySQLの文字コードをUTF-8に設定

日本語対応にするためMySQLの文字コードをutf8に変更した。

デフォルトの文字コード

```mysql
mysql> show variables like 'character%';
+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | utf8                                      |
| character_set_connection | utf8                                      |
| character_set_database   | latin1                                    |
| character_set_filesystem | binary                                    |
| character_set_results    | utf8                                      |
| character_set_server     | latin1                                    |
| character_set_system     | utf8                                      |
| character_sets_dir       | /rdsdbbin/mysql-5.6.37.R1/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec)

mysql> 
```

RDSはAWSコンソール上のパラメータグループを作成し、作成したパラメータグループをRDSインスタンスに適用することで文字コードを設定する。
「latin1」が適用されている以下項目をutf-8に設定したパラメータグループを作成した。

- character_set_server
- character_set_database

パラメータグループを作成すると稼働中のRDSインスタンスに適用出来るようになった。
RDSインスタンスのパラメータグループを変更後、再起動実施。

```mysql
mysql> show variables like 'char%';
+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | utf8                                      |
| character_set_connection | utf8                                      |
| character_set_database   | utf8                                      |
| character_set_filesystem | binary                                    |
| character_set_results    | utf8                                      |
| character_set_server     | utf8                                      |
| character_set_system     | utf8                                      |
| character_sets_dir       | /rdsdbbin/mysql-5.6.37.R1/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec)

mysql> 
```
文字コードを変更できた。


#### データベースの作成

```mysql
mysql> create database alfresco character set utf8;
```



#### ユーザの作成と権限設定

```mysql
mysql> grant all privileges on alfresco.* to 'alfresco'@'%' identified by '${パスワード}' with grant option;
```

# JDBCドライバの解凍

解凍

```bash
$ tar -xzvf mysql-connector-java-5.1.45.tar.gz
```


# Alfrescoのインストールに必要なライブラリ準備

このままAlfresco5.1のインストーラを起動すると以下のようなメッセージが表示される。

```bash
Some or all of the libraries needed to support LibreOffice were not found on your system: fontconfig libSM libICE libXrender libXext libcups libGLU libcairo2 libgl1-mesa-glx
You are strongly advised to stop this installation and install the libraries.
For more information, see the LibreOffice documentation at http://docs.alfresco.com/search/site/all?keys=libfontconfig

Do you want to continue with the installation? [y/N]:
```
LibreOffice(オンラインのプレビュー機能で使用)をサポートするために必要なライブラリが不足している際に表示するメッセージ。
不足するライブラリを導入するためにapt-getを実施。

```bash
$ sudo apt-get install libice6 libsm6 libxt6 libxrender1 libfontconfig1 libcups2 libglu1-mesa libcairo2 libgl1-mesa-glx
```

その後「mesa/libGL.so.1」のシンボリックリンクを作成

```bash
$ cd /usr/lib/x86_64-linux-gnu
$ sudo ln -s mesa/libGL.so.1 ./libGL.so.1
$ ls -l | grep libGL
lrwxrwxrwx  1 root root       15 Feb  8 17:29 libGL.so.1 -> mesa/libGL.so.1
lrwxrwxrwx  1 root root       15 Oct 24  2015 libGLU.so.1 -> libGLU.so.1.3.1
-rw-r--r--  1 root root   453352 Oct 24  2015 libGLU.so.1.3.1
$
```

参考記事：
https://community.alfresco.com/thread/200646-installing-alfresco-51


> Ubuntu solution for alfresco5.2 and above:
>
sudo apt-get install libice6 libsm6 libxt6 libxrender1 libfontconfig1 libcups2 libglu1-mesa libcairo2 libgl1-mesa-glx
cd /usr/lib/x86_64-linux-gnu
ln -s mesa/libGL.so.1 ./libGL.so.1
>
actually all libraries locate in "mesa" folder.. but alfresco will not check this folder... so we need to link to the main folder... this resolves for the about error.. during alfresco installation in ubuntu..
>

# Alfrescoインストール

```bash
$ sudo ./alfresco-community-installer-201707-linux-x64.bin
```

メモリが足りずインストールを進められなかった。

```bash
Please select the installation language
[1] English - English
[2] French - Francais
[3] Spanish - Espanol
[4] Italian - Italiano
[5] German - Deutsch
[6] Japanese - 日本語
[7] Dutch - Nederlands
[8] Russian - Русский
[9] Simplified Chinese - ?体中文
[10] Norwegian - Norsk bokmal
[11] Brazilian Portuguese - Portugues Brasileiro
Please choose an option [1] : 6

エラー: エラーが発生しました。
0.96 GB の RAM では、テストまたは本番環境で Alfresco Content Services を実行するには不十分です。Alfresco 
Content Services が正しく動作しないことがあり、その場合は正常に機能しません。サーバーの RAM を最低 2.0 GB 
にアップグレードしてください。推奨 RAM サイズは 4.0 GB です。
続けるには [Enter] キーを押してください ： 
```

メモリ不足解消のためEC2のインスタンスタイプを「t2.medium」に変更。
その後は先に進むことが出来た。





```bash
Language Selection

Please select the installation language
[1] English - English
[2] French - Francais
[3] Spanish - Espanol
[4] Italian - Italiano
[5] German - Deutsch
[6] Japanese - 日本語
[7] Dutch - Nederlands
[8] Russian - Русский
[9] Simplified Chinese - ?体中文
[10] Norwegian - Norsk bokmal
[11] Brazilian Portuguese - Portugues Brasileiro
Please choose an option [1] : 6
----------------------------------------------------------------------------
ようこそ Alfresco Community セットアップウィザードへ。

----------------------------------------------------------------------------
インストールの種類

[1] 簡易 - デフォルトの設定を使ってインストールします。
[2] 詳細設定 - サーバーのポートとサービスのプロパティを設定できます。: 追加でインストールするコンポーネントを選択してください。
オプションを選択してください [1] : 2

----------------------------------------------------------------------------
インストールするコンポーネントを選択してください。準備ができたら“次へ“をクリックしてください 。

Java [Y/n] :

PostgreSQL [Y/n] :n

LibreOffice [Y/n] :

Alfresco Community : Y (Cannot be edited)

Solr1 [y/N] :

Solr4 [Y/n] :

Alfresco Office Services [Y/n] :

Web Quick Start [y/N] :

Google ドキュメントの統合 [Y/n] :

上記選択部分が正しいことを確認してください。 [Y/n]:

----------------------------------------------------------------------------
インストール先フォルダ

Alfresco Community をインストールするフォルダを選択してください。

インストール先フォルダ: [/opt/alfresco-community]:

----------------------------------------------------------------------------
データベースの設定

JDBC の URL: [jdbc:postgresql://localhost/alfresco]: jdbc:mysql://${RDSのエンドポイント}:3306/alfresco?useUnicode=yes&characterEncoding=UTF-8

JDBC ドライバー: [org.postgresql.Driver]: org.gjt.mm.mysql.Driver

Database name: [alfresco]:

ユーザー名: []:${作成したユーザ名}

パスワード: :${作成したユーザのパスワード}
確認: :
----------------------------------------------------------------------------
Tomcat のポート設定

Tomcat の設定パラメータを入力してください。

Web サーバードメイン: [127.0.0.1]:

Tomcat サーバー用ポート: [8080]:

Tomcat のシャットダウン用ポート: [8005]:

Tomcat の SSL ポート: [8443]:

Tomcat の AJP ポート: [8009]:

----------------------------------------------------------------------------
LibreOffice サーバーのポート

LibreOffice サーバーがリッスンするポート番号を入力してください。

LibreOffice サーバーのポート: [8100]:

----------------------------------------------------------------------------
FTP ポート

統合された FTP サーバーに使用するポート番号を選択してください。

ポート: [21]:

----------------------------------------------------------------------------
管理者のパスワード

Alfresco Content Services 管理者アカウントのパスワードを指定してください。

管理者のパスワード: :
パスワードの再入力: :
----------------------------------------------------------------------------
サービスとしてインストールする

Alfresco Community をサービスとして登録すると、マシンの起動時に自動的に Alfresco Community が開始されます。

Alfresco Community をサービスとしてインストールしますか? [Y/n]:


----------------------------------------------------------------------------
警告

この環境は Alfresco Content Services
を適切に実行するのに十分な構成ではありません。インストールする前に、以下の問題をチェックしてく ださい。

これらの問題があっても Alfresco Content Services
は機能しますが、一部の製品機能が使用できないか、システムが適切に動作しない場合があります。

Not enough system RAM available
 (4.0GB+): 3.85GB


続けるには [Enter] キーを押してください ：

----------------------------------------------------------------------------
お使いのコンピュータに Alfresco Community をインストールする準備が整いました。

続けますか？ [Y/n]:

----------------------------------------------------------------------------
しばらくお待ちください。 Alfresco Community をお使いのコンピュータにインストール中です。

 インストール中
 0% ______________ 50% ______________ 100%
 #########################################

----------------------------------------------------------------------------
セットアップウィザードによる Alfresco Community のインストールが完了しました。

Readme ファイルを表示 [Y/n]: n

Alfresco Community を起動する [Y/n]:

Using CATALINA_BASE:   /opt/alfresco-community/tomcat
Using CATALINA_HOME:   /opt/alfresco-community/tomcat
Using CATALINA_TMPDIR: /opt/alfresco-community/tomcat/temp
Using JRE_HOME:        /opt/alfresco-community/java
Using CLASSPATH:       /opt/alfresco-community/tomcat/bin/bootstrap.jar:/opt/alfresco-community/tomcat/bin/tomcat-juli.jar
Using CATALINA_PID:    /opt/alfresco-community/tomcat/temp/catalina.pid
Tomcat started.
/opt/alfresco-community/tomcat/scripts/ctl.sh : tomcat started
$
```

# tomcat/lib配下にMySQLのJARファイルをコピー

```bash
$ sudo cp -p /opt/mysql-connector-java-5.1.45/mysql-connector-java-5.1.45-bin.jar /opt/alf*/tomcat/lib/
```

参考記事：
[Configuring the MySQL database on Amazon RDS](https://docs.alfresco.com/5.2/tasks/amazon-mysql-config.html)

```tex
5.Install the MySQL database connector.

   The MySQL database connector is required when installing with MySQL. The database connector allows MySQL database to talk to the server.

     a.Download mysql-connector-java-5.1.32 from the MySQL download site: http://dev.mysql.com/.
     b.Copy the JAR file into the /lib directory.

       For example, for Tomcat, copy the JAR file into the <TOMCAT_HOME>/lib directory.
```


# ログイン
```bash
http://${IPアドレス}:8080/share/
```

「認証情報が認識されていないか、現在 Alfresco Content Services が使用できない可能性があります。」と表示されログイン出来ない場合はalfresco-community/alfresco.logを見る。
ERRORの中に「Context initialization failed」がある場合は、Alfrescono起動に失敗しており、以下の可能性がある。

- ホスト名の名前解決に失敗している

hostsファイルを確認。

- DBの接続に失敗している

例えば以下を確認。

- tomcat/lib配下にMySQLのJARファイルがあるか
- DBの接続情報に誤りはないか

参考記事：
[Alfrescoにログインできない](https://community.alfresco.com/thread/209173-alfresco%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84)

# その後の課題

- S3も連携したい
- EC2、RDS、S3の整合性のあるバックアップの取り方