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

# 外部サーブレットへのCData Sync のデプロイ

> [!NOTE]
>
> このページには、Sync セルフホスト環境にのみ適用されるコンテンツが含まれています。

CData Sync のインストールにはApache Tomcat、Eclipse Jetty、またはIBM WebSphere などのJava サーブレットコンテナにデプロイ可能なWAR ファイルが含まれています。外部Java サーブレットコンテナへのデプロイにはサーブレット3.0（Jetty 8+、Tomcat 7+、WebSphere 8+、など）が必要です。

## Apache 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`、または別の類似ディレクトリにある可能性があります。このファイルでは、許容される最大ファイルサイズ（バイト単位）を変更できます。例えば、200-MB の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）の設定

Sync がアプリケーション内で動的にユーザーを管理できるようにするには、次のサブセクションで説明するようにJAAS を設定する必要があります。

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

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

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

```
Sync {
  sync.LoginModule required;
};
```

LDAP またはWindows Active Directory を使用してユーザーを認証する場合は、代わりに以下の内容を追加します。

```
Sync {
  com.sun.security.auth.module.LdapLoginModule REQUIRED
    userProvider="ldaps://ab1cdef234.wfsaas.net:636/CN=Users,DC=example,DC=com"
    authIdentity="{USERNAME}@example.com"
    userFilter="(&(|(samAccountName={USERNAME})(userPrincipalName={USERNAME})(cn={USERNAME}))(objectClass=user))"
    useSSL=false;
  sync.LoginModule optional;
};
```

この例では、`userProvider`、`authIdentity`、および`userFilter` 属性の値を環境に合わせて変更する必要があります。

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

以下にあるコンフィギュレーションXML ファイルを作成（既存の場合は変更）して、Sync のコンテキストを作成します。

`$CATALINA_BASE/conf/Catalina/localhost/sync.xml`

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

以下で示すように、`&lt;Context&gt;` ブロックを定義して`&lt;Realm&gt;` 要素を追加します。

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

次に、Tomcat サーバーのコンフィギュレーションファイルserver.xml の`&lt;Host&gt;` 要素を、以下のように`copyXML` 属性を`true` に設定して更新します。

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

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

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

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

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

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

* **Windows：** `C:\ProgramData\CData\Sync\`
* **Linux：** `~/cdata/sync`

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

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

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

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

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

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

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

## WebSphere での設定

### WebSphere クラスローダーの設定

WebSphere がアプリケーションリソースを正しくロードするためには、以下の手順に従ってください。

1. WebSphere で、**アプリケーション -> アプリケーション・タイプ -> WebSphere エンタープライズ・アプリケーション**に移動します。
2. **Sync** を選択します。
3. **クラス・ロードおよび更新の検出**を選択します。
4. **最初にローカル・クラス・ローダーをロードしたクラス（親が最後）** を選択します。
5. **アプリケーションの単一クラス・ローダー**を選択します。
6. **OK** をクリックします。その後**保存**をクリックします。

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

次の手順でJAAS を設定し、Sync がWebSphere Application Server 内で動的にユーザーを管理できるようにします。

1. Sync をデプロイします。
   1. アプリケーションセキュリティを有効化します（**セキュリティー -> グローバル・セキュリティー -> アプリケーション・セキュリティーを使用可能にする**）。
   2. 次のように、システムログインにカスタムログインモジュールを追加します。
      1. **セキュリティー -> グローバル・セキュリティー -> Java 認証・承認サービス -> システム・ログイン -> WEB\_INBOUND** に移動します。**新規**をクリックして`sync.LoginModule` という名前の新しいエントリを追加します。`sync.LoginModule` は`com.ibm.ws.security.server.lm.ltpaLoginModule` の前にある必要があることに注意してください。
      2. **ログイン・モジュール・プロキシーの使用**チェックボックスを選択します。
      3. **認証ストラテジー**の**OPTIONAL** を選択します。
      4. **カスタム・プロパティー**の**isWebSphere** を追加して**true** に設定します。
2. グループを作成します。
   1. **ユーザーおよびグループ -> グループの管理 -> 作成**に移動します。
   2. **cdata\_admin**、**cdata\_standard**、および **cdata\_support** グループを作成します。
3. グループをロールにマップします。
   1. **アプリケーション -> アプリケーション・タイプ -> WebSphere エンタープライズ・アプリケーション -> sync\_war -> ユーザー / グループへのセキュリティー・ロールのマッピング**に移動します。
   2. **cdata\_admin** グループを **cdata\_admin** ロールにマップします。
   3. **cdata\_standard** グループを **cdata\_standard** ロールにマップします。
   4. **cdata\_support** グループを **cdata\_support** ロールにマップします。
   5. **アプリケーションのレルム内で認証済みすべて**を **cdata\_user** ロールにマップします。
4. `com.ibm.ws.webcontainer.AllowQueryParamWithNoEqual` プロパティを**true** に設定します。
   1. **サーバー -> サーバー・タイプ -> Web Sphere Application Server** に移動し、Sync がホストされているサーバーを選択します。
   2. **コンテナー設定 -> Web コンテナー設定 -> Web コンテナー**を選択します。
   3. **追加プロパティー -> カスタム・プロパティー**を選択します。
   4. 新規プロパティ：`com.ibm.ws.webcontainer.AllowQueryParamWithNoEqual` を追加します。
   5. 値を**true** に設定します。
5. WebSphere を再起動します。

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

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

* **Windows：** `C:\ProgramData\CData\Sync\`
* **Linux：** `~/cdata/sync`

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

## Jetty での設定

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

### WAR ファイルの配布

WAR ファイルをJetty の`webapps` フォルダにコピーします。

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

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

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

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

```bash theme={null}
java -jar {JETTY_HOME}/start.jar --add-to-start=jaas
```

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

`{JETTY_BASE}/etc/login.conf` フォルダに、login.config という名前のログインコンフィギュレーションファイルを作成します。

login.config ファイルに以下の内容を記述します。

```
Sync {
    sync.LoginModule required debug=true;
};
```

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

セキュリティハンドラの設定は、sync.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">SyncRealm</Set>
          <!-- LoginModuleName must match the name of your LoginModule, as declared in your login-module configuration file. -->
       <Set name="loginModuleName">Sync</Set>
       <!-- Set the principal class name for the custom role. -->
       <Set name="roleClassNames">
           <Array type="java.lang.String">
             <Item>sync.GroupPrincipal</Item>
           </Array>
         </Set>
     </New>
   </Set>
  </New>
</Set>
```

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

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

* **Windows：** `C:\ProgramData\CData\Sync\`
* **Linux：** `~/cdata/sync`

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

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

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

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

`~/sync`

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

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

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

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

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

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

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

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

* ジョブ
* タスク
* 接続
* 履歴（ジョブとタスク両方）
* アプリケーションログ（アプリケーションレベルのエラーとイベント）
* 監査ログ（ユーザーによるSync の設定変更）

バージョン26.2 以降、Sync はデフォルトのアプリケーションデータベースとして組み込みH2 データベースを使用します。既存のインストールでは、引き続きレガシーの組み込みDerby データベースを使用します。Sync は既存のインストールをH2 に自動的に移行しません。

また、Microsoft SQL Server、PostgreSQL、MySQL などのエンタープライズデータベースを使用するようSync を設定することもできます。外部データベースを設定する別の方法もありますが（例えば、[AWS-AMI 版](https://docs.sync.cdata.com/26.4/ja/getting-started/installation-and-configuration/aws-ami-edition.md#アプリケーションデータベース)で説明されているように）、推奨されるアプローチは[移行ドキュメント](https://docs.sync.cdata.com/26.4/ja/getting-started/administration/settings-page/migration.md)の手順に従うことです。

### データベース接続の設定

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

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

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

### 暗号化された接続文字列を使用したデータベース資格情報の保護

Sync には、アプリケーションデータベース接続の暗号化された接続文字列を生成する機能があります。この暗号化された接続文字列を使用すると、Sync のプロパティファイルにログイン資格情報を平文で保存することなく、アプリケーションデータベースを指定できます。

暗号化された接続文字列を生成するには、sync.jar が格納されているインストールディレクトリで次のコマンドを実行します。引用符内のサンプル文字列は、お使いの接続情報に置き換えてください。

```bash theme={null}
java -jar sync.jar -EncryptConnectionString "jdbc:cdata:mysql:Server=serverName;Port=1234;Database=databaseName;User=userName;Password=passwordSample"
```

コマンドを実行すると、以下の例のように、コマンドウィンドウに暗号化された文字列が出力されます。

```bash theme={null}
ENCRYPTEDA:5TWyjE0U4GBEVNkd51SqbMXaBwVGqj5uyMfTHt48y/F5l3sDPZynNnPMb/ppXzuFTzFPywA1/SSKUgLy9nAuvA7RAdZj7WsKI1xAgDMmEFNQ68/lHjFYZpS10sIaoUloyZVDkj4uLHTZ0SaMD5PPUA==
```

[前述の方法](#データベース接続の設定)でアプリケーションデータベースを設定する際、`cdata.app.db` の平文の値の代わりに、この暗号化された文字列を使用できます。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.