演習: アプリを Raspberry Pi にデプロイする

完了

ここまでで、プロトタイプ デバイスを構築し、そのデバイスを駆動するコンソール アプリを作成しました。 次に、アプリをこのデバイスにデプロイします。

重要

Raspberry Pi が、「概要」のユニットの説明に従って構成されていることを確認します。 SSH サービスは、開発用コンピューターからの安全なシェル アクセスに対して有効になっている必要があります。 I2C サービスは、コードでその I2C バスにアクセスできるようになっている必要があります。 Raspberry Pi が、WiFi またはイーサネット経由でネットワークに接続されていることを確認します。

Raspberry Pi の構成の詳細については、Raspberry Pi のドキュメントを参照してください。

デプロイのタイプ

.NET には、フレームワーク依存型自己完結型の 2 つの公開モードが用意されています。 フレームワーク依存型のデプロイでは、アプリはターゲット デバイスの .NET ランタイムのインストールに依存します。 自己完結型のデプロイでは、コンパイルされたアセンブリとのすべての .NET ランタイムの依存関係がアプリに含まれます。 どちらのアプローチにも利点があります。 このモジュールでは、自己完結型アプリとしてアプリをデプロイします。

Raspberry Pi にコピー先ディレクトリを作成する

新しいターミナル ウィンドウで、次の手順を実行します。

  1. Raspberry Pi に対して安全なシェル セッションを開きます。

    ssh pi@raspberrypi
    

    上記のコマンドでは次のことが行われます。

    • ssh は、OpenSSH を起動するコマンドです。
    • pi は、Raspberry Pi でのユーザー名です。
    • raspberrypi は、Raspberry Pi のホスト名です。 デバイスでホスト名を変更した場合は、デバイスのホスト名または IP アドレスを使用します。

    注意

    最新のオペレーティング システムには、OpenSSH がプレインストールされています。 ssh コマンドが解決しない場合は、OpenSSH をインストールします。

  2. SSH セッションで、ホーム ディレクトリに cheesecave.net という名前のディレクトリを作成します。 新しいディレクトリに切り替えます。

    mkdir cheesecave.net
    cd cheesecave.net
    

    現在の場所は、~/cheesecave.net です。

    A screenshot of an SSH session on a Raspberry Pi with the above steps.

自己完結型アプリを Raspberry Pi に発行する

開発用コンピューターの元のターミナル ウィンドウで、次の手順を実行します。

  1. アプリを自己完結型アプリとして発行します。

    dotnet publish --runtime linux-arm64 --self-contained
    

    重要

    これは、推奨される 64 ビット OS を使用していることを前提としています。 Raspberry Pi OS の 32 ビット バージョンを使用している場合、前のコマンドで --runtime linux-arm を使用して正しい OS をターゲットにします。

    上記のコマンドで、linux-arm64 ランタイムの自己完結型のデプロイに必要なファイルを含むディレクトリが作成されます。 この発行フォルダーの場所をメモしておきます。

    A screenshot of a terminal session showing the output from dotnet publish.

  2. 発行フォルダーから Raspberry Pi のデプロイ場所にファイルをコピーします。

    scp ./bin/Debug/net7.0/linux-arm64/publish/* pi@raspberrypi:~/cheesecave.net
    

    上記のコマンドでは次のことが行われます。

    • scp は、OpenSSH に付属のセキュア ファイル コピー コマンドです。
    • ./bin/Debug/net7.0/linux-arm64/publish/* で、コピーするファイルを指定します。 この場合、./bin/Debug/net7.0/linux-arm64/publish/ ディレクトリ内のすべてのファイルが含まれます。 バージョンが異なる .NET SDK を使用していたり、linux-arm をターゲットにする場合は、パスが異なるため、正しいパスを入力してください。
    • pi@raspberrypi:~/cheesecave.net はコピー先です。
      • pi@raspberrypi は、前に示したように、ユーザー名とホスト名です。
      • ~/cheesecave.net は、ファイルのコピー先となる Raspberry Pi 上の場所です。

実行アクセス許可を付与する

Raspberry Pi OS などの Linux ベースのオペレーティング システムでは、バイナリ ファイルは、ファイル システムで実行可能としてマークされるまで実行できません。

Raspberry Pi の SSH セッションで、次のコマンドを実行します。

chmod +x ./cheesecave.net

これで、cheesecave.net 実行可能ファイルを実行できるようになりました。

次のユニットでは、デバイスでコードをテストします。