연습: Raspberry Pi에 앱 배포

완료됨

프로토타입 디바이스 구성과 이를 구동하는 콘솔 앱 작성이 완료되었습니다. 이제 디바이스에 앱을 배포할 차례입니다.

Important

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비트 OS를 사용하고 있다고 가정합니다. 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 실행 파일에 실행할 수 있는 권한이 부여됩니다.

다음 단원에서는 디바이스에서 코드를 테스트합니다.