Microsoft Azure上でのCentOS仮想マシン作成と、X11転送でGUIインストーラをWindowsから操作する手順 - Elixir Report

クラウド環境のLinuxインスタンスに、帳票ツールの[Elixir Report](http://www.grapecity.com/tools/info/java/elixir-report/)をインストールする手順を画像付きでまとめています。

今回使用する環境は、Microsoft Azureです。

CentOSの仮想マシン作成を行って、Elixir Reportのインストーラを実行し、GUIをX11転送（X11 Forwarding）でWindows側に飛ばして操作する手順になっています。X11転送を使えば、CentOSにデスクトップ環境が入っていなくてもGUI操作でインストールができるので便利です。

ところで、Elixir Reportが公式にサポートしているLinux OSはRed Hat Enterprise Linuxですが、このまとめではCentOSを利用しています。CentOSでも問題なく動作しています。

#環境
Windows 8.1
Elixir Report 8.7J
Microsoft Azure CentOS 7.2

#WindowsにTera Termをインストール
この記事では、LinuxへのSSH接続にTera Termを使用します。
WindowsへのTera Termのインストール方法は、[Amazon EC2上にRed Hatインスタンスを作成してElixir Reportをコンソールインストールする手順](http://qiita.com/mdmom/items/6382fa66264c4c8168ac)の[［SSH接続用にWindowsにTera Termをインストールしておく］](http://qiita.com/mdmom/items/6382fa66264c4c8168ac#ssh%E6%8E%A5%E7%B6%9A%E7%94%A8%E3%81%ABwindows%E3%81%ABtera-term%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B)の項目を参考にしてください。

#WindowsにXサーバーをインストール
この記事では、Linux上で動作しているアプリケーションのGUIをWindows側に表示する方法（X11転送）を行います。

この方法ではWindows側にXサーバーがインストールされている必要がありますので、今回はXmingというフリーのWindows用Xサーバーを使用します。

詳しい手順は、以前の記事、[Amazon EC2上のRed Hat Enterprise LinuxにX11転送でElixir ReportをGUIインストールする手順](http://qiita.com/mdmom/items/41b42da2dec00d77faa1)の[［WindowsにXサーバーをインストールする］](http://qiita.com/mdmom/items/41b42da2dec00d77faa1#windows%E3%81%ABx%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B)の項目を参考にしてください。

#CentOS仮想マシンの作成

1. Microsoft Azureにログインして、ダッシュボードを表示します。左上の［＋新規］をクリックします。
    ![新規00.png](https://qiita-image-store.s3.amazonaws.com/0/152421/2d98b197-5e67-672c-6ac8-2c0f439ca71a.png)
<br>

2. ［Marketplace］‐［Compute］と進み、フィルターに”CentOS”と入力します。表示された“CentOS-based 7.2”を使用します。
![新規_フィルタリング.png](https://qiita-image-store.s3.amazonaws.com/0/152421/2d0fc0da-f8ba-3cbf-f509-99113822623f.png)
<br>

3. デプロイモデルの選択に“Resource Manager”を選択して、［作成］をクリックします。
    ![リソースマネジャ.png](https://qiita-image-store.s3.amazonaws.com/0/152421/7c2e41ee-a530-c28b-4813-ea44d7bdaa12.png)
 

4. ［基本設定の構成］画面になります。今回は［認証の種類］を”パスワード”にしています。
    ![新規_1基本設定の構成.png](https://qiita-image-store.s3.amazonaws.com/0/152421/c6440bc6-a3e0-549e-182a-5be3bbe039fc.png)
<br>

5. ［仮想マシンのサイズの選択］画面では、1コアの設定を選択しました。
    ![サイズの選択.png](https://qiita-image-store.s3.amazonaws.com/0/152421/94a6cd17-c852-5311-6258-b6bfed0f62fb.png)
<br>
 
6. ［オプション機能の構成］はデフォルト設定のままとしました。
    ![オプション１.png](https://qiita-image-store.s3.amazonaws.com/0/152421/7b4a6f84-240b-9ae2-bcd4-efa803efc818.png)
    ![オプション2.png](https://qiita-image-store.s3.amazonaws.com/0/152421/e49cbfca-ac0b-b21a-299c-f34ad24db26c.png)
<br>
  
7. ［概要］の画面で内容を確認して、［OK］をクリックすると、仮想マシンが作成されます。
    ![概要.png](https://qiita-image-store.s3.amazonaws.com/0/152421/3d1cb4d2-5a97-43a7-f217-f0d78ac12463.png)
<br>

8. デプロイが完了すると、作成した仮想マシンがダッシュボードで確認できるようになりました。
![ダッシュボードで確認.png](https://qiita-image-store.s3.amazonaws.com/0/152421/b17907ef-e8d9-b068-f382-048a49917269.png)


#CentOSへのSSH接続と、X11転送の確認
##Linux側の設定確認とXアプリケーションのインストール

1. WindowsマシンでTera Termを起動し、作成した仮想マシンのパブリックIPアドレスを入力し、SSH接続します。ユーザー名とパスワードは、仮想マシン作成時に指定した内容です。ここでは”testuser/<指定したパスワード>”になります。
<br>

2. 接続に成功したら、X11転送の設定が有効化されているか確認します。rootユーザーは使えないため（以下参考）、sudo でX11転送がYesになっているか確認します。デフォルトで有効化されていることが確認できました。

    ［参考情報］[Azure 上の Linux 仮想マシンでの root 権限の使用](https://docs.microsoft.com/ja-jp/azure/virtual-machines/virtual-machines-linux-use-root-privileges)

    ```
    $ sudo cat sshd_config |grep X11
    [sudo] password for testuser:
    X11Forwarding yes
    #X11DisplayOffset 10
    #X11UseLocalhost yes
    #       X11Forwarding no
    ```

3. Windows側で確認に使用できるXアプリケーションがあるか確認してみますが、`xclock`、`xeyes`、`gedit`などは入っていませんでした。フォント管理の`fc-list`もありません。

    ```shell-session
    $ sudo xclock
    sudo: xclock: command not found
    $ sudo xeyes
    sudo: xeyes: command not found
    $ sudo gedit
    sudo: gedit: command not found
    $ sudo fc-list
    sudo: fc-list: command not found
    ```

4. XアプリケーションをX11転送してWindows上に表示できるか確認するため、`xeyes`というXアプリケーションをインストールすることにします。

    ```shell-session
    $ sudo yum –y install xeyes
    ```

    ※`xeyes`のインストールで、`fc-list`もインストールされます。

##Windows側の設定とテスト
5. Windows側でXmingが起動していることを確認します。
<br>

6. Tera Termの設定で、リモートのXアプリケーションをローカルに表示する設定を行います。Tera Termの［設定］-［SSH転送］をクリックします。
    ![9TeraTerm_SSH転送設定.png](https://qiita-image-store.s3.amazonaws.com/0/152421/50a366e8-ff9c-9be3-a5b1-08664e870e44.png)
<br> 

7. ［リモートの(X)アプリケーションをローカルのXサーバに表示する］にチェックを入れて、［OK］をクリックします。
![10TeraTerm_SSH転送設定01.png](https://qiita-image-store.s3.amazonaws.com/0/152421/cb60dec7-e4df-8cc3-8c98-3aae8d414e5e.png)
<br> 

8. 一旦Tera Termからログインして、再度ログインし直します。
<br>

9. DISPLAY変数が設定されているか確認します。

    ```shell-session
    $ echo $DISPLAY
    
    ```

10. 前の手順で何も返ってこなかった場合は、先ほどインストールした`xeyes`を実行しても次のようなエラーになってしまいます。

    ```shell-session
    $ sudo xeyes
    Error: Can't open display:
    ```

11. [Amazon EC2上にRed Hatインスタンスを作成した時](http://qiita.com/mdmom/items/41b42da2dec00d77faa1)と同じ手順で`xauth`と`x11`のライブラリをインストールします。

    ```shell-session
    $ sudo yum –y install xorg-x11-xauth.x86_64 xorg-x11-server-utils.x86_64
    ```

12. Tera Termでログインしなおし、DISPLAY変数を確認します。今度は自動で設定されていました。

    ```shell-session
    $ echo $DISPLAY
    localhost:10.0
    ```

13. `xeyes`を実行すると、無事Windows側で表示されました。
    ![xeyes.png](https://qiita-image-store.s3.amazonaws.com/0/152421/5ea1ffc5-2219-a29e-7007-a6c7ce0a5ba0.png)


#CentOSへのインストーラの転送とインストールの実行
1. Tera TermのSCPでインストーラを転送します。

2. 転送したインストーラに実行権限を与えます。

    ```shell-session
    $ chmod +x elixirreport87_linux64.bin
    ```

3. testuserの`LANG`環境変数が英語になっている場合は、日本語（`ja_JP.UTF-8`）に変更しておきます。

    ```shell-session
    $ echo $LANG
    en_US.UTF-8
    $ export LANG=ja_JP.UTF-8
    $ echo $LANG
    ja_JP.UTF-8
    ```

4. まず、そのままインストーラを実行すると、Amazon EC2のRed Hatインスタンス上でインストールしたときと同じ`libc.so.6`がないというエラーと`InvocationTargetException`エラーが発生しました。

    ```
    $ ./elixirreport87_linux64.bin
    Preparing to install...
    Extracting the JRE from the installer archive...
    Unpacking the JRE...
    Extracting the installation resources from the installer archive...
    Configuring the installer for this system's environment...
    strings: '/lib/libc.so.6': No such file
    
    Launching installer...
    
    Invocation of this Java Application has caused an InvocationTargetException. This application will now exit. (LAX)
    
    Stack Trace:
    java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit
            at java.awt.Component.<clinit>(Component.java:593)
            at com.zerog.ia.installer.LifeCycleManager.g(DashoA8113)
            at com.zerog.ia.installer.LifeCycleManager.h(DashoA8113)
            at com.zerog.ia.installer.LifeCycleManager.a(DashoA8113)
            at com.zerog.ia.installer.Main.main(DashoA8113)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:497)
            at com.zerog.lax.LAX.launch(DashoA8113)
            at com.zerog.lax.LAX.main(DashoA8113)
    This Application has Unexpectedly Quit: Invocation of this Java Application has caused an InvocationTargetException. This application will now exit. (LAX)
    ```

5. エラーの解消のため、lib.so.6のインストールを行います。

    ```shell-session
    $ sudo yum -y install libc.so.6
    ```

6. 次に、必要なライブラリをインストールします。

    ```shell-session
    $ sudo yum –y install libXtst
    ```

7. もう一度インストーラを実行しますが、日本語フォントがないので□表示になってしまいました（もし実行してしまったときは、赤で囲んだボタンをクリックして、インストールをキャンセルしてください）。

    ![13GUIトーフになる.png](https://qiita-image-store.s3.amazonaws.com/0/152421/be2c2877-a0d2-3861-84a1-f7fda0ba85d8.png)
    ![14終了02.png](https://qiita-image-store.s3.amazonaws.com/0/152421/d94cb934-300b-5550-6b4a-0de9537e6c65.png)
<br>
  
8. フォントのインストールをします。

    ```shell-session
    $ sudo yum -y install vlgothic-fonts ipa-mincho-fonts ipa-gothic-fonts
    ```

9. 再度インストーラを実行すると、問題なくインストーラが起動しました。インストーラの詳細なステップは、[以前の記事](http://qiita.com/mdmom/items/41b42da2dec00d77faa1#gui%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B)を参考にしてください。



#レポートサーバーの起動と、セキュリティ設定
1. レポートサーバーの起動シェルスクリプトを実行します。

    ```
    $ ./reportserver-start.sh &
    ```

    ※”&”を付加してバックグラウンド実行にします。

    【注意】起動ユーザーの`LANG`環境変数が英語の場合、レポートサーバーが英語ロケールで起動され、Webインターフェースのメニュー等が英語表示されます。日本語ロケールへ変更して起動を行ってください。
<br>

2. Windows側のブラウザからWebインターフェースにアクセスしてみますが、タイムアウトしてしまいました。ファイアウォールではじかれているようです。

    ```
    http://<パブリックIPアドレス>:7001/ 
    ```

3. レポートサーバーが使用するポート`7001`の許可をAzureのダッシュボードから追加します。［ネットワークセキュリティグループの設定］から行います。
    ![7001ポート許可.png](https://qiita-image-store.s3.amazonaws.com/0/152421/8355415f-cecd-b0b9-edc9-21ca581a3a56.png)
<br>

4. 仮想マシンの再起動などはしなくても、すぐに7001ポートでのアクセスに成功し、レポート生成もできるようになりました。

#CentOSインストールのまとめ
CentOSへのElixir Reportのインストールは、Amazon EC2上のRed Hatインスタンスへのインストールと同じライブラリやフォントのインストールが必要で、Windows側の準備や設定も同じでした。設定などを以下にまとめておきます。

##CentOSにインストールした項目
・ライブラリ

```shell-session
$ sudo yum –y install xorg-x11-xauth.x86_64 xorg-x11-server-utils.x86_64
$ sudo yum -y install libc.so.6
$ sudo yum –y install libXtst
```

・フォント関連

```shell-session
$ sudo yum -y install vlgothic-fonts ipa-mincho-fonts ipa-gothic-fonts
```

※xeyesをインストールしなかった場合は以下も必要

```shell-session
$ sudo yum –y install fontconfig
```

・確認用のXアプリケーション（必須ではありません。インストールしなかった場合は、上記のfontconfigのインストールを行ってください）

```shell-session
$ sudo yum –y install xeyes
```

##CentOSの仮想マシンに行った設定変更
・ポート7001の開放（ネットワークセキュリティグループの設定）


#参考情報
よくあるエラーをこちらの記事の[参考情報](http://qiita.com/mdmom/items/41b42da2dec00d77faa1#%E5%8F%82%E8%80%83%E6%83%85%E5%A0%B1)にまとめています。