> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# クロスプラットフォーム版

> 組み込みJetty、Tomcat、WebSphere Liberty、または外部Jetty を使用して CData Arc のクロスプラットフォーム版をインストール、設定、実行する方法。

export const companyName = "CData";

export const siteNameShort = "Arc";

export const siteName = "CData Arc";

{siteName} のクロスプラットフォーム版には組み込みEclipse Jetty Web サーバーが含まれ、外部サーバー構成なしで{siteNameShort} を実行できます。さらに、インストールにはApache Tomcat、Eclipse Jetty、またはIBM WebSphere Liberty などのJava サーブレットコンテナにデプロイ可能なWAR ファイルが含まれています。

{siteNameShort} の使用には、Java 17 またはそれ以降のバージョンがマシンにインストールされている必要があります。外部Java サーブレットコンテナへのデプロイにはサーブレット3.0（Jetty 8+、Tomcat 7+、WebSphere Liberty 8.5+、など）が必要です。

<Note>
  {siteNameShort} のデプロイ方法に関わらず、`AppDirectory` 内のファイルおよびフォルダは、アプリケーションを実行するユーザーによって読み取り / 書き込み可能である必要があります。Java 版のセットアップに同梱されるサービスインストーラーは、**cdatarc** を実行しているユーザーとして使用します。

  アプリケーションが別のユーザーで以前実行されていて、**cdatarc** ユーザーがアプリケーションを実行するために必要な権限を復元したい場合は、以下のようなコマンドを使用してください：

  `sudo chown -R cdatarc:cdatarc /opt/arc`
</Note>

## Windows

Windows の場合、{siteNameShort} はサービスとしてデフォルトでインストールされます。アプリケーションにアクセスするには、まず、サービスが起動していることを確認する必要があります。サービスが起動したら、Web ブラウザを開いてURL に[http://localhost:8080/](http://localhost:8080/) を入力すると、{siteNameShort} 管理コンソールにアクセスできます。

また、サービスを使用せずに`java` コマンドを介してアプリケーションを実行することもできます。{companyName} はサービスの利用を推奨していますが、特定の構成ではこちらの方法が有効です。

### サービスの起動と停止

サービスの開始と停止は、次のいずれかの方法で行います：

* [スタートメニューのショートカット](#スタートメニューのショートカット)（推奨）
* [サービス管理コンソール](#サービス管理コンソール)
* [コマンドプロンプト](#コマンドプロンプト)コマンド

#### スタートメニューのショートカット

{siteNameShort} インストーラーは、アプリケーションを簡単に使用できるスタートメニューのショートカットを作成します。これらのショートカットにアクセスするには、**スタート**メニューを開いて{siteName} フォルダを展開します。以下のショートカットが利用可能です：

* **{siteName} 管理コンソールを起動**：デフォルトのWeb ブラウザでWeb ブラウザウィンドウを開き、管理コンソールURL [http://localhost:8080/](http://localhost:8080/) にアクセスします。サービスが起動していない場合、Web ブラウザはエラーを返します。
* **{siteName} を起動**：{siteNameShort} サービスを開始します。デフォルトでは、このサービスはWindows 起動時に実行されるため、アプリケーションを実行するたびにこのコマンドを実行する必要はありません。
* **{siteName} を停止**：{siteNameShort} サービスを停止します。このアクションは、[{siteNameShort} のアップグレード](./how-to-upgrade)時に必要です。

#### サービス管理コンソール

サービス管理コンソールを開くには、スタートメニューを開き*サービス*と入力します。表示された**サービス**アプリケーションを選択します。

**{siteName}** というサービスが表示されるまでスクロールダウンします。サービスが起動している場合は、**状態**カラムに**実行中**と表示されます。サービスを右クリックすると、サービスを**開始**、**停止**、**再開**するオプションにアクセスできます。

#### コマンドプロンプト

高度なユーザーは、Windows のコマンドプロンプトを使用して、サービスに対して手動でコマンドを発行することができます。コマンドプロンプトを開き、ディレクトリをインストールフォルダに変更します（デフォルトは`C:\Program Files\CData\CData Arc` です）。

<Note>Microsoft PowerShell ウィンドウを使用してこれらのコマンドを発行することもできますが、構文が若干異なります。PowerShell を使用する際は、コマンドを適宜修正してください。</Note>

{siteNameShort} サービスを開始するには、次のコマンドを実行します：

```sh theme={null}
arc.exe -start
```

サービスを再開または停止するには、次のコマンドを実行します：

```sh theme={null}
arc.exe --restart --ServiceName "CData Arc"
arc.exe --stop --ServiceName "CData Arc"
```

### サービスを使わずに起動

サービスを開始せずに{siteNameShort} を実行するには、インストールフォルダでコマンドプロンプトを開きます。アプリケーションを開始するには、次のコマンドを実行します：

```sh theme={null}
java -jar arc.jar
```

## Linux

[{siteNameShort} を任意の場所にインストール](./installation-configuration#クロスプラットフォーム版)したら、{siteNameShort} をサービスとして実行するか、アプリケーションを手動で実行することができます。{companyName} は、重要なアプリケーションに{siteNameShort} を使用する場合は、サービスの使用をお勧めします。

### {siteNameShort} をサービスとして実行

{siteNameShort} をサービスとして実行すると、アプリケーションをユーザープロセスから独立して実行し、再起動時に自動的に再起動することができます。これは、重要なアプリケーションに推奨される方法です。

{companyName} では、Linux 上で{siteNameShort} アプリケーションを管理するデーモンの作成を推奨しています。インストールパッケージに含まれるスクリプトで、これを自動的に行うことができます。必要に応じて、手動でデーモンを作成することも可能です。

システムが *systemd* デーモンマネージャーを使用している場合に、{siteNameShort} デーモンを設定する最も安全な方法は、インストールパッケージに含まれているスクリプトを実行することです：

```bash theme={null}
bash ./service.sh
```

このスクリプトは、`arc.service` という名前のデーモンを作成します。その後、`systemctl` を使用してデーモンを管理できます：

```bash theme={null}
systemctl enable arc
systemctl start arc
```

### スタンドアロンアプリケーションの実行

サービスを作成せずに{siteNameShort} を開始するには、ターミナルでインストールディレクトリのarc.jar ファイルを開き、次のように設定ファイルを引数として指定します：

```sh theme={null}
java -jar arc.jar
```

## 組み込みJetty サーバーの構成

{siteNameShort} は、あらゆる環境ですぐに動作するようあらかじめ設定されています。ただし、{siteNameShort} インストールディレクトリに[arc.properties ファイルを生成](#arc-properties-ファイルの生成)することで、{siteNameShort} で公開されているデータへのアクセス方法をカスタマイズできます（Windows の場合、インストールディレクトリのデフォルトは`C:\Program Files\CData\CData Arc` です）。

すべての`arc.properties` 設定オプションについて詳しくは、[arc.properties Configuration](./arc-properties-configuration) を参照してください。

<Tip>これらの設定オプションは、実装内のすべての`.properties` ファイルで利用可能です。</Tip>

### arc.properties ファイルの生成

組み込みJetty サーバーをカスタマイズする前に、`arc.properties` ファイルを作成する必要があります。arc.jar があるインストールディレクトリで以下のコマンドを実行します：

```
java -jar arc.jar -GenerateProperties
```

これで、インストールディレクトリに`arc.properties` ファイルが作成されます。このファイルには、[ポートを変更](#ポートの変更)したり[TLS/SSL を有効化](#tls-ssl-の有効化)したりするために変更できるパラメータが含まれています。

<Note>一度このファイルを生成すると、{siteNameShort} へのアップグレードでは上書きされません。</Note>

#### ポートの変更

組み込みサーバーがリッスンするポートを変更するには：

1. *`InstallationDirectory`* にある`arc.properties` ファイルを見つけ、テキストエディタで開きます。

2. ポートが設定されている次の行を探します：

   `cdata.http.port=8080`

3. この値を、希望するポート番号に変更します。

#### TLS/SSL の有効化

TLS/SSL 接続（HTTPS）を有効化する場合にも、以下のように、 *`InstallationDirectory`* の`arc.properties` ファイルを修正します：

1. `cdata.tls.keyStoreType` 設定を、使用するキーストアのタイプに設定します。有効な値には、**jks**、**pkcs12**、および**jceks** が含まれます。

2. `cdata.tls.keyStorePath` 設定を、使用するキーストアのパスに設定します。`${cdata.home}` は、 *`InstallationDirectory`* を参照するために使用される場合があることに注意してください。

3. `cdata.tls.keyStorePassword` 設定を、キーストアのパスワードに設定します。

4. `cdata.tls.port` 設定を、サーバーをホストするために使用するポートに設定します。

5. （オプション）`cdata.http.port` 設定を、プレーンテキスト接続を無効にするために空の文字列に設定します。

最終的にはこのようになります：

```
;; HTTP
cdata.http.port=

;; TLS
cdata.tls.port=8443
cdata.tls.keyStoreType=PKCS12
cdata.tls.keyStorePath=${cdata.home}/mycertificate.pfx
cdata.tls.keyStorePassword=mypassword
```

<Note>{siteNameShort} で設定するために外部秘密鍵を取得する場合は、必ず証明書の所有者を{siteNameShort}（**cdatarc:cdatarc**）をホストするために使用されるサービスアカウントに変更してください。</Note>

#### {siteNameShort} を別の.properties ファイルに指定する

`-config` パラメータを使用して、{siteNameShort} をデフォルトの`arc.properties` ファイル以外の設定ファイルに指定します。例えば、次のコマンドを実行すると、{siteNameShort} は`test.properties` ファイルを検索します：

```
java -jar arc.jar -config test
```

### Jetty XML ファイルの生成

ほとんどのデプロイメントで、`arc.properties` ファイルは、組み込みJetty サーバーに必要なすべての設定オプションを提供します。ただし、より複雑なデプロイメントが必要な場合は、Jetty XML ファイルを生成し、そこからさらに修正を加えることができます。このファイルを生成するには、arc.jar がある{siteNameShort} インストールディレクトリで以下のコマンドを実行します：

```
java -jar arc.jar -GenerateXML
```

コマンドが完了すると、`webapp` フォルダにarc.xml 設定ファイルが表示されます。そのフォルダに保存されている限り、アプリケーションの起動に使用されます。

### サーバーの起動と停止

`service.sh` スクリプトを使用して{siteNameShort} サービスをセットアップする場合は、[サービスとして実行](#サービスとして実行)を参照してください。それ以外の場合は、[インプロセスで実行](#インプロセスで実行)セクションが該当します。

#### インプロセスで実行

セットアップ中にアプリケーションダウンロードから抽出されるarc.jar ファイルを実行して、組み込みJetty サーバーを起動します。このファイルを実行してサーバーを起動するには、以下に示すような標準のJava 構文を使用できます：

```bash theme={null}
java -jar arc.jar
```

サーバーを停止するには、このコマンドに`-stop` パラメータを渡します：

```bash theme={null}
java -jar arc.jar -stop
```

#### サービスとして実行

サービス名として**arc** を参照して、標準のシステムサービスコマンドを使用して{siteNameShort} サービスを操作できます。

サービスを起動するには、次のコマンドを送信します：

```bash theme={null}
systemctl start arc
```

サービスを停止するには、次のコマンドを送信します：

```bash theme={null}
systemctl stop arc
```

サービスを再開するには、次のコマンドを送信します：

```bash theme={null}
systemctl restart arc
```

### LDAP 認証の設定

次の手順では、[組み込みJetty Web サーバー](#組み込みjetty-サーバーの構成)を使用する場合に、LDAP を使用してユーザーを認証するように{siteNameShort} を設定します。

#### arc.properties の設定

まだ存在しない場合は、次のコマンドを使用して[デフォルトのarc.properties ファイルを生成](#arc-properties-ファイルの生成)します：

`java -jar arc.jar -GenerateProperties`

次の必須設定は、組み込みJetty サーバーにLDAP を認証に使用するよう指示します：

`cdata.loginService.ldap.enabled=true`

他のセクションと同じように、ファイル内でこれをセクション分けすることもできます：

```
;; LDAP
cdata.loginService.ldap.enabled=true
```

{siteNameShort} に必要な最小限の設定に加え、ご利用のLDAP サーバーに必要な追加設定を挿入します。{siteNameShort} に必要な最小限の設定は次のとおりです：

```
cdata.loginService.ldap.hostname
cdata.loginService.ldap.bindDn
cdata.loginService.ldap.bindPassword
```

利用可能な設定のリストは以下のとおりです：

```
cdata.loginService.ldap.userIdAttribute
cdata.loginService.ldap.debug
cdata.loginService.ldap.forceBindingLogin
cdata.loginService.ldap.bindPassword
cdata.loginService.ldap.roleMemberAttribute
cdata.loginService.ldap.useLdaps
cdata.loginService.ldap.roleBaseDn
cdata.loginService.ldap.bindDn
cdata.loginService.ldap.userPasswordAttribute
cdata.loginService.ldap.hostname
cdata.loginService.ldap.userRdnAttribute
cdata.loginService.ldap.roleObjectClass
cdata.loginService.ldap.port
cdata.loginService.ldap.authenticationMethod
cdata.loginService.ldap.userBaseDn
cdata.loginService.ldap.contextFactory
cdata.loginService.ldap.userObjectClass
cdata.loginService.ldap.roleNameAttribute
```

以下は`arc.properties` の完全なLDAP セクションの例です：

```
;; LDAP
cdata.loginService.ldap.enabled=true
cdata.loginService.ldap.bindDn="CN=ldapuser,DC=example,DC=org"
cdata.loginService.ldap.hostname="127.0.0.1"
cdata.loginService.ldap.bindPassword="Adminpassword1"

cdata.loginService.ldap.port="1389"
cdata.loginService.ldap.debug=true
cdata.loginService.ldap.authenticationMethod="simple"
cdata.loginService.ldap.userBaseDn="DC=example,DC=org"
cdata.loginService.ldap.userRdnAttribute="cn"
cdata.loginService.ldap.userPasswordAttribute="userPassword"
cdata.loginService.ldap.forceBindingLogin="true"
cdata.loginService.ldap.roleBaseDn="DC=example,DC=org"
cdata.loginService.ldap.roleNameAttribute="cn"
cdata.loginService.ldap.roleMemberAttribute="member"
cdata.loginService.ldap.useLdaps="false"
```

#### {siteNameShort} でLDAP ユーザーを作成する

ユーザーがLDAP サーバー経由で{siteNameShort} にログインできるようにするには、各LDAP ユーザーを{siteNameShort} に追加する必要があります。これにより、{siteNameShort} は設定済みのLDAP サーバーでログインしようとしているユーザーを相互参照できるようになります。各ユーザーを作成するには、以下の手順に従います（ユーザー管理の詳細については、[ユーザー管理とロール](../administration/settings/user-roles)を参照してください）：

* {siteNameShort} を起動し、{siteNameShort} 管理者ユーザーとしてログインします。
* {siteNameShort} へのアクセスが必要なすべてのLDAP ユーザーを作成します。ナビゲーションバーの歯車アイコンをクリックして、**ユーザー**を選択します。{siteNameShort} ユーザーはLDAP ユーザーと同一でなければなりません。例えば、LDAP ユーザーが`user01` や`user02` である場合、{siteNameShort} でも同じユーザー名を使用する必要があります。

すべてのユーザーを追加したら、アプリケーションを停止できます。

#### 設定をテストする

必要なLDAP 設定を記載した`arc.properties` ファイルを作成し、LDAP ユーザーを{siteNameShort} に追加し、LDAP サーバーの要件に基づいて構成が正しいことを確認したら、機能をテストすることができます。

`java -jar arc.jar` を使用して{siteNameShort} を起動するか、{siteNameShort} サービスを起動します。ログイン画面が表示されたら、LDAP ユーザーの1つを使ってログインを試みます。LDAP サーバーにあるユーザー名とパスワードを入力します（これは{siteNameShort} の**ユーザー**セクションに入力したものと同じである必要があります）。

ログインプロセスでは、ログインしたユーザーを{siteNameShort} で設定されたユーザーと照合し、次にLDAP サーバーと照合して、ユーザーが存在し、アプリケーションへのアクセスが許可されていることを確認します。設定が成功した場合、そのユーザーとしてアプリケーションにログインします。

#### LDAP 設定のトラブルシューティング

LDAP サーバーへの認証に問題がある場合、{companyName} は<a href="https://directory.apache.org/studio/" target="_blank">Apache Directory Studio</a> でLDAP 接続とフィルターをテストすることを推奨します。同じ接続設定と検索フィルターを`arc.properties` または`login.config` ファイルに適用できます。

##### 認証失敗のデバッグログの作成

`arc.properties` ファイルで次の設定を使用してデバッグを有効化できます：`cdata.loginService.ldap.debug`。

追加のログ情報をコンソール出力とWeb サーバーログに送ることもできます。アプリケーションインストールディレクトリ内の`arc.properties` ファイルおよび`webapps` フォルダと同じ場所に、`arc.logging.properties` という名前のファイルを作成し、以下の内容を記述します：

```
handlers = java.util.logging.ConsoleHandler, arc.ArcRolloverFileHandler
java.util.logging.ConsoleHandler.level = FINE
arc.ArcRolloverFileHandler.filename = yyyy_mm_dd.log
arc.ArcRolloverFileHandler.formatter = java.util.logging.SimpleFormatter
arc.ArcRolloverFileHandler.level = FINE
# Enable LDAP and Jetty JAAS module debug logs
org.eclipse.jetty.jaas.level = FINE
com.sun.jndi.ldap.level = FINE
```

サービスを再起動すると、LDAP 認証の試行に関する追加のログがコンソールに出力されます。

## Tomcat での設定

### WAR ファイルの配布

Tomcat にWAR ファイルを配布するには2つのオプションがあります。

* `webapps` フォルダにWAR ファイルをコピーする。
* Tomcat の管理コンソール内でWAR ファイルの配布を行う。Apache Tomcat のドキュメントには、この方法のさらに詳しい説明があります。お使いのTomcat のバージョンのドキュメントを参照してください。

WAR ファイルがTomcat のファイルアップロードで許可されているデフォルトの最大サイズを超える可能性があります。デプロイメント中のエラーを解決するために、Manager アプリケーションの`web.xml` ファイルを変更して、より大きなファイルを許可することができます。Tomcat の設定に応じて、このファイルは`/usr/share/tomcat7-admin/manager/WEB-INF`、または類似ディレクトリにある場合があります。このファイルでは、許容される最大ファイルサイズ（バイト単位）を変更できます。例えば、200MB のWAR ファイルのデプロイメントを許容するには、次の値を変更して許容される最大ファイルサイズを変更します：

```xml theme={null}
<multipart-config>
     <!-- 200 MB max -->
  <max-file-size>209715200</max-file-size>
  <max-request-size>209715200</max-request-size>
  <file-size-threshold>0</file-size-threshold>
</multipart-config>
```

### Java 認証・承認サービス（JAAS）の設定

{siteNameShort} がアプリケーション内で動的にユーザーを管理できるようにするには、次のガイドで説明するようにJAAS を設定する必要があります。このガイドでは、Tomcat の構成を制御し、コンテキストのオーバーライドを定義するために`arc.xml` を使用します。{companyName} は、Tomcat の構成を制御するために`server.xml` の代わりに`arc.xml` を使用することを推奨しています。また、`APP_DIRECTORY` や`APP_DB` などのアプリケーションコンテキストをオーバーライドするものは、JAASRealm モジュールが定義されている`arc.xml` に移動することを推奨します。

<Note>これは{siteNameShort} でTomcat を設定する際に必要な最初のステップです。</Note>

#### ログインモジュールの作成

`$CATALINA_BASE/conf/` フォルダに、`jaas.config` という名前のJAAS コンフィギュレーションファイルを作成します。

標準認証を使用するには、`jaas.config` に次の内容を含めます：

```xml theme={null}
Arc {
  arc.LoginModule required;
};
```

<Note>LDAP を使用する場合は、標準ログインモジュールのセットアップを続行します。完了したら、[LDAP を使用してユーザーを認証する](#ldap-を使用してユーザーを認証する)の手順に従います。</Note>

#### JAASRealm モジュールの作成（または変更）

1. `$CATALINA_BASE/conf/Catalina/localhost/` に`arc.xml` ファイルがあるかどうかを確認します。ある場合は、`arc.xml` を編集して以下のXML コンテンツブロックを追加します。パスに`arc.xml` が存在しない場合は、作成し、以下のXML コンテンツブロックを追加する必要があります。`arc.xml` には、この内容のみを含めるようにしてください。

   ```xml theme={null}
   <Context>
     <Realm className="org.apache.catalina.realm.JAASRealm" appName="Arc"
       userClassNames="arc.SimplePrincipal"
       roleClassNames="arc.GroupPrincipal" />
   </Context>
   ```

   <Note>Tomcat インスタンスの構成によっては、このパスが若干異なる場合があります。この例では、`Catalina` はエンジン名、`localhost` は`server.xml` で定義されたホスト名を示します。</Note>

2. Tomcat サーバーのコンフィギュレーションファイル`server.xml` の`<Host/>` 要素を、以下のように`copyXML` 属性をtrue に設定して更新します：

   ```xml theme={null}
   <Host name="localhost" appBase="webapps" unpackWARS="true" autoDeploy="true" copyXML="true">
     ...
   </Host>
   ```

   <Note>
     アプリケーション固有のコンテキストが`server.xml` に存在する場合は、`arc.xml` よりも優先されます。{companyName} は、コンテキストのオーバーライドには`server.xml` よりも`arc.xml` を使用することを推奨しています。次に例を示します：

     ```xml theme={null}
     <Context path="Arc">
        ...
     </Context>
     ```
   </Note>

#### ログインモジュールの表示

コンフィギュレーションを表示するには、Java 仮想マシン（JVM）がログインモジュール（`jaas.config`）に誘導される必要があります。`$CATALINA_BASE/conf/catalina.properties` ファイルに次の行を追加して、JVM の`java.security.auth.login.config` システムプロパティを`jaas.config` ファイルのパスに設定します：

```bash theme={null}
java.security.auth.login.config=${catalina.base}/conf/jaas.config
```

#### LDAP を使用してユーザーを認証する

Tomcat でLDAP を使用するように{siteNameShort} を構成する前に、[Java 認証・承認サービス（JAAS）の設定](#java-認証・承認サービス-jaas-の設定)の手順に従って、管理者ユーザーを作成できるようにします。管理者ユーザーは、LDAP ユーザーを{siteNameShort} に追加する前に必要です。ログインモジュールを設定し、管理者ユーザーとして{siteNameShort} に正常にログインできるようになったら、次の手順に従ってLDAP サポートを設定します。

1. 管理者ユーザーとして{siteNameShort} にログインします。{siteNameShort} へのアクセスが必要なすべてのLDAP ユーザーを作成するには、ナビゲーションバーにある**設定**歯車アイコンをクリックし、**ユーザー**を選択します。{siteNameShort} ユーザーはLDAP ユーザーと同一でなければなりません。例えば、LDAP ユーザーが`user01` や`user02` である場合、{siteNameShort} でも同じユーザー名を使用する必要があります。

2. [ログインモジュールの作成](#ログインモジュールの作成)で作成した`$CATALINA_BASE/conf/jaas.config` ファイルを、LDAP サーバーで動作するように編集します。`jaas.config` にいくつかの設定オプションを追加する必要があります。

   a. `com.sun.security.auth.module.LdapLoginModule REQUIRED` を追加して、LDAP ログインモジュールが必須であることを確認します。また、以前に作成したログインモジュールをオプションにする必要もあります。これを行うには、`arc.LoginModule optional;` を設定します。

   b. 必要なLDAP モジュールの設定オプションを追加します。少なくとも、次のオプションが必要です：`userProvider`、`authIdentity`、`userFilter`、および`useSSL`。これらのオプションに指定する値は、LDAP サーバーおよび要件に固有のものです。サーバー管理者および / またはLDAP のマニュアルを参照のうえ、値を決定してください。以下は、その設定例です。`arc.loginModule` が`optional` に、`com.sun.security.auth.module.LdapLoginModule` が`REQUIRED` に設定されていることに注意してください。

   ```
   Arc {
     com.sun.security.auth.module.LdapLoginModule REQUIRED
       userProvider="ldap://openldap:1389/ou=users,dc=example,dc=org"
       authIdentity="CN={USERNAME},OU=users,DC=example,DC=org"
       userFilter="(cn={USERNAME})"
       useSSL=false;
       debug=false;
     arc.LoginModule optional;
   };
   ```

   <Note>値に特別なトークン`{USERNAME}` が含まれている場合、そのトークンはログイン時に指定されたユーザー名の値に置き換えられます。</Note>

これらの手順を完了すると、LDAP ユーザーは{siteNameShort} にログインできるようになります。

### データディレクトリ権限の設定

Java サーブレットコンテナを実行するプロセスのユーザーに、以下のように、適切な場所にあるデータディレクトリへの読み / 書きのアクセス権限を許可します：

* **Windows：** `C:\ProgramData\CData\Arc\`
* **Linux：** `~/cdata/arc`

Tomcat サーバーを再起動して、変更を反映します。これでアプリケーションにログインすることができます。

## WebSphere Liberty での設定

WebSphere Liberty で{siteNameShort} を設定するには、次の手順に従います。

### WebSphere Liberty で{siteNameShort} アプリケーションを作成

<Note>このガイドでは、Liberty での{siteNameShort} の基本的なインストールについて説明します。よりカスタマイズされたLiberty インストールが必要な場合は、社内で追加の設定やオプションが必要かどうかを確認してください。</Note>

1. <a href="https://openliberty.io/start/" target="_blank">Open Liberty</a> または<a href="https://www.ibm.com/support/pages/240012-websphere-application-server-liberty-240012" target="_blank">WebSphere Application Server Liberty 24.0.0.12</a> からLiberty をダウンロードします。{siteNameShort} はWeb Profile 8 パッケージを想定しています。

2. このコマンドを実行して`arc` という名前のサーバーを作成します：
   * Windows：`.\bin\server.bat create arc`
   * Linux：`./bin/server create arc`

3. arc.war ファイルを`./usr/servers/arc/apps` ディレクトリにコピーします。

4. 必要に応じて、`./usr/servers/arc/server.xml` の`httpEndpoint` 要素でHTTP およびHTTPS ポートを変更します（[sample server.xml ファイル](#sample-server-xml-file)は以下にあります）。

5. server.xml ファイルを編集して、追加の構成アプリケーションの更新を行います。

6. このコマンドを実行してサーバーを起動します：
   * Windows：`.\bin\server.bat start arc`
   * Linux：`./bin/server start arc`

### Sample server.xml File

以下は、{siteNameShort} がLiberty で実行するために必要な設定を含むサンプルのserver.xml ファイルです。JAAS 設定に必要な設定も含まれています。以下のセクションでは、このファイルの一部について詳しく説明します。

```xml theme={null}
<?xml version="1.0" encoding="UTF-8"?>
<server description="Arc server">
  <!-- Enable features -->
  <featureManager>
    <feature>webProfile-8.0</feature>
  </featureManager>
  <!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
  <httpEndpoint id="defaultHttpEndpoint" host="localhost" httpPort="9080" httpsPort="9443" />
  <!-- Automatically expand WAR files -->
  <applicationManager autoExpand="true"/>
  <!-- Default SSL configuration enables trust for default certificates from the Java runtime -->
  <ssl id="defaultSSLConfig" trustDefaultCerts="true" />
  <webContainer AllowQueryParamWithNoEqual="true" />
  <webApplication id="arc-app" contextRoot="/arc" location="arc.war">
    <!-- Map role to group -->
    <application-bnd>
      <security-role name="cdata_admin">
        <group name="cdata_admin" access-id="group:defaultWIMFileBasedRealm/cn=cdata_admin,o=defaultWIMFileBasedRealm" />
      </security-role>
      <security-role name="cdata_standard">
        <group name="cdata_standard" access-id="group:defaultWIMFileBasedRealm/cn=cdata_standard,o=defaultWIMFileBasedRealm" />
      </security-role>
      <security-role name="cdata_support">
        <group name="cdata_support" access-id="group:defaultWIMFileBasedRealm/cn=cdata_support,o=defaultWIMFileBasedRealm" />
      </security-role>
      <security-role name="cdata_user">
        <special-subject type="ALL_AUTHENTICATED_USERS" />
      </security-role>
    </application-bnd>
  </webApplication>
  <jaasLoginModule id="arcLoginModule" className="arc.LoginModule" controlFlag="REQUIRED" classProviderRef="arc-app">
    <options isWebSphere="true" />
  </jaasLoginModule>
  <jaasLoginContextEntry id="system.WEB_INBOUND" name="system.WEB_INBOUND" loginModuleRef="arcLoginModule, hashtable, userNameAndPassword" />
  <!-- logging is optional -->
  <logging traceSpecification="com.ibm.ws.security.appbnd.*=all:com.ibm.ws.security.authorization.*=all:com.ibm.wsspi.security.authorization.*=all:com.ibm.ws.security.jaas.*=all:com.ibm.ws.security.auth.context.*=all:com.ibm.ws.webcontainer.*=all:arc.*=all:rssbus.*=all"
    consoleLogLevel="INFO"
    logDirectory="${server.config.dir}/logs"
    messageFileName="messages.log"
    traceFileName="trace.log"
    hideMessageIDs="true"/>
</server>
```

### Java 認証・承認サービス（JAAS）の設定

server.xml の以下の設定はJAAS を設定し、{siteNameShort} がLiberty アプリケーションサーバーで動的にユーザーを管理できるようにします。上記のserver.xml サンプルファイルをコピーした場合、これらの要素はすでに存在します。それ以外の場合は、次の手順に従います：

1. server.xml に次の要素を追加して、JAAS 認証用に{siteNameShort} ログインモジュールを設定します：

   ```xml theme={null}
   <jaasLoginModule id="arcLoginModule" className="arc.LoginModule" controlFlag="REQUIRED" classProviderRef="arc-app">
      <options isWebSphere="true" />
   </jaasLoginModule>
   <jaasLoginContextEntry id="system.WEB_INBOUND" name="system.WEB_INBOUND" loginModuleRef="arcLoginModule, hashtable, userNameAndPassword" />
   ```

2. server.xml の`webApplication` 要素でユーザーグループとロールマッピングを設定します。

   ```xml theme={null}
   <webApplication id="arc-app" contextRoot="/arc" location="arc.war">
      <!-- Map role to group -->
      <application-bnd>
        <security-role name="cdata_admin">
          <group name="cdata_admin" access-id="group:defaultWIMFileBasedRealm/cn=cdata_admin,o=defaultWIMFileBasedRealm" />
        </security-role>
        <security-role name="cdata_standard">
          <group name="cdata_standard" access-id="group:defaultWIMFileBasedRealm/cn=cdata_standard,o=defaultWIMFileBasedRealm" />
        </security-role>
        <security-role name="cdata_support">
          <group name="cdata_support" access-id="group:defaultWIMFileBasedRealm/cn=cdata_support,o=defaultWIMFileBasedRealm" />
        </security-role>
        <security-role name="cdata_user">
          <special-subject type="ALL_AUTHENTICATED_USERS" />
        </security-role>
      </application-bnd>
   </webApplication>
   ```

   `application-bnd` セクションは{siteNameShort} のセキュリティロールをユーザーグループにマッピングし、アプリケーション内で各ユーザーが持つ権限を制御します。各`security-role` 要素は{siteNameShort} の権限レベルの1つを定義し、対応するユーザーグループに関連付けます。**cdata\_admin**、**cdata\_standard**、**cdata\_support**、および**cdata\_user** の`security-role` 要素が存在することを確認してください。

3. `webContainer` 要素に`AllowQueryParamWithNoEqual` プロパティを追加して、等号（=）なしのクエリパラメータを有効にします。この設定により、{siteNameShort} は等号を含まない特定のURL クエリパラメータを適切に処理できるようになります。

   ```xml theme={null}
   <webContainer AllowQueryParamWithNoEqual="true" />
   ```

4. Liberty を再起動します。

これで{siteNameShort} にアクセスでき、{siteNameShort} ログインモジュールで使用できるようになりました。これにより、アプリケーションレベルでユーザーを確実に管理できます。LDAP を設定するには、次のセクションを参照してください。

### LDAP を使用したユーザー認証

Liberty でLDAP を使用するように{siteNameShort} を設定する前に、[Java 認証・承認サービス（JAAS）の設定](#java-認証・承認サービス-jaas-の設定-2)の手順に従って、ローカル管理者ユーザーを作成してください。LDAP ユーザーを{siteNameShort} に追加するには、管理者ユーザーが必要です。ログインモジュールを設定し、管理者ユーザーとして{siteNameShort} に正常にログインできるようになったら、次の手順に従ってLDAP サポートを設定します。

1. server.xml を編集して、LDAP リポジトリをLiberty に追加します。

   1. `featureManager` 要素に、新しいフィーチャー`ldapRegistry-3.0` を追加します。

      ```xml theme={null}
      <!-- Enable features -->
      <featureManager>
        <feature>webProfile-8.0</feature>
        <feature>ldapRegistry-3.0</feature>
      </featureManager>
      ```

   2. `webContainer` 要素の後にLDAP レジストリの詳細を追加します。

      ```xml theme={null}
      <!-- A LDAP registry sample connects to Microsoft Active Directory. The default activedFilters is used here.
           For more ldap types: https://www.openliberty.io/docs/latest/reference/config/ldapRegistry.html
        -->
      <ldapRegistry id="arcLdapRegistry" realm="testADRealm"
                    host="192.168.0.122" port="389" ignoreCase="true"
                    baseDN="CN=Users,DC=ka,DC=com"
                    bindAuthMechanism="simple"
                    bindDN="ka\nancyw"
                    bindPassword ="xA123456"
                    ldapType="Microsoft Active Directory">
      </ldapRegistry>
      ```

   3. `arc.LoginModule` のコントロールフラグを`OPTIONAL` に変更します。

      ```xml theme={null}
      <jaasLoginModule id="arcLoginModule" className="arc.LoginModule" controlFlag="OPTIONAL" classProviderRef="arc-app">
           <options isWebSphere="true" />
      </jaasLoginModule>
      ```

2. ローカル管理者ユーザーとして{siteNameShort} にログインします。{siteNameShort} でLDAP ユーザーを作成するには、ナビゲーションバーの**設定**歯車アイコンをクリックして、**ユーザー**を選択します。{siteNameShort} ユーザーはLDAP サーバーのユーザーと同一でなければなりません。例えば、LDAP ユーザーが`user01` や`user02` である場合、{siteNameShort} でも同じユーザー名を使用する必要があります。

3. 変更を保存し、Liberty を再起動してプロセスを完了します。正常に構成されると、{siteNameShort} にサインインするユーザーはLDAP 経由で認証されます。

### デバッグ設定

[sample server.xml](#sample-server-xml-file) ファイルには、セキュリティ、認証、Web コンテナ操作、および{siteNameShort} 固有のコンポーネントの詳細なトレース情報をキャプチャする包括的なログ設定が含まれています。これは、LDAP やその他の設定で構成上の問題が発生している場合に役立ちます。

```xml theme={null}
<!-- logging is optional -->
<logging traceSpecification="com.ibm.ws.security.appbnd.*=all:com.ibm.ws.security.authorization.*=all:com.ibm.wsspi.security.authorization.*=all:com.ibm.ws.security.jaas.*=all:com.ibm.ws.security.auth.context.*=all:com.ibm.ws.webcontainer.*=all:arc.*=all:rssbus.*=all"
  consoleLogLevel="INFO"
  logDirectory="${server.config.dir}/logs"
  messageFileName="messages.log"
  traceFileName="trace.log"
  hideMessageIDs="true"/>
```

`traceSpecification` 属性は、セキュリティバインディング、承認、JAAS 認証、Web コンテナ操作、およびすべての{siteNameShort} とRSSBus モジュールを含むいくつかの主要なコンポーネントグループに対して`all` に設定されています。この構成は、認証の問題、承認の問題、およびアプリケーション固有のエラーのトラブルシューティングに役立つ詳細な診断情報を提供します。ログは`${server.config.dir}/logs` ディレクトリに、メッセージ（`messages.log`）とトレースデータ（`trace.log`）の別々のファイルとして書き込まれます。

本番環境では、パフォーマンスを向上させ、ログファイルの増大を最小限に抑えるために、ログの冗長性を減らすことを検討するとよいでしょう。これを行うには、特定のトレース仕様を`all` から`info` に変更するか、監視する必要のないコンポーネントを削除します。例えば、セキュリティの問題をトラブルシューティングしていない場合は、構成を`traceSpecification="arc.*=all:rssbus.*=all"` に簡略化して、{siteNameShort} 固有のログのみに焦点を当てることができます。逆に、トラブルシューティング中にさらに詳細な診断が必要な場合は、一時的に`traceSpecification="*=all"` に設定して、すべてのLiberty コンポーネントにわたる包括的なログを有効にできます。これは大きなログファイルをすぐに生成するため、短期間のデバッグにのみ使用すべきであることに注意してください。

### データディレクトリ権限の設定

Java サーブレットコンテナを実行するプロセスのユーザーに、データディレクトリへの読み書きのアクセス権限を許可します：

* **Windows：** `C:\ProgramData\CData\Arc\`
* **Linux：** `~/cdata/arc`

Liberty サーバーを再起動して、変更を反映します。これでアプリケーションにログインすることができます。

## Jetty での設定

{siteNameShort} にはJetty Web サーバーが組み込まれていますが、アプリケーションを外部のJetty 設定で使用することもできます。

### WAR ファイルとarc.xml の配布

arc.war を`${JETTY_BASE}` の`webapps` フォルダにコピーします。また、arc.xml ファイルも同じ`${JETTY_BASE}` フォルダに配置します。arc.xml がない場合は、作成する必要があります。少なくとも、Jetty の標準構成では、arc.xml ファイルに次の内容が含まれている必要があります：

```xml theme={null}
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="arcServer" class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath">/</Set>
  <Set name="war">/var/lib/jetty/webapps/arc.war</Set>
  <Set name="securityHandler">
    <New class="org.eclipse.jetty.security.ConstraintSecurityHandler">
      <Set name="loginService">
        <New class="org.eclipse.jetty.jaas.JAASLoginService">
          <!-- This name is the same as **login-config > realm-name** in web.xml.  -->
          <Set name="name">ArcRealm</Set>
          <!-- LoginModuleName must match the name of your LoginModule, as declared in your login-module configuration file. -->
          <Set name="loginModuleName">Arc</Set>
          <!-- Set the principal class name for the custom role. -->
          <Set name="roleClassNames">
            <Array type="java.lang.String">
              <Item>arc.GroupPrincipal</Item>
            </Array>
          </Set>
        </New>
      </Set>
    </New>
  </Set>
</Configure>
```

### Java 認証・承認サービス（JAAS）の設定

JAAS を設定して{siteNameShort} がアプリケーションのユーザーを管理できるようにするには、次のセクションで説明する手順を実行する必要があります。

#### JAAS モジュールの追加

JAAS モジュールをインストールするには、次のコマンドを送信します：

```bash theme={null}
java -jar start.jar --add-modules=deploy,jsp,http,jaas
```

#### {siteNameShort} ログインモジュールの作成

login.config というログイン設定ファイルを作成し、次のパスに配置します：`{JETTY_BASE}/etc/login.conf`。login.config ファイルに以下の内容を記述します：

```
Arc {
    arc.LoginModule required debug=true;
};
```

#### セキュリティハンドラの更新

セキュリティハンドラの設定は、arc.xml 設定ファイルにあります。[WAR ファイルとarc.xml の配布](#war-ファイルとarc-xml-の配布)の内容を使用してarc.xml ファイルを作成した場合は、この変更がすでにその内容に含まれているため、この手順をスキップできます。そうでない場合は、`securityHandler` ブロックを以下のように変更します：

```xml theme={null}
<Set name="securityHandler">
  <New class="org.eclipse.jetty.security.ConstraintSecurityHandler">
   <Set name="loginService">
     <New class="org.eclipse.jetty.jaas.JAASLoginService">
          <!-- This name is the same as **login-config > realm-name** in web.xml.  -->
       <Set name="name">ArcRealm</Set>
          <!-- LoginModuleName must match the name of your LoginModule, as declared in your login-module configuration file. -->
       <Set name="loginModuleName">Arc</Set>
       <!-- Set the principal class name for the custom role. -->
       <Set name="roleClassNames">
           <Array type="java.lang.String">
             <Item>arc.GroupPrincipal</Item>
           </Array>
         </Set>
     </New>
   </Set>
  </New>
</Set>
```

### Jetty でのLDAP

Jetty で{siteNameShort} を実行する際にLDAP を設定するには、標準の{siteNameShort} ログインモジュールを使用してJetty で実行されるように{siteNameShort} を設定する必要があります。{siteNameShort} がJetty で{siteNameShort} ログインモジュールを使用して起動したら、次の手順に従ってJetty がユーザー認証にLDAP を使用するように構成します。

1. LDAP ユーザーを{siteNameShort} に追加します。
   1. {siteNameShort} にLDAP ユーザーを追加するには、管理者ユーザーとしてログインします。{siteNameShort} でLDAP ユーザーを作成するには、ナビゲーションバーの設定歯車アイコンをクリックして、**ユーザー**を選択します。{siteNameShort} ユーザーはLDAP サーバーのユーザーと同一でなければなりません。例えば、LDAP ユーザーが`user01` や`user02` である場合、{siteNameShort} でも同じユーザー名を使用する必要があります。
   2. 完了したら{siteNameShort} を停止します。

2. login.conf で、Jetty LDAP ログインモジュールのJAAS 構成を作成します。
   1. `${JETTY_BASE}/etc/login.conf` にあるlogin.conf ファイルを開き、Jetty LDAP モジュール用のJAAS 設定を追加します。さまざまな構成設定が利用可能ですが、JAAS の構成は特定の要件とLDAP サーバーの構成によって異なります。利用可能なJAAS 構成のリストについては、<a href="https://jetty.org/docs/jetty/10/operations-guide/jaas/index.html#ldaploginmodule" target="_blank">Jetty ドキュメント</a>および以下を参照してください：

      ```
      debug
      useLdaps
      contextFactory
      hostname
      port
      bindDn
      bindPassword
      authenticationMethod
      forceBindingLogin
      userBaseDn
      userRdnAttribute
      userIdAttribute
      userPasswordAttribute
      userObjectClass
      roleBaseDn
      roleNameAttribute
      roleMemberAttribute
      roleObjectClass
      ```

   2. 以下は、LDAP サーバーで構成されたlogin.conf ファイルの例です。必要な設定と値は、特定の要件とLDAP サーバーの構成によって異なることに注意してください。セットアップに必要な設定と値を決定するには、LDAP 管理者に問い合わせるか、LDAP サーバーのドキュメントを参照してください。

      ```
      Arc {
          arc.LoginModule optional debug=true;
          org.eclipse.jetty.jaas.spi.LdapLoginModule optional
          debug="true"
          contextFactory="com.sun.jndi.ldap.LdapCtxFactory"
          hostname="openldap"
          port="1389"
          bindDn="CN=ldapuser,DC=example,DC=org"
          bindPassword="Adminpassword1"
          authenticationMethod="simple"
          forceBindingLogin="true"
          userBaseDn="OU=users,DC=example,DC=org"
          userRdnAttribute="cn"
          userPasswordAttribute="userPassword"
          roleBaseDn="DC=example,DC=org"
          roleNameAttribute="cn"
          roleMemberAttribute="member"
          useLdaps="false";
      };
      ```

      `arc.LoginModule` と`org.eclipse.jetty.jaas.spi.LdapLoginModule` は両方ともオプションに設定されていることに注意してください。これにより、ユーザー認証を行う際に両方のログインモジュールを使用できるようになります。1つのログインモジュールがユーザーの認証に失敗した場合、ログインは2つ目のモジュールにフォールバックします。両方のログインモジュールがユーザー認証に失敗した場合は、ログインは完全に失敗します。

   3. login.conf が必要なLDAP 設定で更新されたら、{siteNameShort} を再起動します。正しく設定されていれば、LDAP ユーザーは{siteNameShort} にログインできるようになります。

### データディレクトリ権限の設定

Java サーブレットコンテナを実行するプロセスのユーザーに、データディレクトリへの読み / 書きのアクセス権限を許可します：

* **Windows：** `C:\ProgramData\CData\Arc\`
* **Linux：** `~/cdata/arc`

Jetty サーバーを再起動して、変更を反映します。これでアプリケーションにログインすることができます。

## ユーザー管理

初めて起動する際、{siteNameShort} はユーザー名とパスワードの資格情報を持つユーザーの作成を要求します。最初のユーザーを作成後、アプリケーションの**設定**ページの**ユーザー**タブで、ユーザーの追加、削除、および管理を行うことができます。

{siteNameShort} を外部のJava サーブレットにデプロイする場合（つまり、アプリケーション付属の組み込みサーバーを使用**しない**場合）、{siteNameShort} によるユーザーの管理を可能にするためJAAS の設定が必要です。前のセクションで、特定の外部サーブレットごとにJAAS を設定するプロセスを詳しく説明しています。

## アプリケーションディレクトリの検索と設定

{siteNameShort} の *`ApplicationDirectory`* フォルダには、アプリケーションで使用されるすべてのデータ（設定データ、アプリケーションデータ、ログデータ、証明書など）が格納されます。*`ApplicationDirectory`* のデフォルトの場所は、{siteNameShort} が組み込みWeb サーバー経由でホストされているか、外部のJava サーブレットコンテナ経由でホストされているかによって異なります。

組み込みWeb サーバーの場合、 *`ApplicationDirectory`* は *`InstallationDirectory`* と同じです。デフォルトの場所は次のとおりです：

```bash theme={null}
/opt/arc
```

{siteNameShort} が外部のJava サーブレットコンテナにホストされている場合、 *`ApplicationDirectory`* はサーバーを実行しているユーザーのホームディレクトリからの相対パスです：

`~/arc`

このパスでは、'\~' はアプリケーションをホストするサーバーを実行しているユーザーのホームディレクトリに解決します。

*`ApplicationDirectory`* フォルダを構成でき、これはさまざまなシナリオで役立ちます：

* {siteNameShort} の複数インスタンスのクラスタリング
* アプリケーションデータ用の共有ネットワークドライブの使用
* 同じフォルダにアクセスする他のシステム内への{siteNameShort} の組み込み

*`ApplicationDirectory`* を変更すると、アプリケーションのデータファイルが移動します。ただし、EXE ファイルやJAR ファイルなどの他のアプリケーションリソースは移動しません。これらのリソースは *`InstallationDirectory`* フォルダに格納されます。このフォルダは *`ApplicationDirectory`* と同じ場合がありますが、 *`ApplicationDirectory`* を変更しても、これらのリソースの場所は変わりません。

### 組み込みJava サーバー

クロスプラットフォーム版を組み込みJetty サーバーで使用する場合、デフォルトで *`ApplicationDirectory`* は *`InstallationDirectory`* となります。これを変更するには、[arc.properties ファイルを生成します](#arc-properties-ファイルの生成)。テキストエディタでファイルを開き、`cdata.app.directory` 設定を、目的のディレクトリのパスに設定します。次の例は、マウントされたドライブ上の共有フォルダにデータディレクトリを設定した場合を示しています：

```bash theme={null}
cdata.app.directory=/mnt/shared/arc
```

{siteNameShort} が`cdata.app.directory` のパスを見つけることができ、そのパスで読み取りと書き込みができる適切なアクセス許可を持つ場合、指定したディレクトリにデータフォルダを作成します。

### 外部Java サーバー

クロスプラットフォーム版を外部のJava サーブレット（アプリケーションに含まれるJetty サーバー以外のサーバー）で使用する場合、アプリケーションのデータディレクトリの設定の詳細は使用する特定のサーブレットに依存します。特定のサーブレットに適した構文を使用する`AppDirectory` 環境変数を必要なディレクトリのパスに設定する必要があります。

{siteNameShort} が`AppDirectory` のパスを見つけることができ、そのパスで読み取りと書き込みができる適切なアクセス許可を持つ場合、指定したディレクトリにデータフォルダを作成します。

## アプリケーションデータベースの設定

{siteNameShort} のアプリケーションデータベースは、以下のようなアプリケーションデータの複数のテーブルを保存します：

* トランザクションログ：アプリケーションによって処理される各トランザクションのメタデータ
* アプリケーションログ：アプリケーションレベルのエラーとイベント
* アクセスログ：アプリケーションのWeb エンドポイントへのリクエスト
* 監査ログ：ユーザーによる{siteNameShort} の設定変更

デフォルトで{siteNameShort} は *`ApplicationDirectory`* に存在するH2 データベースをアプリケーションデータベースとして使用します。このデータベースは最大100,000 トランザクションまでを推奨します。その件数に達したら、{companyName} は外部データベースへの移行を推奨します。SQL Server、PostgreSQL、MySQL などのエンタープライズデータベースを使用するようにアプリケーションを設定できます。

<Note>セキュリティ上の理由から、アプリケーションデータベースを切り替える場合は、必ず[integrityResetTampering](../../scripting/operations/op-integrity-reset-tampering) オペレーションを実行してハッシュチェーンをリセットする必要があります。</Note>

### 組み込みJava サーバー

クロスプラットフォーム版を組み込みJetty サーバーで使用する場合、デフォルトのアプリケーションデータベースは *`ApplicationDirectory`* にあるH2 データベースです。これを変更するには、[arc.properties ファイルを生成します](#arc-properties-ファイルの生成)。テキストエディタでファイルを開き、`cdata.app.db` の設定に、必要なデータベースの適切な接続パラメータを含むJava Database Connectivity (JDBC) 接続文字列を設定します。次の例は、この設定をMySQL、PostgreSQL、およびSQL Server について示しています：

#### MySQL

```
cdata.app.db=jdbc:cdata:mysql:server=localhost;port=3306;database=mysql;user=MyUserName;password=MyPassword
```

#### PostgreSQL

```
cdata.app.db=jdbc:cdata:postgresql:server=localhost;port=5432;database=postgresql;user=MyUserName;password=MyPassword
```

#### SQL Server

```
cdata.app.db=jdbc:cdata:sql:server=localhost;database=sqlserver;user=MyUserName;password=MyPassword
```

{siteNameShort} が`cdata.app.db` 接続文字列で正常に接続を確立できる場合、そのデータベースをアプリケーションデータベースとして使用します。

<Note>アプリケーションデータベースとしてSQL Server を使用する際のデッドロックの可能性を減らすため、{companyName} ではREAD\_COMMITTED\_SNAPSHOT が有効化されていることの確認を推奨しています。</Note>

### 暗号化されたデータベース接続文字列の生成

{siteNameShort} は、アプリケーションのデータベース接続用に暗号化された接続文字列を生成する機能を提供します。この暗号化された接続文字列を使用することで、{siteNameShort} 設定ファイルにログイン認証情報をプレーンテキストで保存することなく、アプリケーションデータベースを指定することができます。暗号化された接続文字列を生成するには、arc.jar があるインストールディレクトリで、接続情報を引用符で囲んだ例の文字列に置き換えて、以下のコマンドを実行します：

```
java -jar arc.jar -EncryptConnectionString "jdbc:cdata:mysql:Server=serverName;Port=1234;Database=databaseName;User=userName;Password=passwordSample"
```

コマンドを発行すると、コマンドウィンドウに暗号化された文字列が出力されます。次に例を示します：

```
ENCRYPTEDA:5TWyjE0U4GBEVNkd51SqbMXaBwVGqj5uyMfTHt48y/F5l3sDPZynNnPMb/ppXzuFTzFPywA1/SSKUgLy9nAuvA7RAdZj7WsKI1xAgDMmEFNQ68/lHjFYZpS10sIaoUloyZVDkj4uLHTZ0SaMD5PPUA==
```

この暗号化された文字列を、[上記](#アプリケーションデータベースの設定)のように `cdata.app.db` のプレーンテキスト値の代わりに使用することができます。

### 外部Java サーバー

クロスプラットフォーム版を外部のJava サーブレット（アプリケーションに含まれるJetty サーバー以外のサーバー）で使用する場合、アプリケーションのデータベースの設定の詳細は使用する特定のサーブレットに依存します。特定のサーブレットに適した構文を使用する、サーバーを設定する際のアプローチを次のいずれかから選択します：

* ターゲットデータベースの接続プロパティを含むJNDI データソースを定義。
* `APP_DB` 環境変数をJDBC 接続文字列に設定。

{siteNameShort} がJNDI データソースまたは`APP_DB` 接続文字列を使用してデータベースに接続できる場合、そのデータベースをアプリケーションデータベースとして使用します。

### デフォルト文字セットの指定（MySQL のみ）

MySQL 8.0 以降などのMySQL バージョンでは、データベースおよびそのテーブルのデフォルト文字セット（charset）はUTF8（具体的には`utf8mb4`）です。ただし、8.0 より前のバージョンのMySQL では、デフォルトのcharset は通常Latin1 であり、基本ラテン文字以外の文字を含むデータで問題が発生する可能性があります。

古いバージョンのMySQL を使用している場合は、代わりに`utf8mb4` を使用するようにデータベースを設定することで、これらの問題を回避できます。この変更を行うには2つの方法があります。既存のデータベースを直接更新するか、MySQL のエクスポートおよびインポートツールを使用してデータを新しいUTF8 エンコードのデータベースに移行します。

**データベースを直接更新する**

1. データベースをバックアップします：`mysqldump -u root -p --default-character-set=latin1 --databases [database name] > backup.sql`

2. デフォルトのcharset をUTF8 に変更します：`ALTER DATABASE [database name] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;`

3. すべてのデータベーステーブルのデフォルトのcharset をUTF8 に変更するSQL ステートメントを生成します：

   ```
   SELECT CONCAT('ALTER TABLE ', table_name, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;') AS alter_sql
   FROM information_schema.TABLES
   WHERE table_schema = '[database name]' AND table_type = 'BASE TABLE';
   ```

4. 前のステップで生成されたSQL ステートメントを実行します。

**エクスポートおよびインポートツールを使用する**

1. データ定義言語（DDL）とデータをエクスポートします：

   ```
   mysqldump -u root -p --default-character-set=latin1 --no-create-info [database name] > data.sql
   mysqldump -u root -p --no-data [database name] > schemas.sql
   ```

2. schemas.sql のデフォルトcharset を`CHARSET=latin1` から`CHARSET=utf8mb4` に変更します。

3. UTF8 をデフォルトのcharset とする新しいデータベースを作成します：`CREATE DATABASE [new database name] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;`

4. 新しいデータベースにインポートします：

   ```
   mysql -u root -p [new database name] < schema.sql
   mysql -u root -p [new database name] < data.sql
   ```

## ログインのロックアウト

{siteNameShort} は、ブルートフォースアタックを防ぐために、不正なパスワードを何度も入力するユーザーを自動的にロックアウトします。デフォルトでは、5分以内に6回不正なパスワードを入力したユーザーは30分間ロックアウトされます。

Web サーバーの動作を規定するXML 設定ファイルを編集することで、ロックアウトの設定を変更できます。この3つの設定はロックアウトに関係します：

* **LockoutFailedAttempts**：ロックアウトのトリガーとなる不正なパスワードの数。ロックアウトを無効にするには、LockoutFailedAttempts を0に設定します。
* **LockoutMinutes**：ロックアウトする時間。デフォルトは30分です。
* **LockoutTimeCheckPeriod**：失敗した試行回数を0にリセットするまでの時間。デフォルトは5分です。

### 組み込みJetty サーバー

ロックアウト設定を変更するには、[arc.properties ファイルを生成](#arc-properties-ファイルの生成)し、以下のように*name:value* ペアのカンマ区切りのリストを`initParameters` に追加します：

```bash theme={null}
cdata.initParameters=LockoutFailedAttempts:0
```

### Tomcat

Tomcat のarc.xml ファイルのロックアウト設定を編集するための構文は以下のとおりです：

```xml theme={null}
<Context>
  <Parameter name="LockoutFailedAttempts" value="0" />
</Context>
```

## 一般的な課題と解決方法

このセクションでは、Java 環境に{siteNameShort} をデプロイする際に遭遇する可能性がある一般的な課題をリストアップします。それぞれの課題について推奨ソリューションを記載します。その他のヘルプについては、{companyName} テクニカルサポート：**[support@cdata.co.jp](mailto:support@cdata.co.jp)** にお問い合わせください。

### 課題

#### {siteNameShort} が起動しない、または期待されるものとは異なるAppDirectory を使用して起動する

このエラーは、{siteNameShort} が *`ApplicationDirectory`* にアクセスするために必要な権限を持っていない可能性があります（ *`ApplicationDirectory`* は、ジョブ、接続、変換などの設定に関する重要な情報を保存するフォルダです）。このエラーの原因として考えられるのは、サービスをセットアップする前にローカルユーザーとして{siteNameShort} を実行している場合です。この場合、アプリケーションで作成される特定のリソースが、ローカルユーザーの下に作成されている可能性があります。結果として、{siteNameShort} をサービスとして実行する場合にこれらのリソースを利用できません。

### 推奨ソリューション

Linux オペレーティング環境で、サービスアカウント（または{siteNameShort} を実行させるための他のアカウント）が *`ApplicationDirectory`* にアクセスできることを確認する最も簡単な方法は、`chown` コマンドを使用することです。例えば、 *`ApplicationDirectory`* がLinux のデフォルトの場所にあって{siteNameShort} がサービスアカウントで実行されるべき場合、以下のコマンドでエラーが解決されるはずです：

```bash theme={null}
sudo chown -R cdatarc:cdatarc /opt/arc
```
