開発者の皆さん、こんにちは!
VSCodeのObjectScriptエクステンションを利用してInterSystems製品に接続するときに「プライベートWebサーバ (*1)」ではなく、「Webサーバ(IISやApache)」を利用される場合、接続時に使用するREST用パスが通るようにWebサーバに仮想パスを追加する必要があります。
(*1) プライベートWebサーバとは、バージョン2023.1以前のInterSystems製品をインストールすると自動でインストールされる簡易的なApacheで、52773番ポートで管理ポータルやWebアクセスのテストにご利用いただけるWebサーバです。(本番運用環境には適さない簡易的なWebサーバです)
対象バージョン:2023.1以下のInterSystems製品
追加が必要なパス: /api
以下、IISとApacheそれぞれの設定方法をご紹介します。
IISの場合
IISを有効化した後で、InterSystems製品のインストーラーのメニューから「ウェブサーバ」(下図左)または「カスタム」から「Webサーバゲートウェイ→IIS用CSP」(下図右)で設定を行った場合、
IISにWebゲートウェイがインストールされ、デフォルトで以下のアプリケーションを追加します。
この状態で、以下の接続情報を作成しVSCodeからInterSystems製品にアクセスしようとしてもアクセスできません。
VSCodeからRESTでアクセスする際に必要なパスがIISに定義されていないため、VSCodeからInterSystems製品にアクセスできません。
使用しているRESTのパスは、 /api から始まるものでIISにこのパスをアプリケーションとして追加すれば、VSCodeからアクセスできるようになります。
以下、追加手順です。
1. Default Web Site を右クリックし、「アプリケーションの追加」を選択します。
2. エイリアスに api、物理パスに任意のディレクトリを指定します。(REST用のパスのためどのディレクトリでも設定できます。)
3. 作成したアプリケーション(api)の「ハンドラーマッピング」を選択します。
4. 「モジュールマップの追加」を選択し、要求パスに * を、モジュールに CSPms、名前に任意名を設定します。また、「要求の制限」ボタンをクリックし、「要求のマップ先が次の場合のみハンドラーを呼び出す」のチェックを外しOKボタンをクリックします。
↓できあがり↓
IISの再起動なしにVSCodeからアクセスできます。
ぜひご確認ください。
Apacheの場合
以下の例では、Ubuntu22.04を利用した例でご紹介します。
Windowsと同様にインストールキットを利用して、またはWebゲートウェイ用インストールキットを利用してApacheにWebゲートウェイをインストールします。
インストール後のApache2の apache2.conf に追加された設定は以下の通りです。
ubuntu@ip-172-31-46-153:/etc/apache2$ cat apache2.conf
《省略》
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
#### BEGIN-ApacheCSP-SECTION ####
LoadModule csp_module_sa "/opt/webgateway/bin/CSPa24.so"
CSPModulePath "/opt/webgateway/bin/"
CSPConfigPath "/opt/webgateway/bin/"
Alias /csp/ "/usr/iris/csp/"
<Directory "/usr/iris/csp">
CSPFileTypes csp cls zen cxw
AllowOverride None
Options MultiViews FollowSymLinks ExecCGI
Require all granted
<FilesMatch "\.(log|ini|pid|exe)$">
Require all denied
</FilesMatch>
</Directory>
<Directory "/opt/webgateway/bin/">
AllowOverride None
Options None
Require all granted
<FilesMatch "\.(log|ini|pid|exe)$">
Require all denied
</FilesMatch>
</Directory>
#### END-ApacheCSP-SECTION ####
#### BEGIN-ApacheCSP-SECTION-IRIS ####
Alias /iris/csp/ "/usr/iris/csp/"
#### END-ApacheCSP-SECTION-IRIS ####
ubuntu@ip-172-31-46-153:/etc/apache2$
Shell SessionShell Session
上記設定を参照すると、VSCodeからRESTでアクセスする際に必要なパス(/api)が定義されていないため、VSCodeからInterSystems製品にアクセスできません。
/api 用の記述をWebゲートウェイ用追記の最終行あたりに追記し、保存します。
<Location /api>
CSP On
</Location>
ObjectScriptObjectScript
この後、Apacheを再起動します。
sudo systemctl restart apache2
ObjectScriptObjectScript
以上の設定でVSCodeからアクセスできるようになります。
補足:Open ExchangeにあるWebTerminalを使用する場合の設定
WebTerminalを使用するとブラウザでターミナルを開くことができます。
WebTerminalをインストールするには、公開されているソースコード一式のXMLを任意のネームスペースにインポートするだけです。
インポート後、REST用パス /terminal がInterSystems製品上に作成されますので、後はWebサーバ側(IISやApache)に 以下のパスを追加するだけでアクセスできます。
- /terminal
- /terminal-vscode
- /terminalsocket
WebTerminalを起動するときは、ブラウザで http://Webサーバ/terminal/ にアクセスすると開きます。(末尾に / をお忘れなく)
IISの場合
Apacheの場合
apache2.confのWebゲートウェイ用セクションに以下追記し、Apacheを再起動します。
<Location /terminal>
CSP On
</Location>
<Location /terminal-vscode>
CSP On
</Location>
<Location /terminalsocket>
CSP On
</Location>
BashBash
是非お試しください。