必要な環境
本記事のサンプルコードは、以下の環境で動作を確認しています。
- Windows 11 Pro(22H2)
- ActiveReports for .NET 16.0J(16.2.0)
- .NET SDK(6.0.413)
- Node.js(18.17.1)
- Visual Studio 2022(17.6.5)
- Windows Subsystem for Linux 2(Ubuntu 22.04.2)
対象読者
- Webページに帳票出力機能を実装したい方
- バックエンド開発が得意な方
- クラウドサービスで帳票アプリケーションを公開したい方
Amazon EC2環境での公開
まずは、Amazon Elastic Compute Cloud(Amazon EC2)環境に帳票アプリをデプロイし、公開する手順を紹介します。
公開環境を構築する
Amazon EC2の利用に先立ち、AWSアカウントが必要です。未作成の方は「AWS クラウド無料利用枠」から作成しておいてください。Amazon EC2には、利用開始後1年間の無料利用枠があります。1カ月あたり750時間までは、特定の条件を満たした仮想マシンが無料で利用できます。AWSアカウントを取得したら、「Amazon EC2(安全でスケーラブルなクラウド上の仮想サーバー)」の[コンソールにサインイン]からコンソールにアクセスします。コンソールの「最近使ったサービス」に「EC2」が表示されていれば選択し、そうでなければ「すべてのサービス」から「EC2」を選択します。
「EC2ダッシュボード」の画面になるので(図1)、ここで[インスタンスを起動]をクリックして、「インスタンスを起動」画面でインスタンスを作成します。インスタンスとは、AWSにおける仮想サーバのことをいいます。
「名前とタグ」の[名前]にインスタンスを名前を入力します。ここでは、「ActiveReports App Server」としました。「アプリケーションおよび OS イメージ (Amazon マシンイメージ)」では「クイックスタート」から「Amazon Linux」が選択されている状態で「Amazonマシンイメージ(AMI)」をプルダウンし、「Amazon Linux 2 with .NET 6, PowerShell, Mono, and MATE Desktop Environment」を選択します。これは、.NETなどがプレインストールされたAmazon Linuxで、あとから.NET 6をインストールする手間を省くことができます(図2)。
「インスタンスタイプ」は既定の「t2.micro」のままで構いません。「キーペア(ログイン)」で、インスタンスへの接続に必要なキーペアをここで作成しておきます。作成済みであれば、それを選択しても構いません。[新しいキーペアの作成]をクリックすると[キーペアを作成]ウインドウがポップアップするので、「キーペア名」に任意の名前を(ここでは「MyKeyPair」としました)入力し、他の項目は既定値のままで[キーペアを作成]をクリックしてください(図3)。
「ネットワーク設定」では、[からのRDPトラフィックを許可]のチェックを外し、「インターネットからのHTTPSトラフィックを許可」と「インターネットからのHTTPトラフィックを許可」にチェックを入れておきます。[からのSSHトラフィックを許可する]にはチェックを入れたままで、右のプルダウンで「自分のIP」を選択しておくと、SSH接続が安全になります(図4)。
「概要」の内容を確認して[インスタンスを起動]をクリックします。「インスタンス作成中」の表示の後、「インスタンスの起動を正常に開始しました (i-0c2f8…)」などと緑色の背景で表示されれば、インスタンスの作成と起動は成功です(図5)。
キーペアは、作成と同時にファイルとしてダウンロードされています。この拡張子が.pemであるファイル(今回はMyKeyPair.pem)はSSHなどの接続で必要になります。
インスタンスへ接続してデプロイする
続いて、インスタンスに接続して帳票アプリをデプロイしましょう。図5の中央にある[インスタンスに接続]をクリックします。「インスタンスに接続」画面が開くので、[SSHクライアント]タブをクリックして切り替えます。SSHクライアントからの接続手順が記載されているので、Windowsの「ターミナル」を開いて記載のコマンドを入力し、SSH接続を開始します(以降の例はホスト名中のIPアドレスはaaa-bbb-ccc-dddなどとしているので、各自のものを適宜指定してください)。
このとき先ほど保存されたキーペアのファイルの場所を適切に指定してください。「Are you sure you want to continue connecting」には「yes」と答えます。プロンプト($)が表示されれば接続成功です。
> ssh -l ec2-user -i "MyKeyPair.pem" root@ec2-aaa-bbb-ccc-ddd.ap-northeast-1.compute.amazonaws.com
帳票アプリをデプロイします。デプロイは、ターミナルに新しいタブを開いて、以下のscpコマンドで行います。キーペアファイルの場所、公開フォルダの場所、ホスト名は各自のものを指定してください。
> scp -r -i "MyKeyPair.pem" C:\Users\nao\source\nepos\JSViewerSample\JSViewerSample\bin\Release\net6.0\publish\* ec2-user@ec2-aaa-bbb-ccc-ddd.ap-northeast-1.compute.amazonaws.com:/home/ec2-user/app
フォントをインストールします。パッケージで提供されるのはIPAフォントのみでIPAexフォントは提供されないため、フォントファイルをシステムに直接配置します。第1回の記事でダウンロードしたIPAexフォントのアーカイブファイルIPAexfont00401.zipを、scpコマンドでインスタンスに転送します。
> scp -i "MyKeyPair.pem" IPAexfont00401.zip ec2-user@ec2-aaa-bbb-ccc-ddd.ap-northeast-1.compute.amazonaws.com:/home/ec2-user
SSH接続上で、以下のようにファイルを解凍、フォント共有ディレクトリにコピーして、キャッシュを更新します。
$ unzip IPAexfont00401.zip $ sudo cp -r IPAexfont00401 /usr/share/fonts/ $ fc-cache -fv
動作確認する
帳票アプリを起動して、動作を確認しましょう。SSH接続したターミナルで、以下のコマンドを実行します。sudoコマンドを使っているのは、特権ポート(80)でアプリを公開するためです。また、公開するURLをASPNETCORE_URLS環境変数で指定しています。
$ sudo ASPNETCORE_URLS=http://*:80 dotnet JSViewerSample.dll
Webブラウザから、URL「http://ec2-aaa-bbb-ccc-ddd.ap-northeast-1.compute.amazonaws.com:80」にアクセスします。ホスト名は、SSH接続と同様に各自のものを指定してください。図6のようにブラウザに帳票が表示されれば成功です。PDFへの書き出しも試してみてください。