Windows 版


Windows 版


アプリケーションのWindows バージョンにはスタンドアロンの組み込みWeb サーバーが同梱されていますが、サーバーをIIS にホストすることもできます。このセクションでは、Windows でアプリケーションをホストするさまざまなオプションについて説明します。

IIS を触った経験がない場合は、組み込みサーバーを使うことを推奨します。組み込みサーバーはインストール時に自動的に配布され、ログの設定、アプリケーションをサービスとして実行、SSL の有効化などのサーバーレベルの管理タスクのシンプルなインターフェースを提供します。

組み込みサーバーでのホスティング

このセクションでは、スタンドアロンの組み込みWeb サーバーの設定方法について示します。これには、TLS/SSL 接続のホスト の方法およびCloud Gateway の設定、リバースSSH トンネルについてを含みます。

スタンドアロンサーバーにホストされている場合、アプリケーションはWindows サービスとして実行されます。

  1. タスクバーのAPI Server のアイコンを右クリックし、[サーバーオプション]をクリックします。
  2. [Windows サービスとして実行]を選択します。
  3. 変更を保存します。

TLS/SSL 接続のホスト(組み込みサーバー)

プレーンテキストでのサービスのほかに、TLS を要求することができます。このセクションでは、アプリケーションのWindows 版に同梱されているスタンドアロンサーバーで、TLS/SSL 接続をホストする方法を説明します。Java 版 にTLS/SSL を配布する方法は、アプリケーションをホストするJava Servlet のドキュメントを参照してください。

  1. Windows システムトレイのアプリケーションのアイコンを右クリックして、[サーバーオプション]をクリックします。
  2. [Web サーバー]タブで、[TLS を有効化]を選択し、TLS を扱うポートを選択します。
  3. [TLS サーバー証明書]ボックスの隣のボタンをクリックし、秘密鍵証明書を選択します。秘密鍵付き証明書は、ローカルコンピュータの証明書ストアにインストールする必要があります。もし、条件を満たす証明書がない場合には、[新しい証明書の作成]をクリックして、シンプルな証明書を作成してください。

変更を保存すると、サーバーが再起動し、TLS リクエストの処理が開始されます。

秘密証明書の管理

証明書選択ダイアログで使用可能な証明書を管理したい場合には、ローカルコンピュータの秘密証明書ストアにあります。Windows ストアに証明書を追加するには:

  1. [実行]メニューから、[mmc]を入力してMicrosoft 管理コンソールを立ち上げます。
  2. [ファイル]->[スナップインの追加と削除]をクリックします。
  3. [利用可能なスナップイン]テーブルから[証明書]を選択し[追加]をクリックします。

  4. [コンピューターアカウント]->[ローカルコンピューター]を選択します。
  5. スナップインを追加したら、[証明書(ローカルコンピューター)]->[個人]->[証明書]をクリックして、利用可能な証明書を表示します。秘密キーが利用可能な証明書には、証明書アイコンの上に鍵のアイコンが表示されます。
  6. ローカルディスクからストアに証明書をインポートするには、[アクション]->[すべてのタスク]->[インポート]をクリックします。インポートウィザードを完了すると、証明書はアプリケーションの証明書選択ダイアログにて利用可能となります。

Cloud Gateway

API Server のCloud Gateway 機能は、ファイアウォールを変更することなしにアプリケーションをインターネットに公開する簡単な方法を提供します。公開アクセス可能なSSH サーバーが利用できる場合に限り、SSH リバーストンネルを利用して、公開アクセス可能なSSH サーバー上のポート経由でAPI Server にアクセスできます。

この機能を活用するには、システムトレイのアプリケーションアイコンを右クリックし、[サーバーオプション]をクリックします。下図で示されるように[Cloud Gateway]タブに進み、次の情報を入力します。

  • Host はAPI Server の接続先のSSH サーバーを示します。
  • Port は、SSH ホストが接続をリッスンしているポートを示します。ほとんどのSSH サーバーは、デフォルト値のポート22でリッスンします。
  • Authentication Type は、使用する認証のタイプを示します。PasswordPublic KeyMulti-Factor、および_Keyboard Interactive_ がサポートされています。
  • User は、API Server がSSH サーバーへの認証に使用するユーザー名を示します。
  • Password は、使用されているAuthentication Type で必要な場合、認証に使用するパスワードを示します。
  • Certificate は、Public Key Authentication で、API Server がSSH サーバーへの認証に使用する証明書を示します。
  • Server Fingerprint は、SSH サーバーのSSH ホストキーフィンガープリントを示します。この値はread-only の情報です。
  • Forwarding Port は、公開されているSSH サーバーが、API Server に転送する接続をリッスンするポートを示します。

さらに、SSH サーバーの設定を変更して、ポート開放を許容する必要がある場合があります。デフォルトのSSH サーバー設定では、非ローカルホストアドレスへのポート開放を常に有効にするとは限りません。例えば、OpenSSH サーバーに接続する場合は、SSH サーバーコンフィギュレーションファイルで、GatewayPorts プロパティをyes またはclientspecified に設定する必要があります。

この情報を入力したら、[接続のテスト]をクリックしてSSH サーバーへの接続をテストし、提供された情報の正当性を確認します。成功した場合は、アプリケーションを再起動すると、SSH ホストのForwarding Port 経由でAPI Server にアクセスできるようになります。例えば、SSH サーバー_my.ssh.host_ が指定されていて、Forwarding Port で8401 を使用している場合、ブラウザにentering https://my.ssh.host:8401 と入力すると、通信はAPI Server が実行されているローカルマシンに転送されます。これは、ローカルマシンに直接アクセスすることはできないが公開アクセスが許可されているためです。

IIS での設定

これらの説明では、IIS およびWindows の複数のバージョンをカバーします。もし、この手引きを参照中に問題があった場合には、最後のセクションのトラブルシューティング を参照してください。もし、お客様のバージョンが本チュートリアルでカバーされていない場合には、弊社のサポートフォーム よりご連絡ください。

IIS 8、8.5、および10

新しいWeb アプリケーションの作成

Note: この例では、デフォルトWeb サイトを使用します。

Web サイトでアプリケーションをホストするには:

  1. IIS マネージャーで、[接続]パネルのサーバーのノードを展開します。
  2. サイトノードを展開し、ウェブサイトを右クリックして、[アプリケーションの追加]をクリックします。
  3. [アプリケーションの追加]ダイアログが表示されたら、以下の情報を入力します。
エイリアス アプリケーション名、例えば”cdata”。
アプリケーションプール アプリケーションに関連するアプリケーションプール。このチュートリアルでは、”DefaultAppPool” を使用します。
物理パス アプリケーションがインストールされているディレクトリのwww ディレクトリパス。このディレクトリのデフォルトの位置は、C:\Program Files\CData\CData API Server\www です。
権限の設定

アプリケーションは、インストールディレクトリに位置する、www フォルダおよびデータフォルダにアクセスできる必要があります。アプリケーションに関連するアプリケーションプールへのアクセスの許容:

  1. フォルダを右クリックして、[プロパティ]をクリックします。[セキュリティ]タブで[編集]->[追加]をクリックします。
  2. [選択するオブジェクト名を入力してください]ボックスに、以下を入力します:IIS AppPool\your-application-pool。例:IIS AppPool\DefaultAppPool
  3. アプリケーションプールアイデンティティが、次の権限を持っていることを確認します:

    • 読み出し
    • 書き込み
    • 変更
    • 読み出し&実行
    • フォルダコンテンツをリスト

Note:アプリケーションプールへのアクセスの許容にはコマンドラインを使うこともできます。次に例を示します。

icacls "www" /grant "IIS APPPOOL\\DefaultAppPool":(OI)(M)

アプリケーションプロセスのアンローディングの防止

IIS は、アイドルタイムアウト超過、アプリケーションプールのリソース使用が高すぎる場合など、Web アプリケーションをいくつかの理由でシャットダウンすることがあります。これにより、アプリケーションでバックグラウンドタスクを止めてしまうことがあります。次の設定を変更することで、アプリケーションを常時実行しておくことができます:

  1. オプションのApplication Initialization 機能を有効化します。

    Windows Server 2012 R2 および、Windows Server 2016では、[サーバーマネージャー]を開き、[ダッシュボード]->[クイックスタート]->[役割と機能の追加]をクリックします。[役割と機能の追加]ウィザードが開きます。[サーバーの役割]のステップで、[Web サーバー(IIS)]->[アプリケーション開発]->[Application Initialization]をクリックします。

    Windows 8 およびWindows 10 では、コントロールパネル **を開いて、 **[プログラムと機能]->[Windows の機能の有効化または無効化]をクリックします。[インターネットインフォメーションサービス]->[World Wide Web サービス]->[アプリケーション開発機能]->[Application Initialization]をクリックします。

  2. IIS マネージャーで、[接続]パネルの[アプリケーションプール]をクリックします。
  3. ワークスペースで、アプリケーションプールを右クリックし、[詳細設定]をクリックします。
  4. 全般設定の、[開始モード]AlwaysRunning に設定します。

  5. プロセスモデル設定では、[アイドルタイムアウト]0 に設定します。

    IIS 8 を使用している場合、全般設定の[自動的に開始]True に設定されていることを確認してください。

  6. CPU セクションでは、LimitInterval プロパティを0 に設定します。
  7. Recycling セクションでは、Regular Time Interval プロパティを0 に設定します。
  8. Recycling セクションのGenerate Recycle Event Log Entry ノードでは、Regular Time Interval プロパティをFalse に設定します。
ASP.NET アプリケーションプールのリサイクル設定

IIS は定期的にリサイクルし、ASP.NET アプリケーションプールのプロセスをクリーンアップします。リサイクルをオフピーク時にスケジュールすることもできます。[Recycling]セクションに移動してSpecific TimeTrue に設定し、リサイクルする時間をhh:mm:ss 形式で入力します。

アプリケーションのプリロード

プリロード機能を使用して、ユーザーが接続する前にアプリケーションを実行させることができます。[接続]ペインで、アプリケーションに関連しているWeb アプリケーションを右クリックし、[アプリケーションの管理]->[詳細設定]をクリックします。[Prelad Enabled]メニューで、True を選択します。

PreloadEnabled がTrue に設定されている場合、IIS はユーザーリクエストをWeb サイトのデフォルトページ、または仮想ディレクトリにシミュレートして、アプリケーションを初期化します。

設定の確認

アプリケーションを開くには、http://localhost/cdata から入れます。エラーが出ている場合には、トラブルシューティング を参照してください。

IIS 7 および7.5

新しいWeb アプリケーションの作成

Web サイトでアプリケーションをホストするには:

Note: この例では、デフォルトWeb サイトを使用します。

  1. IIS マネージャーで、[接続]パネルのサーバーのノードを展開します。
  2. サイトノードを展開し、ウェブサイトを右クリックして、[アプリケーションの追加]をクリックします。
  3. [アプリケーションの追加]ダイアログが表示されたら、以下の情報を入力します。
エイリアス アプリケーション名、例えば”cdata”。
アプリケーションプール アプリケーションに関連するアプリケーションプール。このチュートリアルでは、”DefaultAppPool” を使用します。
物理パス アプリケーションがインストールされているディレクトリのwww ディレクトリパス。このディレクトリのデフォルトの位置は、C:\Program Files\CData\CData API Server\www です。
権限の設定

アプリケーションは、インストールディレクトリに位置する、www フォルダおよびデータフォルダにアクセスできる必要があります。アプリケーションに関連するアプリケーションプールへのアクセスの許容:

  1. フォルダを右クリックして、[プロパティ]をクリックします。[セキュリティ]タブで[編集]->[追加]をクリックします。
  2. [選択するオブジェクト名を入力してください]ボックスに、以下を入力します:IIS AppPool\your-application-pool。例:IIS AppPool\DefaultAppPool
  3. アプリケーションプールアイデンティティが、次の権限を持っていることを確認します:

    • 変更
    • 読み出し&実行
    • フォルダコンテンツをリスト
    • 読み出し
    • 書き込み

Note:アプリケーションプールへのアクセスの許容にはコマンドラインを使うこともできます。次に例を示します。

icacls "www" /grant "IIS APPPOOL\\DefaultAppPool":(OI)(M)

アプリケーションプロセスのアンローディングの防止

IIS は、アイドルタイムアウト超過、アプリケーションプールのリソース使用が高すぎる場合など、Web アプリケーションをいくつかの理由でシャットダウンすることがあります。これにより、バックグラウンドタスクを止めてしまうことがあります。

このバージョンのIIS はWeb アプリケーションを常時実行しておく設定をサポートしていません。アプリケーションプールが常時実行していて、バックグラウンドタスクが発生できる状態を保つことを保証するためには、繰り返しアプリケーションにHTTP リクエストを発行するスクリプトを設定しなければなりません。

IIS 7.5 では、次の設定を変更することで、アプリケーションを常時実行しておくことができます:

  1. IIS 7.5 のアプリケーション Initialization Extension をインストール。http://www.iis.net/download/ApplicationInitialization からダウンロードすることができます。
  2. IIS マネージャーで、[接続]パネルの[アプリケーションプール]をクリックします。
  3. ワークスペースで、[アプリケーションプール]を右クリックし、[詳細設定]をクリックします。
  4. 全般設定では、[自動的に開始]True に設定されていることを確認してください。
  5. プロセスモデル設定では、[アイドルタイムアウト]0 に設定します。
  6. CPU セクションでは、LimitInterval プロパティを0 に設定します。
  7. Recycling セクションでは、Regular Time Interval プロパティを0 に設定します。
  8. Recycling セクションのGenerate Recycle Event Log Entry ノードでは、Regular Time Interval プロパティをFalse に設定します。
  9. C:\Windows\System32\inetsrv\config\ に位置するApplicationHost.config ファイルのアプリケーションプールエントリーの設定を変更します。適切な エントリに、_startMode="AlwaysRunning"_ と_autoStart="True"_ を追加します。次に例を示します。
<applicationPools>
<add name="DefaultAppPool" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" autoStart="true"/>
</applicationPools>
ASP.NET アプリケーションプールのリサイクル設定

IIS は定期的にリサイクルし、ASP.NET アプリケーションプールのプロセスをクリーンアップします。リサイクルをオフピーク時にスケジュールすることもできます。[Recycling]セクションに移動してSpecific TimeTrue に設定し、リサイクルする時間をhh:mm:ss 形式で入力します。

アプリケーションのプリロード

プリロード機能を使用して、ユーザーが接続する前にアプリケーションを実行させることができます。ApplicationHost.config に、アプリケーションと関連するエレメントのpreloadEnabled 属性を追加します。次の例に示すように、アプリケーションノードはサイトノードの子エレメントです。

<sites>
  <site name="Default Web Site" id="1">
  <application path="/cdata" applicationPool="DefaultAppPool"  preloadEnabled="true">
  ...

PreloadEnabledTrue に設定されている場合、IIS はユーザーリクエストをWeb サイトのデフォルトページ、または仮想ディレクトリにシミュレートして、アプリケーションを初期化します。

設定の確認

アプリケーションを開くには、http://localhost/cdata から入れます。エラーが出ている場合には、トラブルシューティング を参照してください。

TLS/SSL 接続のホスト(IIS)

TLS/TSS は、取引先とあなたのビジネスクリティカル・ミッションクリティカルな通信の機密を保持するために使われます。次の手順では、すでにお客様のサーバーにTLS/SSL を有効化させるための証明書を持っていることが前提となっています。

  1. IIS マネージャーで、[接続]ペインでWeb サイトのノードをクリックします。
  2. [アクション] ペインで[バインディング] をクリックします。
  3. [Add]をクリックし、[HTTPS]を選択します。
  4. サーバー証明書を選択します。
  5. TLS/SSL を要求したい場合には、Web サイトのノードが選択されている状態で、ワークスペースで[SSL 設定アイコン]をダブルクリックします。[SSL が必要]を選択して、[アクション]ペインで[適用]をクリックします。

ユーザー管理

API Server 管理者およびAPI ユーザーは、ASP.NET で設定できます。

アプリケーション管理者の管理

アプリケーション管理者の設定として、標準のASP.NET コンフィギュレーション設定を使うことができます。フォーム認証はデフォルトでは有効になっていますが、Windows 認証で管理者がアプリケーションにアクセスできるよう設定できます。

API ユーザーの管理

アプリケーション管理コンソールで[プロファイル]->[セキュリティ]をクリックすることで、API ユーザーを管理することができます。認証トークンはAPI にアクセスするユーザーを認証するために使われます。認証トークンは、ユニークユーザーを特定し、ユーザーの権限レベルを表します。

アプリケーションのリソースへのアクセス管理にASP.NET を使いたい場合には、アプリケーションからコントロールを外します。これには、次の例に示すように、www サブフォルダ内のapi.rsc ファイルのapi:restrict エレメントを削除してください。

<api:restrict user="admin"/>
Windows 認証

Windows 認証を有効にすると、管理者がNTML 認証を使ってAPI Server 管理コンソールにアクセスできるようになります。また、API ユーザーもNTLM 認証を使ってAPI にアクセスできるようになります。組み込みアプリケーションを使用している場合は、Server Options のWeb Server で認証タイプを設定できます。IIS の場合は、[認証]メニューでWindows 認証を有効にできます。

トラブルシューティング

次のセクションは、いくつかの共通して発生するエラーの解決方法を説明します。

ログアウトして、しばらく経つとアプリケーションが応答しなくなる。

IIS が、お客様のアプリケーションのタイムアウト後にアンロードしている可能性があります。デフォルトで、IIS は20分間動きがない場合にアプリケーションにアサインされたワーカープロセスを終了します。IIS のバージョンごとの手順中の”アプリケーションプロセスのアンローディングの防止”セクションで、この機能を回避する方法を説明しています。

IIS 7.5、8、8.5 では、IIS マネージャーで次の設定を変更することで、アプリケーションを常時実行しておくことができます。

7.5 より前のバージョンのIIS はWeb アプリケーションを常時実行しておく設定をサポートしていません。アプリケーションプールが常時実行していて、バックグラウンドタスクが発生できる状態を保つことを保証するためには、繰り返しアプリケーションにHTTP リクエストを発行するスクリプトを設定しなければなりません。

http://localhost/application にアクセスすると、”Page Cannot Be Displayed” エラー(HTTP 404 エラー)が返される。

ASP.NET が有効化されていない場合に、本事象が起こります。ASP.NET が有効になっているかどうかを確認するには、http://localhost/cdata/favicon.ico にアクセスします。このページが正常にロードされた場合は、ASP.NET は有効化されていません。

IIS 7 以上で実行している場合には、コントロールパネル->[プログラム(もしくはプログラムと機能)]->[Windows 機能の有効化または無効化]->[インターネットインフォメーションサービス]->[World Wide Web サービス]->[アプリケーション開発機能]を選択します。ASP.NET の隣のチェックボックスにチェックを入れます。

Windows Server 2003 を使っている場合には、IIS マネージャーを開き、ローカルコンピューターノードを展開して、[Web Service Extentions]->[ASP.NET]->[Allow]をクリックします。さらに、次の手順を行う必要があります。

IIS 6 かそれ以前で実行している場合、Windows のコマンドプロンプトを開き、C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 のような.NET Framework version installation に移り、aspnet_regiis -i</b> コマンドを発行します。64-bit プロセッサーを使用している場合には、FrameworkFramework64 に変えてください。アウトプットは以下のようになります:

C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727>aspnet\_regiis -i
  Start installing ASP.NET (2.0.50727).
  ...
  Finished installing ASP.NET (2.0.50727).

iisreset コマンドを発行し、IIS を再起動します。アウトプットは以下のようになります:

  C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727>iisreset

  Attempting stop...
  Internet services successfully stopped
  Attempting start...
  Internet services successfully restarted

親レベルでセクションがロックされている。ロックは、デフォルト(overrideModeDefault=”Deny”)、もしくはoverrideMode=”Deny”、やレガシーでallowOverride=”false” ロケーションタグで明示的に設定されているかが原因です。

このエラーはASP.NET がインストールされていない場合に発生します。

  • IIS 8 および8.5

まずは、アプリケーションプールで使われているASP.NET CLR のバージョンを確認します。ASP.NET CLR と同じバージョンのASP.NET をインストールしている必要があります。例えば、ASP.NET4.5 はCLR version 4.0 を使用します。CLR バージョンはIIS マネージャーで[接続]パネルのアプリケーションプールをクリックすることで確かめることができます。アプリケーションプールのリストに.NET CLR バージョンが表示されます。

Windows Server 2012では、[サーバーマネージャー]を開き、[ダッシュボード]->[クイックスタート]->[役割と機能の追加]をクリックします。[役割と機能の追加]ウィザードが開きます。[Web サーバー(IIS)]->[Web サーバー]->[アプリケーション開発]をクリックして、ASP.NET の適切なバージョンを選択します。

Windows 8 では、コントロールパネルを開いて、[プログラムと機能]->[Windows の機能の有効化または無効化]をクリックします。[インターネットインフォメーションサービス]->[World Wide Web サービス]->[アプリケーション開発機能]をクリックして、ASP.NET の適切なバージョンを選択します。

  • IIS 7 および7.5

Windows 7 では、コントロールパネルを開いて、[プログラムと機能]->[Windows の機能の有効化または無効化]をクリックします。[インターネットインフォメーションサービス]->[World Wide Web サービス]->[アプリケーション開発機能]->[ASP.NET]をクリックします。

Windows Server 2008では、[サーバーマネージャー]を開き、[Add Role Serveices]をクリックします。[Web Server]->[Application Development]->[ASP.NET]を選択します。