Help us understand the problem. What is going on with this article?

Google Compute EngineのRed Hat VMインスタンス作成と、X11転送でGUIインストーラをWindowsから操作する手順 - Elixir Report

More than 1 year has passed since last update.

クラウド環境のLinuxインスタンスに、帳票ツールのElixir Reportをインストールする手順を画像付きでまとめています。

今回はまず、Google Cloud PlatformのCompute Engine上に、Red Hat Enterprise LinuxのVMインスタンスを作成します。

次に、SSHのX11転送(X11フォワーディング)機能を使って、Elixir ReportのGUIインストーラをWindows側に表示し、インストールを完了して起動するまでをまとめてあります。

以前の関連記事はこちらです。
Amazon EC2上にRed Hatインスタンスを作成してElixir Reportをコンソールインストールする手順
Amazon EC2上のRed Hat Enterprise LinuxにX11転送でElixir ReportをGUIインストールする手順
Amazon EC2上のRed Hat Enterprise Linuxにリモートデスクトップ接続してElixir ReportをGUIインストールする手順

なお、Google Cloud Platformへのユーザー登録は済んでいることを前提としています。

環境

Windows 8.1
Elixir Report 8.7J
Google Compute Engine - Red Hat Enterprise Linux 7

WindowsにTera Termをインストール

本記事では、Linux OSへのSSH接続にTera Termを使用します。

Tera TermのWindowsへのインストール方法は、Amazon EC2上にRed Hatインスタンスを作成してElixir Reportをコンソールインストールする手順[SSH接続するためにWindowsにTera Termをインストールしておく]の項目を参考にしてください。

WindowsにXサーバーをインストール

この記事では、Linux上で動作しているアプリケーションのGUIをWindows側に表示する方法としてX11転送機能を利用します。Linuxにはデスクトップ環境をインストールしていません。

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

詳しい手順は、以前の記事、Amazon EC2上のRed Hat Enterprise LinuxにX11転送でElixir ReportをGUIインストールする手順[WindowsにXサーバーをインストールする]の項目を参考にしてください。

Tera TermでSSH鍵を生成する

Compute Engineで作成するVMインスタンスには、ブラウザからSSH接続する方法が用意されていますが、X11転送のためWindows上のTera TermからSSH鍵を使って接続する準備をします。

  1. Tera Termを起動し、新しい接続のダイアログをキャンセルします。メニューから[設定]-[SSH鍵生成]を選択します。
    1SSH鍵生成メニュー.png

  2. デフォルトの内容で鍵を生成します。

    鍵の種類:RSA
    ビット数:2048
    

    2鍵生成スタート.png

  3. 生成した鍵にパスフレーズ(任意)、コメントにVMインスタンスにログインするユーザー名(Google Cloud Platformのログイン名)を設定して[公開鍵の保存]と[秘密鍵の保存]をそれぞれ行って、鍵のファイルをWindows側に保存します。
    3作成.png

以上で準備は完了です。

Compute EngineにRed HatのVMインスタンスを作成する

  1. Google Cloud Platformにログインします。
    4ダッシュボード初期画面.png

  2. 左上のメニューをクリックして[Compute Engine]をクリックします。
    5ダッシュボードからCompute選択.png

  3. Compute Engineのダッシュボードで[VMインスタンス]を選択し、中央上の[インスタンスを作成]をクリックします。
    6インスタンスの作成.png

  4. VMインスタンスの設定を行います。筆者の環境でデフォルトから変更した点は次のとおりです。

    [名前]に任意の名前
    [ブートディスク]にRed Hat Enterprise Linux 7
    

    (画面は下に続いています)
    7VMインスタンス作成.png

  5. [SSH認証鍵]をクリックして、[キーデータ全体を入力]と書かれた入力欄に、Tera Termで作成した公開鍵ファイルの内容をコピーして貼り付けます。
    8VMインスタンス作成2.png

  6. 画面一番下の[作成]ボタンを押すと、インスタンスの作成が開始されます。正常に完了すると、VMインスタンスのリストに表示されます。

  7. Tera Termを使って作成したインスタンスにログインできるか試してみます。[ホスト]にはCompute Engineのダッシュボードで、作成したVMインスタンスの”外部IP”に表示されているアドレスを指定します。
    9TeraTermホスト.png

  8. 初めて接続するホストの場合は、セキュリティ警告が表示されます。[続行]をクリックして進みます。
    10TeraTerm_初回接続.png

  9. SSH鍵生成でコメントに入力したユーザー名、鍵のパスフレーズを設定した場合は、パスフレーズを入力します。”RSA/DSA/ECDSA/ED25519鍵を使う”にチェックし、[秘密鍵]をクリックして、保存してある秘密鍵ファイルを選択して接続します。
    11初期接続時.png

  10. 接続できたら、タイムゾーンをAsia/Tokyoに変更しておきます。

$ sudo timedatectl set-timezone Asia/Tokyo

X11転送の設定をする

X11転送に関する、Red Hat側およびWindows側の設定と確認を行います。

Linux側の設定

  1. Red Hatインスタンスで、X11転送が有効化されているか確認します。
    /etc/ssh/sshd_config内で、X11Forwardingが”yes”になっていれば問題ありません。

    $ sudo cat /etc/ssh/sshd_config |grep X11
    X11Forwarding yes
    #X11DisplayOffset 10
    #X11UseLocalhost yes
    #       X11Forwarding no
    
  2. 手順1で、もしX11Forwardingが”no”になっている場合は、/etc/ssh/sshd_configをバックアップした上で設定を”yes”に変更し、sshdを次のコマンドに従って再起動します。

    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_org
    $ sudo vi /etc/ssh/sshd_config
    $ sudo service sshd restart
    Redirecting to /bin/systemctl restart  sshd.service
    
  3. XアプリケーションをX11転送でWindows上に表示できるか確認するため、xeyesというXアプリケーションをRed Hatインスタンスにインストールしておきます。

    $ sudo yum -y install xeyes
    

Windows側の設定とテスト

  1. Windows側でXmingが起動していることを確認します。

  2. Tera Termの設定で、リモートのXアプリケーションをローカルに表示する設定を行います。Tera Termの[設定]-[SSH転送]をクリックします。
    12TeraTerm_SSH転送設定.png

  3. [リモートの(X)アプリケーションをローカルのXサーバに表示する]にチェックを入れて、[OK]をクリックします。
    13TeraTerm_SSH転送設定01.png

  4. DISPLAY変数が設定されているかコマンドで確認します。

    $ echo $DISPLAY
    
  5. 前の手順で何も返ってこなかった場合は、先ほどインストールしたxeyesを実行しても次のようなエラーになってしまいます。筆者の環境では、この状態となっていました。

    $ sudo xeyes
    Error: Can't open display:
    
  6. Red Hatインスタンス側にxauthと、X11のライブラリが不足しているため、必要なライブラリを次のコマンドでインストールします。

    $ sudo yum -y install xorg-x11-xauth.x86_64 xorg-x11-server-utils.x86_64
    
  7. Tera Termで一旦ログアウトします。

    $ exit
    
  8. 再度Tera TermでRed Hatインスタンスにログインして、次のコマンドでDISPLAY変数を確認します。筆者の環境では自動で”localhost:10.0”が設定されていました。

    $ echo $DISPLAY
    localhost:10.0
    
  9. xeyesを実行してみます。するとWindows側にxeyesアプリケーションが表示されました。

    $ xeyes
    

    14xeyes.png

    [注意]次のようなX転送のエラーが出るときは、XmingがWindows側で起動していない可能性があります。起動していることを確認してみてください。
    15TTSSHエラー.png

レポートサーバーのインストーラをRed Hatに転送する

Tera Termを利用して、Windows側にあるElixir ReportのレポートサーバーのLinux OS用インストーラ(elixirreport87_linux64.bin)と、ライセンスファイル(*.license)をRed Hatインスタンスに転送します。

この手順の詳細は、以前の記事、Amazon EC2上にRed Hatインスタンスを作成してElixir Reportをコンソールインストールする手順[レポートサーバーのインストーラをRed Hatに転送する]を参照してください。

ファイルの転送が完了したら、次の準備を行っておきます。

  1. インストールは現在ログインしているユーザーで行います。ログインユーザーのLANG環境変数が英語になっている場合は、日本語(ja_JP.UTF-8)に変更しておきます。

    $ echo $LANG
    en_US.UTF-8
    $ export LANG=ja_JP.UTF-8
    $ echo $LANG
    ja_JP.UTF-8
    
  2. 転送したインストーラに実行権限を与えます。

    $ chmod +x ./elixirreport87_linux64.bin
    

GUIインストールを実行する

  1. Windows側でXmingが起動していることを確認してください。

  2. このデフォルト状態でインストーラを実行すると、Amazon EC2やAzure上のRed Hatインスタンス上で実行したときと同様に、ライブラリがないというエラーが発生します。

    $ ./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)
    
  3. エラーの解消のため、lib.so.6のインストールを行います。

    $ sudo yum -y install libc.so.6
    
  4. 次に、必要なライブラリをインストールします。

    $ sudo yum -y install libXtst
    
  5. この状態でもう一度インストーラを実行すると、インストーラは表示されますが日本語フォントがないので□表示になってしまいます。

    ※実行してしまった場合は、以下の画像を参考にインストーラをキャンセルしてください。
    16GUIトーフになる.png
    17終了02.png

  6. フォントをインストールします。筆者の環境では、次のコマンドでVLゴシック、IPA明朝、IPAゴシックをインストールしました。

    $ sudo yum -y install vlgothic-fonts ipa-mincho-fonts ipa-gothic-fonts
    

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

    $ sudo yum -y install fontconfig
    
  7. 再度インストーラを実行すると、問題なくインストールを完了することができました。

    ※インストールの詳細なステップは、以前の記事Amazon EC2上のRed Hat Enterprise LinuxにX11転送でElixir ReportをGUIインストールする手順「GUIインストールを実行する」の項目を参考にしてください。

    18X11インストール画面.png

    19X11インストール画面7.png

ヘッドレスモードの設定とレポートサーバーの起動

インストールはX11転送でGUIを利用しましたが、今後、レポートサーバーの実行時にX Window Systemに接続できない状態になる場合は、Javaのヘッドレスモードを有効にする必要があります。

  1. レポートサーバーのインストール先/binディレクトリに移動します。筆者の環境では/home/<ユーザー名>/ElixirReport87J/bin/になります。

    $ cd /home/<ユーザー名>/ElixirReport87J/bin
    
  2. レポートサーバーの起動シェルスクリプトをバックアップした後、編集します。

    $ cp reportserver-start.sh reportserver-start.sh_org
    $ vi reportserver-start.sh
    

    ※5行目(-Djava.awt.headless=true \)を追加して、保存します。

    #!/bin/sh
    JAVACMD="../jre/bin/java"
    
    $JAVACMD -mx512M \
            -Djava.awt.headless=true \
            -Duser.home=../license \
         (以下省略)
    
  3. レポートサーバーの起動シェルスクリプトを実行します。

    $ ./reportserver-start.sh &
    

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

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

  4. 起動に成功すると、コンソール上に次のようにCopyrightが表示されます。

    INFO  [main] com.elixirtech.ers2.Main - Copyright 2016 Elixir Technology Pte Ltd
    INFO  [Thread-19] com.elixirtech.ers2.EnsureServerStarted - Checking server status
    
  5. Windows側のブラウザから、レポートサーバーのWebインターフェースにアクセスしてみます。しかし、VMインスタンスの設定で、レポートサーバーにアクセスするためのポート”7001”を許可していないので、タイムアウトしてしまいます。

    http://<パブリックIPアドレス>:7001/ 
    
  6. ポート”7001”の許可をCompute Engineのダッシュボードから行います。VMインスタンス名をクリックしたら、画面をスクロールして[ネットワーク]の内容をクリックします。筆者の場合はデフォルトの”default”が指定されています。

    20ネットワーク設定変更1.png

  7. [ネットワークの詳細]画面に移動するので、[ファイアフォール ルールを追加]をクリックします。

    21ファイアウォールルール作成1.png

  8. 必要な項目を設定します。筆者が設定した内容は次のとおりです。

    名前:(任意の名前)
    ソースIPの範囲:0.0.0.0/0
    許可対象プロトコル/ポート:tcp:7001
    ※製品同梱のTomcatをサンプルで利用する場合はtcp:9090も追加
    

    22ファイアウォールルール作成2.png

  9. [作成]をクリックして、再度ブラウザからWebインターフェースにアクセスすると、ログイン画面が表示されます。デフォルトで用意されている次の管理者ユーザーでログインします。

    ユーザー名: admin
    パスワード: sa
    
  10. [リポジトリ]メニュー以下のサンプルテンプレートを実行してみます。[samples]‐[basic]-[barcode]-[barcode_element.rml]を選択し、出力形式に”PDF”を選んで[OK]をクリックすると、レポートが生成されました。

    23生成結果.png

以上で完了です。

インストールのまとめ

Red Hatインスタンスにインストールした項目

・ライブラリ

$ 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

・フォント関連

$ sudo yum -y install vlgothic-fonts ipa-mincho-fonts ipa-gothic-fonts

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

$ sudo yum -y install fontconfig

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

$ sudo yum -y install xeyes

Compute EngineでVMインスタンスに行った設定変更

・ポート7001の開放(ファイアウォール ルールの追加)

参考情報

Q1.No X11 DISPLAY variable was setエラーでインストールが終了する
X11など何の設定も行っていない今の状態でGUIインストールを実行すると、X11のエラーでインストーラが終了してしまいます。X11の設定のセクションを行えば解消できます。

$ ./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.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
        at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
        at java.awt.Window.<init>(Window.java:536)
        at java.awt.Frame.<init>(Frame.java:420)
        at java.awt.Frame.<init>(Frame.java:385)
        at javax.swing.JFrame.<init>(JFrame.java:189)
        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)

Q2.フォントをインストールしたが、日本語が□のままになる
fc-listコマンドがRed Hatインスタンスで実行できるか確認してください。コマンドが入っていない場合は、フォントの管理に使用されるfontconfigパッケージを次のコマンドでインストールして、fc-listコマンドが使用できるようになるか確認の上、再度インストールを試してください。

$ sudo yum –y install fontconfig

※本記事では、X11転送の確認用に”xeyes”アプリケーションをインストールする手順が含まれています。このインストール中に依存関係によりfontconfigが一緒にインストールされるので問題ありませんが、xeyesをインストールしなかった場合は、別途fontconfigをインストールする必要があります。

Q3. Xアプリケーションを起動したが、Windows側にX転送エラーが表示される
次のようなX転送のエラーが出るときは、XmingがWindows側で起動していることを確認してください。

15TTSSHエラー.png

Q4. レポートサーバー起動時にWindows側にX転送エラーが表示され、レポートサーバーが起動できない
Q3と同様のエラーが表示され、レポートサーバーの起動中に次のようなjava.awt.AWTErrorが出力される場合は、ヘッドレスモードの設定が正しく行われていない可能性があります。本記事の[ヘッドレスモードの設定とレポートサーバーの起動]セクションを参考に、起動シェルスクリプトの編集を行ってください。

Exception in thread "main" java.awt.AWTError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable.
        at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
        at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65)
(以下省略)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした