練習:將應用程式部署至 Raspberry Pi

已完成

您已建構原型裝置,並撰寫可進行驅動的主控台應用程式。 現在,是時候將您的應用程式部署至裝置了。

重要

請確定您的Raspberry Pi已如簡介單元中所述進行設定。 必須啟用 SSH 服務,才能從開發電腦進行安全殼層存取。 必須啟用 I2C 服務,讓您的程式碼能夠存取 I2C 匯流排。 請確定 Raspberry Pi 已透過 WiFi 或乙太網路連線至您的網路。

如需 Raspberry Pi 設定的詳細資訊,請參閱 Raspberry Pi 文件

部署類型

.NET 提供兩種發佈模式:架構相依自封式。 在架構相依部署中,應用程式依賴目標裝置上的 .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 位元作業系統。 如果您使用 32 位版本的 Raspberry Pi OS,請在 --runtime linux-arm 上述命令中使用,以正確的 OS 為目標。

    上述命令會建立目錄,其中包含 linux-arm64 執行階段的獨立部署所需檔案。 記下 publish 資料夾的位置。

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

  2. 將來自 publish 資料夾的檔案複製到 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 可執行檔現在具有執行的權限。

在下一個單元中,您將測試裝置上的程式碼。