お金をかけずにサーバーの勉強をしよう

JS7インストール 3

2024年9月4日
メニューへ戻る

JS7インストール 1」では JS7 Controllerのサーバーを作り、
JS7インストール 2」では、ジョブを実行するサーバーに JS7 Universal Agentをインストールしました。

現在を絵で言うとここができました。
JS7の Controllerを作った後の絵

そしてこれからこのページで作るのはこれ。
JS7の Cockpitを作る絵

ダウンロードについては「JS7インストール 1」で既に書いていますので、そちらを見て下さい。

既にダウンロードしたファイルを持っているところからスタートします。


1.DBサーバーについて

以下のリンクが JOC Cockpitのインストール用のドキュメントなんですが、この中で JS7が使用する DBについて具体的に触れられています。
JS7 - JOC Cockpit - Headless Installation on Linux and Windows

以下が JS7のデータベースについてのドキュメントです。
JS7 - Database

MySQLにするか PostgreSQLにするか迷いましたが、なんとなくノリで PostgreSQLを使うことにします。
他、Oracleや SQL Serverも使えるようです。

2024年9月4日時点で JS7では PostgreSQL 15が動作対象の一番新しいバージョンとなっていますがいずれ最新の PostgreSQL 16に対応するだろうと思いますので、ここは試験的に 16でやってみます。


2.DBサーバー構築

[js7db]サーバーに PostgreSQL 16をインストールします。

PostgreSQL 16のインストールについては「PostgreSQLインストール」に書いていますので、「4.管理ユーザー [postgres] のパスワード設定」まで済ませておきました。

インストールした PostgreSQLで以下 2つの作業をします。
それぞれの名前は後で行う JOC Cockpitの初期設定で出てくるデフォルトの名前にしています。

PostgreSQLには管理ユーザーの [postgres]でログインします。

subro@js7db:~$ psql -U postgres
ユーザー postgres のパスワード: パスワードを入れる
psql (16.4 (Ubuntu 16.4-1.pgdg24.04+1))
"help"でヘルプを表示します。

postgres=# CREATE USER scheduler WITH PASSWORD '**********'; ← **********は適切なパスワードに
CREATE ROLE

postgres=# CREATE DATABASE scheduler OWNER scheduler;
CREATE DATABASE

postgres=# exit

[sheduer]ユーザーと [scheduler]データベースができました。

[scheduler]データベースの中身は JOC Cockpitの初期設定時に自動で作られますので DBサーバー構築はこれでおしまいです。


3.JS7 JOC Cockpitインストール事前準備

インストール前の事前準備として [js7cockpit]サーバーの [/etc/hosts]ファイルには [js7db]サーバーをマシン名で参照できるよう以下の行を追加しています。

192.168.1.107   js7db js7db.subrohouse.internal


[js7cockpit]サーバーでも [js7agent]サーバー・[js7controller]サーバーと同様に、JS7を実行するために専用の [js7]ユーザーを作成しましょう。

[js7]ユーザー・グループを作成します。

subro@js7cockpit:~$ sudo adduser js7
info: ユーザ `js7' を追加しています...
info: Selecting UID/GID from range 1000 to 59999 ...
info: 新しいグループ `js7' (1001) を追加しています...
info: Adding new user `js7' (1001) with group `js7 (1001)' ...
info: ホームディレクトリ `/home/js7' を作成しています...
info: `/etc/skel' からファイルをコピーしています...
新しいパスワード: 新規パスワードを入れる
新しいパスワードを再入力してください: パスワードをもう一回
passwd: パスワードは正しく更新されました
js7 のユーザ情報を変更中
新しい値を入力してください。標準設定値を使うならリターンを押してください
        フルネーム []:[Enter]キー
        部屋番号 []:[Enter]キー
        職場電話番号 []:[Enter]キー
        自宅電話番号 []:[Enter]キー
        その他 []:[Enter]キー
以上で正しいですか? [Y/n] Y
info: Adding new user `js7' to supplemental / extra groups `users' ...
info: ユーザ `js7' をグループ `users' に追加しています...

[js7]ユーザー・グループができました。

JS7COCKPITのインストールではシステム用のディレクトリにファイルを置くようで [root]ユーザーの権限を必要とするようです。

折角一般ユーザーとして [js7]を作ったのであまりりやりたくないですが [js7cockpit]サーバーだけは [js7]ユーザーを [sudo]グループに入れてやります。

この作業自体 sudoを使う必要があるので、管理権限のあるユーザー(私の環境では [subro])でログインして作業します。

subro@js7cockpit:~$ sudo usermod -aG sudo js7

subro@js7cockpit:~$ grep sudo /etc/group
sudo:x:27:subro,js7

[sudo]グループに追加できました。


4.JS7 JOC Cockpitインストール

この作業は [js7]ユーザーで行います。

私はダウンロードしておいた JOC Cockpitのファイルを scpコマンドで [js7]ユーザーのホームディレクトリ [/home/js7]ディレクトリに持ってきました。

js7@js7cockpit:~$ ls -l js7_joc_linux.2.7.1.tar.gz
-rw-rw-r-- 1 js7 js7 152750558  8月 29 06:49 js7_joc_linux.2.7.1.tar.gz

このファイルは [tar.gz]形式の圧縮ファイルですので、解凍しながら展開します。

js7@js7cockpit:~$ tar -xzvf js7_joc_linux.2.7.1.tar.gz
joc.2.7.1/
joc.2.7.1/hibernate-examples/
joc.2.7.1/db/
joc.2.7.1/hibernate-examples/hibernate-integrated-security-mssql.cfg.xml
joc.2.7.1/hibernate-examples/hibernate-maria-mysql.cfg.xml
joc.2.7.1/hibernate-examples/hibernate-oracle.cfg.xml
joc.2.7.1/hibernate-examples/hibernate-postgres.cfg.xml
joc.2.7.1/install_joc.txt
joc.2.7.1/joc_install.xml
joc.2.7.1/license.gpl
joc.2.7.1/license.html
joc.2.7.1/license.txt
joc.2.7.1/db/oracle.sql
joc.2.7.1/db/mysql.sql
joc.2.7.1/db/mssql.sql
joc.2.7.1/db/pgsql.sql
joc.2.7.1/joc.2.7.1.jar
joc.2.7.1/setup.sh

解凍・展開ができまして [joc.2.7.1]ディレクトリができました。
あれっ? 後で Controllerや Agentと同じように systemdから自動起動しようとしていたのですが、サービスユニットファイルの例となるファイルがありませんね。

こちらのドキュメントを見てみますと [./bin/joc.service-example]ファイルがあると書かれてはいますが、実はインストールの過程で systemdへの登録を自動でやってくれます。
JS7 - systemd Service Files for automated Startup and Shutdown with Unix Systems

[./joc.2.7.1/setup.sh]スクリプトを実行します。
sudoコマンドを使って管理者権限で実行して下さい。
ここからスクリプトへの応答で長くなりますよ。
(見やすいようにちょっと加工しています)

js7@js7cockpit:~$ sudo ./joc.2.7.1/setup.sh
/usr/bin/java -jar "./joc.2.7.1/joc.2.7.1.jar"
Command line arguments:
Select your language
0  [x] eng
1  [ ] deu
2  [ ] jpn
Input selection:
2 [Enter]キー ← 当然日本語にします

────────────────────────────────────
Welcome
────────────────────────────────────
HTML対応のターミナルだと綺麗に出るんだと思いますが、単なるターミナルなのでそのまま出ています。
何となくどんな絵面かわかりますかね。
<html><body>
<p style="font-family:Tahoma;font-size:14pt;text-align:center;font-weight:bold;">
Welcome<br/>
to the installation of</p>
</body></html>
<html><body>
<p style="font-family:Tahoma;font-size:20pt;text-align:center;font-weight:bold;">
JS7 JOC Cockpit 2.7.1</p>
</body></html>

<html><body>
<p style="font-family:Tahoma;font-size:12pt;text-align:center;">
Software- und Organisations-Service GmbH<br/>
Berlin - Germany<br/><a style="color:#EA7A14;text-decoration:none;" href="https://www.sos-berlin.com">https://www.sos-berlin.com</a><br/>
<a style="color:#EA7A14;text-decoration:none;" href="mailto:info@sos-berlin.com">info@sos-berlin.com</a></p>
</body></html>

<html><body>
<p style="font-family:Tahoma;font-size:12pt;text-align:center;">インストレーション手順:<br/>
<a style="color:#EA7A14;text-decoration:none;" href="https://kb.sos-berlin.com/x/tq7AAw">https://kb.sos-berlin.com/x/tq7AAw</a></p>
</body></html>

Press 1 to continue, 2 to quit, 3 to redisplay
1 [Enter]キー

────────────────────────────────────
ライセンス
────────────────────────────────────

JS7 JOC Cockpitは、2通りのライセンスモデルが選択できます。

<html><body>
<table cellspacing="0" cellpadding="0" style="font-family:Tahoma;font-size:11pt;">
<tbody>
  <tr><th style="width:50%;font-size:12pt;padding-bottom:2pt;">GNU General Public License v3.0</th>
    <th> </th>
    <th style="width:50%;font-size:12pt;padding-bottom:2pt;">JS7 Commercial License</th></tr>
  <tr>
    <td valign="top">
      <p>JS7はオープンソースライセンスですべての機能とインターフェースを提供します。</p>
      <p>コミュニティサポートが以下で提供されます:</p>
      <ul style="margin-left:10px;">
        <li style="margin-left:0;">コミュニティフォーラム:<br/>
          <a style="color:#EA7A14;text-decoration:none;" href="https://sourceforge.net/p/jobscheduler/discussion/">https://sourceforge.net/p/jobscheduler/discussion/</a></li>
        <li style="margin-left:0px;">パブリックチケット:<br/>
          <a style="color:#EA7A14;text-decoration:none;" href="https://sourceforge.net/p/jobscheduler/_list/tickets">https://sourceforge.net/p/jobscheduler/_list/tickets</a></li>
      </ul>
      <p> ライセンス条件の詳細はこちらをご参照ください。<br/>
        <a style="color:#EA7A14;text-decoration:none;" href="https://www.gnu.org/licenses/gpl-3.0.en.html">https://www.gnu.org/licenses/gpl-3.0.en.html</a></p>
    </td>
    <td>  </td>
    <td valign="top">
      <p>JS7 Commercial LicenseではHA(高可用性)機能とプロフェッショナルサポートとサービスを提供します。:</p>
      <ul style="margin-left:10px;">
        <li style="margin-left:0px;">高可用性: JS7の各コンポーネントをクラスタリングできます。</li>
        <li style="margin-left:0px;">サポートオプション: 不具合修正, LTS(延長サポート), 拡張サポート, 有償チケットシステムへのアクセス</li>
        <li style="margin-left:0px;">変更管理システム: Bug Fixes, Feature Requests</li>
        <li style="margin-left:0px;">脆弱性管理: Reporting, Risk Mitigation</li>
        <li style="margin-left:0px;">教育及びコンサルティングサービス</li>
        <li style="margin-left:0px;">マイグレーション・設計サービス</li>
      </ul>
      <p>ライセンス条件の詳細はお問い合わせください。: <br/>
        Mail: <a style="color:#EA7A14;text-decoration:none;" href="mailto:sales@sos-berlin.com">sales@sos-berlin.com</a><br/>
        Phone: +49 30 86 47 90 - </p></td></tr>
</tbody>
<table>
<body></html>

------------------------------------------

どちらかのライセンス形態を選択して下さい:
0  [x] GNU GPL v3.0 License
1  [ ] JS7 Commercial License
Input selection:
0[Enter]キー ← お金を払わない場合は0を選びます。


Press 1 to continue, 2 to quit, 3 to redisplay
1[Enter]キー

────────────────────────────────────
ライセンス契約
────────────────────────────────────

 GNU GENERAL PUBLIC LICENSE
 Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc.
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

長いのでここでは途中を端折りますが、実際にインストールする場合はちゃんと読みましょう。

 The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
.

Press 1 to accept, 2 to reject, 3 to redisplay
1[Enter]キー

────────────────────────────────────
インストレーションディレクトリ
────────────────────────────────────

インストールするパスを選択してください : [/opt/sos-berlin.com/js7/joc]
[Enter]キー ← デフォルトのままにしました。

Press 1 to continue, 2 to quit, 3 to redisplay
1[Enter]キー
numOfPrevInstallations = 0

────────────────────────────────────
Jettyコンフィグレーション
────────────────────────────────────

JS7 JOC CockpitはJettyを使用できます。 ./resources と ./webapps フォルダーはJetty Baseディレクトリに格納されます。
もし他のJavaサーブレットコンテナを使用する場合は、 ./resources と ./webapps フォルダーをJOCインストレーション
ディレクトリにコピーしてください。

------------------------------------------

  [x] JS7 JOC CockpitをJettyとインストール
Enter 1 to select, 0 to deselect:
1[Enter]キー ← デフォルトのままにしました。

Jetty HTTPポート: [4446]
[Enter]キー ← デフォルトのままにしました。
Jetty Base:[/home/js7/sos-berlin.com/js7/joc]
[Enter]キー ← デフォルトのままにしました。
  [x] インストレーション終了後Jettyを開始
Enter 1 to select, 0 to deselect:
1[Enter]キー ← デフォルトのままにしました。
  [x] Jettyをデーモンとしてインストール
Enter 1 to select, 0 to deselect:
1[Enter]キー ← デフォルトのままにしました。
Jettyユーザー [js7]
[Enter]キー ← OSの[js7]ユーザーで起動させたいです。このまま。
複数のJettyインスタンスがある場合、デーモン名はユニークである必要があります。
JOCデーモン名: [joc]
[Enter]キー ← デフォルトのままにしました。

------------------------------------------

Maximum Memory Pool: [-Xmx512MB]
[Enter]キー ← デフォルトのままにしました。
Initial Memory Pool: [-Xms128MB]
[Enter]キー ← デフォルトのままにしました。
Thread Stack Size: [-Xss4000KB]
[Enter]キー ← デフォルトのままにしました。
Further Java Options: []
[Enter]キー ← デフォルトのままにしました。

Press 1 to continue, 2 to quit, 3 to redisplay
1[Enter]キー
Port 4446 is accessible.

────────────────────────────────────
JOCコンフィグレーション
────────────────────────────────────

  [ ] APIサーバーとしての設置
Enter 1 to select, 0 to deselect:
0[Enter]キー ← 1にするとGUIなしの APIサーバーの機能だけになるようです。

------------------------------------------

A JOC Cockpit instance is identified by the 'Instance ID', so the 'Instance ID'
must be unique across all instances. The 'Instance ID' defines further the order of
JOC Cockpit instances in the dashboard view.

インスタンスID
0  [x]    0
1  [ ]    1
2  [ ]    2

この間、3〜96まで続く。

97  [ ]  97
98  [ ]  98
99  [ ]  99
Input selection:
0[Enter]キー ← 一番若い0番にしました。

Also specify a title for the dashboard view; e.g. 'Primary' or 'Secondary'.
タイトル []
Test[Enter]キー ← 名前は適当につけました。

------------------------------------------

セキュリティレベル
0  [x] 低
1  [ ] 中
2  [ ] 高
Input selection:
0[Enter]キー ← デフォルトのままにしました。

Press 1 to continue, 2 to quit, 3 to redisplay
1[Enter]キー

────────────────────────────────────
データベース
────────────────────────────────────

hibernateコンフィグレーションファイルはデータベース接続に使用されます。
以下のどちらでも可能:
次からの入力で直接接続設定項目を入力するか、hibernateコンフィグレーションファイルをアップロードできます。
hibernateコンフィグレーションファイルのサンプルは 'hibernate-examples'です。
'H2 Embedded'を選択した場合はこれ以上の設定はありません。
0  [x] 直接入力
1  [ ] hibernateコンフィグレーションファイル
2  [ ] H2 Embedded (検証環境のみ)
Input selection:
0[Enter]キー ← PostgresSQLを使いたいので0を選択します。

------------------------------------------

データベースを選択
0  [x] MySQL
1  [ ] Oracle
2  [ ] MS SQL Server
3  [ ] PostgreSQL
Input selection:
3[Enter]キー ← PostgresSQLを使いたいので0を選択します。

------------------------------------------

データベーステーブルの作成は、すべてのテーブルが最新であることが確認されている場合にのみ省略してください。
すでに存在するテーブルのデータは保持されます。
0  [x] データベーステーブルはインストレーション中に作成・更新されます。(推奨)
1  [ ] データベーステーブルはJOCが次回起動時に作成・更新されます。
2  [ ] データベーステーブルは作成・更新されません。
Input selection:
0[Enter]キー ← 推奨だそうなので0を選択します。

Press 1 to continue, 2 to quit, 3 to redisplay
1[Enter]キー

────────────────────────────────────
データベース接続コンフィグレーション
────────────────────────────────────

データベース接続設定を入力
ホスト: []
js7db[Enter]キー ← [js7db]サーバーのことです。
ポート: [5432]
[Enter]キー ← PostgreSQLのデフォルトポートです。このまま。
データベース: [scheduler]
[Enter]キー ← ここで出てくるデフォルトなので、先のPostgreSQLでの作業で[scheduler]にしていました。このまま。
ユーザー: [scheduler]
[Enter]キー ← ここで出てくるデフォルトなので、先のPostgreSQLでの作業で[scheduler]にしていました。このまま。
パスワード:
*********[Enter]キー ← PostgreSQLの[scheduler]ユーザーのパスワードを入れます。
パスワード確認:
*********[Enter]キー ← パスワードをもう一回。

Press 1 to continue, 2 to quit, 3 to redisplay
1[Enter]キー

────────────────────────────────────
JDBCドライバコンフィグレーション
────────────────────────────────────

PostGres JDBCドライバ (postgresql-42.4.4) が同梱されています
0  [x] 既存Postgres JDBCドライバが使用されます
1  [ ] 外部提供JDBCドライバが使用されます
Input selection:
0[Enter]キー

Press 1 to continue, 2 to quit, 3 to redisplay
1[Enter]キー

────────────────────────────────────
インストール
────────────────────────────────────

====================
Installation started
Framework: 5.1.3 (IzPack)
Platform: ubuntu_linux,version=6.8.0-41-generic,arch=x64,symbolicName=null,javaVersion=21.0.4
[ Starting to unpack ]
[ Processing package: JOC (1/1) ]
[ Unpacking finished ]
Installation finished

────────────────────────────────────
外部プロセスの実行
────────────────────────────────────

[ Starting processing ]

〜〜〜 長いので省略 〜〜〜

"JOC Cockpit" has been started.

────────────────────────────────────
インストール完了
────────────────────────────────────

Installation was successful
Application installed on /opt/sos-berlin.com/js7/joc
[ Writing the uninstaller data ... ]
[ Console installation done ]

インストールできたようです。


5.WEBブラウザでアクセス

上手く動きますかね。
私の環境だと URLは [http://js7cockupt:4446] になります。

Lubuntu 24.04の Firefoxでアクセスしてみますと…
何か出た!\(^o^)/
JS7 JOC Cockpitログイン画面
アカウントと初期パスワードがわからん…

JS7インストール 4」につづきます。

==========
何か疲れちゃったので、実際に使ってみるのは次回というヤル気の無さで申し訳ございません。

インストールは GUIのあるマシンでやると綺麗な画面が出てましたね。
ここではそれを使わずにヘッドレスでやっていますけど。

ログイン画面も日本語化されているし、これは期待かな。