クラウド環境の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鍵を使って接続する準備をします。
- 生成した鍵にパスフレーズ(任意)、コメントにVMインスタンスにログインするユーザー名(Google Cloud Platformのログイン名)を設定して[公開鍵の保存]と[秘密鍵の保存]をそれぞれ行って、鍵のファイルをWindows側に保存します。
以上で準備は完了です。
#Compute EngineにRed HatのVMインスタンスを作成する
-
VMインスタンスの設定を行います。筆者の環境でデフォルトから変更した点は次のとおりです。
[名前]に任意の名前 [ブートディスク]にRed Hat Enterprise Linux 7
- 画面一番下の[作成]ボタンを押すと、インスタンスの作成が開始されます。正常に完了すると、VMインスタンスのリストに表示されます。
- Tera Termを使って作成したインスタンスにログインできるか試してみます。[ホスト]にはCompute Engineのダッシュボードで、作成したVMインスタンスの”外部IP”に表示されているアドレスを指定します。
- SSH鍵生成でコメントに入力したユーザー名、鍵のパスフレーズを設定した場合は、パスフレーズを入力します。”RSA/DSA/ECDSA/ED25519鍵を使う”にチェックし、[秘密鍵]をクリックして、保存してある秘密鍵ファイルを選択して接続します。
- 接続できたら、タイムゾーンをAsia/Tokyoに変更しておきます。
$ sudo timedatectl set-timezone Asia/Tokyo
#X11転送の設定をする
X11転送に関する、Red Hat側およびWindows側の設定と確認を行います。
##Linux側の設定
-
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
-
手順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
-
XアプリケーションをX11転送でWindows上に表示できるか確認するため、
xeyes
というXアプリケーションをRed Hatインスタンスにインストールしておきます。$ sudo yum -y install xeyes
##Windows側の設定とテスト
- Windows側でXmingが起動していることを確認します。
-
DISPLAY変数が設定されているかコマンドで確認します。
$ echo $DISPLAY
-
前の手順で何も返ってこなかった場合は、先ほどインストールした
xeyes
を実行しても次のようなエラーになってしまいます。筆者の環境では、この状態となっていました。$ sudo xeyes Error: Can't open display:
-
Red Hatインスタンス側にxauthと、X11のライブラリが不足しているため、必要なライブラリを次のコマンドでインストールします。
$ sudo yum -y install xorg-x11-xauth.x86_64 xorg-x11-server-utils.x86_64
-
Tera Termで一旦ログアウトします。
$ exit
-
再度Tera TermでRed Hatインスタンスにログインして、次のコマンドでDISPLAY変数を確認します。筆者の環境では自動で”localhost:10.0”が設定されていました。
$ echo $DISPLAY localhost:10.0
-
xeyesを実行してみます。するとWindows側にxeyesアプリケーションが表示されました。
$ xeyes
[注意]次のようなX転送のエラーが出るときは、XmingがWindows側で起動していない可能性があります。起動していることを確認してみてください。
#レポートサーバーのインストーラをRed Hatに転送する
Tera Termを利用して、Windows側にあるElixir ReportのレポートサーバーのLinux OS用インストーラ(elixirreport87_linux64.bin)と、ライセンスファイル(**.license*)をRed Hatインスタンスに転送します。
この手順の詳細は、以前の記事、Amazon EC2上にRed Hatインスタンスを作成してElixir Reportをコンソールインストールする手順 の[レポートサーバーのインストーラをRed Hatに転送する]を参照してください。
ファイルの転送が完了したら、次の準備を行っておきます。
-
インストールは現在ログインしているユーザーで行います。ログインユーザーのLANG環境変数が英語になっている場合は、日本語(ja_JP.UTF-8)に変更しておきます。
$ echo $LANG en_US.UTF-8 $ export LANG=ja_JP.UTF-8 $ echo $LANG ja_JP.UTF-8
-
転送したインストーラに実行権限を与えます。
$ chmod +x ./elixirreport87_linux64.bin
#GUIインストールを実行する
- Windows側でXmingが起動していることを確認してください。
-
このデフォルト状態でインストーラを実行すると、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)
-
エラーの解消のため、lib.so.6のインストールを行います。
$ sudo yum -y install libc.so.6
-
次に、必要なライブラリをインストールします。
$ sudo yum -y install libXtst
-
この状態でもう一度インストーラを実行すると、インストーラは表示されますが日本語フォントがないので□表示になってしまいます。
-
フォントをインストールします。筆者の環境では、次のコマンドでVLゴシック、IPA明朝、IPAゴシックをインストールしました。
$ sudo yum -y install vlgothic-fonts ipa-mincho-fonts ipa-gothic-fonts
※xeyesをインストールしなかった場合は以下も必要です。
$ sudo yum -y install fontconfig
-
再度インストーラを実行すると、問題なくインストールを完了することができました。
※インストールの詳細なステップは、以前の記事Amazon EC2上のRed Hat Enterprise LinuxにX11転送でElixir ReportをGUIインストールする手順の「GUIインストールを実行する」の項目を参考にしてください。
#ヘッドレスモードの設定とレポートサーバーの起動
インストールはX11転送でGUIを利用しましたが、今後、レポートサーバーの実行時にX Window Systemに接続できない状態になる場合は、Javaのヘッドレスモードを有効にする必要があります。
-
レポートサーバーのインストール先/binディレクトリに移動します。筆者の環境では
/home/<ユーザー名>/ElixirReport87J/bin/
になります。$ cd /home/<ユーザー名>/ElixirReport87J/bin
-
レポートサーバーの起動シェルスクリプトをバックアップした後、編集します。
$ 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 \
(以下省略)
```
-
レポートサーバーの起動シェルスクリプトを実行します。
$ ./reportserver-start.sh &
※”&”を付加することでバックグラウンド実行になります。
【注意】起動ユーザーのLANG環境変数が英語の場合、レポートサーバーが英語ロケールで起動され、Webインターフェースのメニュー等が英語表示されます。日本語ロケールへ変更して起動を行ってください。
-
起動に成功すると、コンソール上に次のようにCopyrightが表示されます。
INFO [main] com.elixirtech.ers2.Main - Copyright 2016 Elixir Technology Pte Ltd INFO [Thread-19] com.elixirtech.ers2.EnsureServerStarted - Checking server status
-
Windows側のブラウザから、レポートサーバーのWebインターフェースにアクセスしてみます。しかし、VMインスタンスの設定で、レポートサーバーにアクセスするためのポート”7001”を許可していないので、タイムアウトしてしまいます。
http://<パブリックIPアドレス>:7001/
-
ポート”7001”の許可をCompute Engineのダッシュボードから行います。VMインスタンス名をクリックしたら、画面をスクロールして[ネットワーク]の内容をクリックします。筆者の場合はデフォルトの”default”が指定されています。
-
必要な項目を設定します。筆者が設定した内容は次のとおりです。
名前:(任意の名前) ソースIPの範囲:0.0.0.0/0 許可対象プロトコル/ポート:tcp:7001 ※製品同梱のTomcatをサンプルで利用する場合はtcp:9090も追加
-
[作成]をクリックして、再度ブラウザからWebインターフェースにアクセスすると、ログイン画面が表示されます。デフォルトで用意されている次の管理者ユーザーでログインします。
ユーザー名: admin パスワード: sa
-
[リポジトリ]メニュー以下のサンプルテンプレートを実行してみます。[samples]‐[basic]-[barcode]-[barcode_element.rml]を選択し、出力形式に”PDF”を選んで[OK]をクリックすると、レポートが生成されました。
以上で完了です。
#インストールのまとめ
##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側で起動していることを確認してください。
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)
(以下省略)