Microsoft Azure上でのCentOS仮想マシン作成と、リモートデスクトップ接続でWindowsからGUIインストールする手順 - Elixir Report

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

今回はMicrosoft AzureにCentOSの仮想マシンを作成して、Windowsからリモートデスクトップで接続しインストールする手順を紹介します。

X11転送でインストールする手順については、別記事[Microsoft Azure上でのCentOS仮想マシン作成と、X11転送でGUIインストーラをWindowsから操作する手順 - Elixir Report](http://qiita.com/mdmom/items/1b8044dcb21e38510a44)にまとめてありますので、参考にしてください。


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

#WindowsにTera Termをインストール
Linux OSへのSSH接続にはTera Termを使用します。Tera TermのWindowsへのインストール方法は、[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)を参考にしてください。

#CentOS仮想マシンの作成
1. Microsoft Azureにログインして、ダッシュボードを表示します。左上の［＋新規］をクリックします。
    ![新規00.png](https://qiita-image-store.s3.amazonaws.com/0/152421/4072d38f-27d3-98a2-a7e9-55a2950dea0d.png)
<br>

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

3. デプロイモデルの選択に“Resource Manager”を選択して、［作成］をクリックします。
    ![リソースマネジャ.png](https://qiita-image-store.s3.amazonaws.com/0/152421/8dd1b488-f95c-8a48-a3b4-8048d31561b2.png)
<br>

4. ［基本設定の構成］画面になります。今回は［認証の種類］を”パスワード”に、［ディスク］をHDDに、［場所］を“西日本”しています。ユーザー名はtestuserとします。
    ![VM作成01.png](https://qiita-image-store.s3.amazonaws.com/0/152421/a7a439ae-1d76-e3aa-4b48-aa1050842a93.png) 
<br>

5. ［仮想マシンのサイズの選択］画面では、1コアの設定を選択しました。
    ![VM作成size.png](https://qiita-image-store.s3.amazonaws.com/0/152421/452c4085-5a11-bfa0-1b30-0151fd971760.png)
<br>

6. ［オプション機能の構成］はデフォルト設定のままとしました。
 

7. ［概要］の画面で内容を確認して、［OK］をクリックすると、仮想マシンが作成されます。
    ![VM作成4.png](https://qiita-image-store.s3.amazonaws.com/0/152421/436a855d-631d-9651-ecba-667612eaf0f0.png)
<br>

8. デプロイ中の状況は、［通知］から確認できます。
    ![VM作成_デプロイ中.png](https://qiita-image-store.s3.amazonaws.com/0/152421/64b7b820-9a11-25f1-ac80-73f8d6454169.png)
<br>

9. デプロイが完了すると、ダッシュボードで作成した仮想マシンが確認できるようになりました。
    ![VM作成完了.png](https://qiita-image-store.s3.amazonaws.com/0/152421/aaa59fec-1399-934d-131c-93539cc2eb9b.png)
 

#CentOSへのデスクトップ環境とVNCサーバー、XRDPのインストール

1. デスクトップ環境に必要なパッケージをインストールします。

    ```shell-session
    $ sudo yum grouplist
    $ sudo yum –y groupinstall "GNOME Desktop" "Graphical Administration Tools"
    ```

2. VNCサーバーをインストールします。

    ```shell-session
    $ sudo yum –y install tigervnc-server xorg-x11-fonts-Type1
    ```

3. VNCサーバーのユニットファイルをコピーします。

    ```shell-session
    $ sudo cp -a /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
    ```

4. コピーしたユニットファイルを編集して、`<USER>`の部分をログインユーザー名の`testuser`で置き換えて、上書き保存します（コマンドは一行です）。

    ```shell-session
    $ sudo vi /etc/systemd/system/vncserver@:1.service
    ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
    PIDFile=/home/<USER>/.vnc/%H%i.pid
    ```

5. 下記の参考情報を参考に、ファイアウォールに次の二つのポートを許可します。ですが筆者の環境ではファイアウォールは起動していませんでした。

    [Remote Desktop to your Linux Azure Virtual Machine（マイクロソフト）](https://blogs.msdn.microsoft.com/cloud_solution_architect/2015/05/02/remote-desktop-to-your-linux-azure-virtual-machine/)


    参考情報に記載されているポートの追加：

    ```shell-session
    $ firewall-cmd --permanent --zone=public --add-port=5901/tcp
    $ firewall-cmd --permanent --zone=public --add-port=3389/tcp 
    $ firewall-cmd --reload
    ```


    筆者の環境での結果：

    ```shell-session
    $ firewall-cmd --permanent --zone=public --add-port=5901/tcp
    FirewallD is not running
    ```

6. xrdpをインストールするため、EPELリポジトリのインストールを行います。先ほどの参考情報のURLが利用できなかったので、yumでインストールしました。

    ```
    $ sudo yum install epel-release
    [sudo] password for testuser:
    Loaded plugins: fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
    Resolving Dependencies
    --> Running transaction check
    ---> Package epel-release.noarch 0:7-6 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package                Arch             Version         Repository        Size
    ================================================================================
    Installing:
     epel-release           noarch           7-6             extras            14 k

    Transaction Summary
    ================================================================================
    Install  1 Package
    
    Total download size: 14 k
    Installed size: 24 k
    Is this ok [y/d/N]: y
    Downloading packages:
    epel-release-7-6.noarch.rpm                                |  14 kB   00:00
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : epel-release-7-6.noarch                                      1/1
      Verifying  : epel-release-7-6.noarch                                      1/1
    
    Installed:
      epel-release.noarch 0:7-6
    
    Complete!
    ```

7. xrdpのインストールを行います。

    ```shell-session
    $ sudo yum install xrdp 
    $ sudo chcon -t bin_t /usr/sbin/xrdp* 
    $ sudo systemctl start xrdp.service 
    $ sudo systemctl enable xrdp.service 
    $ sudo systemctl start xrdp-sesman.service
    ```

8. VNCサーバーを起動します。

    ```shell-session
    $ sudo su -
    # systemctl start vncserver@:1
    # ps -ef|grep vnc
    testuser  1474     1  0 08:23 ?        00:00:00 /usr/bin/Xvnc :1 -desktop CentOSDesktop:1 (testuser) -auth /home/testuser/.Xauthority -geometry 1024x768 -rfbwait 30000 -rfbauth /home/testuser/.vnc/passwd -rfbport 5901 -fp catalogue:/etc/X11/fontpath.d -pn
    testuser  1478     1  0 08:23 ?        00:00:00 /usr/bin/vncconfig -iconic
    root      1617  1397  0 08:23 pts/0    00:00:00 grep --color=auto vnc
    ```

9. netstatコマンドでxrdp（3389）、VNC（5901）用のポートが”LISTEN”状態になっていることを確認しました。

    ```
    $ netstat -ant
    ```
    ![xrd起動をnetstatで確認.png](https://qiita-image-store.s3.amazonaws.com/0/152421/18531eb2-192d-05b2-6063-b587e9a51d58.png)
<br>
 
10. 仮想マシンの［ネットワークセキュリティグループ］の設定で、［受信セキュリティ規則］にリモートデスクトップ用の“`3389`”とVNC用の”`5901`”の２つを追加しました。
    ![ポート開放3389.png](https://qiita-image-store.s3.amazonaws.com/0/152421/4828ddb2-17fd-cc40-61f5-105427072e1c.png)
    ![ポート開放5901.png](https://qiita-image-store.s3.amazonaws.com/0/152421/b6f16e24-c60c-adc6-5bc6-bb33440bca13.png)
 

#WindowsからのVNC接続
この記事はリモートデスクトップからの接続を目的にしていますが、仮想マシンにはVNCからも接続できるようになったはずです。せっかくなので、Windows側にインストール済みのVNCビューア`UltraVNC Viewer`で接続を試してみたいと思います。

1. VNCでのログインテストを行います。Windows側でUltraVNC Viewerを起動し、仮想マシンのパブリックIPアドレス::5901に接続します。
    ![ultraVNC_IP.png](https://qiita-image-store.s3.amazonaws.com/0/152421/d39f6edf-26fd-80c0-dc3d-298a86ac19c4.png)
<br>
 
2. パスワード入力画面が表示されました。パスワードが長すぎる場合はすべて入力できず警告音がなりますが、接続には問題ありませんでした。
    ![ultraVNC_password.png](https://qiita-image-store.s3.amazonaws.com/0/152421/d1933b1f-6c55-da03-5b68-13e8e1b2d9c7.png)
<br>
 
3. ようこそ、画面が表示されました。”日本語”、”日本語（かな漢字）キーボード”を選択し、アカウントはスキップして進むと、デスクトップが表示されました。
    ![ultraVNC_ようこそ画面.png](https://qiita-image-store.s3.amazonaws.com/0/152421/01d37632-24c2-737d-8012-146cfb891e9e.png)
    ![ultraVNC_ようこそキーボード.png](https://qiita-image-store.s3.amazonaws.com/0/152421/26501ed3-7dce-72b5-094f-dc43a629faf9.png)
    ![ultraVNC_デスクトップ.png](https://qiita-image-store.s3.amazonaws.com/0/152421/c1525a43-8e7a-a629-c934-51833705d0c9.png)

 
 
 
#Windowsからリモートデスクトップで接続

1. Windowsで、リモートデスクトップを起動します。［スタート］-［プログラム］-［Windowsアクセサリ］-［リモートデスクトップ接続］
<br>

2. 接続先に、仮想マシンのパブリックIPアドレスを指定して［接続］をクリックします。
    ![RDP接続.png](https://qiita-image-store.s3.amazonaws.com/0/152421/9d7cc506-5d50-d35e-6b3e-f2d305a6635c.png)
<br> 

3. 警告が出ますが受け入れます。
    ![RDP警告.png](https://qiita-image-store.s3.amazonaws.com/0/152421/b130586a-686a-2c05-e576-a7494eb5224a.png)
<br>

4. 仮想マシンのログイン画面が表示されるので、ユーザー名/パスワードでログインします。
    ![RDP_ログイン.png](https://qiita-image-store.s3.amazonaws.com/0/152421/16da5b2e-7c7b-cb47-f60d-14b643bffdc1.png)
<br>
 
5. 接続できたと思ったのですが、“VNC error – only supporting 8, 15, 16 and 24 bpp rdp connections”というエラーが表示されてしまいました。色の深さが 24ビット以下でないと接続できないというエラーのようです。
![RDP_VNC error.png](https://qiita-image-store.s3.amazonaws.com/0/152421/eec01fea-494a-00d4-c425-5c3653481b80.png)
<br>
 
6. Tera Termから設定ファイルを編集します。/etc/xrdp/xrdp.iniを編集し、bppの上限を32から24に変更します。

    ```
    $ sudo vi /etc/xrdp/xrdp.ini
    ```

    以下のように編集しました。

    ```
    #max_bpp=32
    max_bpp=24
    ```
7. xrdpサービスを再起動します。

    ```
    $ sudo systemctl restart xrdp.service
    $ sudo systemctl restart xrdp-sesman.service
    ```

8. 再度リモートデスクトップで接続してログインしてみると、接続ができ認証画面が表示されます。
    ![RDP_Authentication画面.png](https://qiita-image-store.s3.amazonaws.com/0/152421/e8042156-6088-b7c9-a459-b46888cd92b6.png)
<br>

9. デスクトップが表示されました。
    ![RDP_デスクトップ.png](https://qiita-image-store.s3.amazonaws.com/0/152421/8ffe0766-52cc-1a1a-fba6-effda5af8c80.png)

#レポートサーバーインストーラの転送とインストールの実行
1. Tera TermのSCPでインストーラ（`elixirreport87_linux64.bin`）、ライセンスファイル（`*.license`）をユーザーのHome（SCPでは`~/`と入力）に転送します。

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

    ```
    $ chmod +x elixirreport87_linux64.bin
    ```

3. リモートデスクトップに移動し、メニューの［アプリケーション］から［端末（英語の場合はTerminal）］を開きます。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インスタンス上でのインストールと同様に`lib.so.6`がないというエラーが発生します。このエラーがでてもGUIインストーラは表示されますが、一旦インストーラをキャンセルします。

    ```
    $ ./elixirreport87_linux64.bin
    ```

    ※インストーラのダブルクリックでの実行はできません。

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

    ```
    $ sudo yum -y install libc.so.6
    ```
6. 端末からもう一度インストーラを実行するとインストーラが表示されました。ステップに沿って進めればインストールが完了します。インストール先は、ユーザーが書き込み権限を持つ場所にすることに注意してください。
    ![インストール要約.png](https://qiita-image-store.s3.amazonaws.com/0/152421/b08da347-bf4d-a9b6-1355-401ef67ffe29.png)

インストールの詳細なステップを確認したいときは、[Amazon EC2上のRed Hat Enterprise LinuxにX11転送でレポートサーバーをGUIインストールする手順](http://qiita.com/mdmom/items/41b42da2dec00d77faa1)の[［GUIインストールを実行する］](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. 端末で<レポートサーバーのインストールディレクトリ>/binに移動し、起動シェルスクリプトを実行します。

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

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

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

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

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

3. Azureのダッシュボードで、ポート7001を許可します。［ネットワークインターフェース］-［ネットワークセキュリティグループの設定］から行います。
    ![7001許可.png](https://qiita-image-store.s3.amazonaws.com/0/152421/2624f1c5-b910-5b3b-24cf-5b8c4446e075.png)
<br>
 
4. 7001ポートを許可すると、OSなどの再起動なしで、すぐに7001ポートへのアクセスができるようになりました。
    ![ログイン画面初回.png](https://qiita-image-store.s3.amazonaws.com/0/152421/fa12d730-69d7-12d9-5977-2986cc8237fd.png)
<br>
 
5. デフォルトの管理者”admin“、パスワード”sa”でログインし、［リポジトリ］-［samples］以下のrmlファイルを選択し、希望の形式でレポート生成確認ができました。
    ![サンプルの実行.png](https://qiita-image-store.s3.amazonaws.com/0/152421/a9362c6b-a3d1-e5ef-8583-377b93249eb2.png)
 

#CentOSインストールのまとめ
##CentOSにインストールした項目まとめ

・デスクトップ環境
・EPELリポジトリ
・xrdp

```
$ sudo yum install xrdp 
```

・VNCサーバー
・libc.so.6ライブラリ

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

##CentOSの仮想マシンに行った設定変更まとめ

・ネットワークセキュリティグループにてポートの開放
 - 7001（Elixirレポートサーバー）
 - 5901（VNC）
 - 3889（リモートデスクトップ）

・色の深さの設定変更

```
$ sudo vi /etc/xrdp/xrdp.ini
```

#参考情報
Q1. デプロイメントモデルにResource Managerとクラシックのどちらを選択すべきか？

下記のマイクロソフトの情報によると、Azureのデプロイメントモデルの種類は、従来のクラシックとResource Managerがあり、これらのモデルは互換性がありません。新しいリソースには Resource Manager を利用し、既存のリソースもResource Manager で再デプロイすることが推奨されているようです。

[Azure Resource Manager とクラシック デプロイ: デプロイ モデルとリソースの状態について](https://docs.microsoft.com/ja-jp/azure/resource-manager-deployment-model)

[Azure 上の Windows VM へのリモート デスクトップ接続に関する問題の詳細なトラブルシューティング手順](https://docs.microsoft.com/ja-jp/azure/virtual-machines/virtual-machines-windows-detailed-troubleshoot-rdp)