라즈베리파이에서 ASP.NET Core 실행하기
2025.01.21 - [Raspberry Pi (라즈베리파이)] - 라즈베리파이에서 C# 윈폼 실행시키기
라즈베리파이에서 C# 윈폼 실행시키기
2025.01.19 - [C# 화면 구축] - C# 윈폼의 다양한 기능을 디자인적 요소로 활용하자! C# 윈폼의 다양한 기능을 디자인적 요소로 활용하자!얼마 전 저의 고등학교 2학년 과정이 끝났습니다!부산소프트
choxaeonian.tistory.com
제 포스트 중 하나인 위 포스트에서는 C# 윈폼을 Mono를 활용하여 라파이 환경에 실행시켰습니다.
그럼 제 C# 윈폼 환경인 ASP.NET Core WebApp으로 생성한 프로젝트는 라파이 환경에서 실행 가능할까요?
다양한 방법을 서치하고 직접 해 본 결과 ASP.NET 환경에서는 Mono로는 실행이 불가하였습니다.
하지만 .NET Runtime을 통해서는 가능하다는 걸 알 수 있었습니다!
더불어 오늘은 자체 포함 실행 파일 방식의 특징과 실행 방법에 대해 알아보겠습니다.
곧 제가 다른 포스트들에서 오류와 해결 방법 그리고 다른 방식의 실행 방법을 작성할 것입니다.
따라서 프로젝트 환경에 따라 선택하셔서 개발하는 것을 추천드립니다.
또한 오류가 발생하신다면 다른 포스트에 자세하게 정리하여놓을테니 확인해주세요!
먼저 자체 포함 실행 파일 방식이 유용한 환경을 정리해드리겠습니다.
자체 포함 실행 파일 방식이 적합한 환경
1) 외부 의존성을 최소화해야 하는 환경
- .NET Runtime 설치가 어려운 경우
- 배포 대상이 Runtime 설치 권한이 없거나 네트워크 연결이 제한적인 시스템
- ex) 산업용 임베디드 시스템, 폐쇄망 환경
- 일관된 실행 환경을 보장해야 할 때
- 대상 기기에 이미 설치된 Runtime의 버전이나 구성이 불확실한 경우
- Runtime 업데이트로 인한 호환성 문제가 발생할 가능성을 없애기 위해
2) 크로스 플랫폼 지원이 필요한 환경
- 타겟 플랫폼에 종속된 빌드가 필요한 경우
- 라즈베리파이(linux-arm), IoT 디바이스 등 특정 OS/아키텍처에 맞는 빌드를 제공할 때
- 동일한 애플리케이션을 다양한 플랫폼에서 실행해야 할 때
3) 간단한 배포 및 설치가 중요한 환경
- 배포 프로세스를 단순화하고 싶을 때
- 대상 시스템에 추가적인 Runtime 설치 및 설정 단계를 피하고, 파일 복사만으로 실행 가능한 방식이 필요할 때
- 리소스 제한된 환경
- 제한된 네트워크 대역폭 또는 원격 디바이스에 배포하는 경우
따라서 위와 같은 방식은 라즈베리파이 환경에 적합합니다!
- 라즈베리파이는 경량 Linux 기반 환경
- 복잡한 종속성 설치 및 관리를 줄여 라즈베리파이에서 바로 실행 가능
- IoT 및 임베디드 시스템에서 안전성 중요
- 종속성 변경으로 인한 문제를 방지하고, 정해진 환경에서 예측 가능하게 동작
- 쉽고 빠른 배포
- 라즈베리파이에 SSH로 빌드 파일 복사 후 바로 실행 가능
이 내용을 참고하셔서 개발하시는 프로젝트 환경을 먼저 확인하시고 설치하는 것을 추천합니다!
이제 자체 포함 실행 파일 방식을 사용하는 방법을 순서대로 알아보겠습니다.
1. .NET Runtime 설치
- 라파이 리눅스 환경에서 실행할 것이므로 라파이에 .NET Runtime을 설치해야 합니다.
- 아래 명령어를 사용하여 설치합니다.
wget https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh --channel 8.0
export DOTNET_ROOT=$HOME/.dotnet
export PATH=$PATH:$HOME/.dotnet
2. ASP.NET Core 애플리케이션 빌드
- 개발 환경(ASP.NET 파일을 개발한 노트북 : Windows/Linux/Mac)에서 애플리케이션을 빌드합니다.
- Release 모드로 빌드하고 자체 포함된 실행 파일 (self-contained) 옵션을 설정합니다.
dotnet publish -c Release -r linux-arm -o ./publish --self-contained
3. 라즈베리파이로 ASP.NET 파일 전송
- 빌드한 파일을 라즈베리파이로 복사합니다.
scp -r (내가 실행시킬 .exe 파일 경로) (라파이 사용자 이름)@(라즈베리파이 IP주소):(저장경로)
4. 애플리케이션 실행
- 라즈베리파이에 접속 후 실행합니다.
cd /home/pi/app (저장 파일 경로로 이동)
./앱_이름
5. 서비스로 설정 (Optional) - 자동 실행
- 시스템 서비스로 등록하면 자동 실행이 가능합니다!
sudo nano /etc/systemd/system/myapp.service
- 파일 내용은 다음과 같습니다.
[Unit]
Description=My ASP.NET Core App
After=network.target
[Service]
WorkingDirectory=/home/pi/app
ExecStart=/home/pi/app/앱_이름
Restart=always
User=pi
Environment=DOTNET_ROOT=/home/pi/.dotnet
Environment=PATH=/home/pi/.dotnet:$PATH
[Install]
WnatedBy=multi-user.target
- 저장 후 실행하는 명령어입니다.
sudo systemctl enable myapp.service
sudo systemctl start myapp.service
오늘 포스트는 여기까지입니다!
개발하는 프로젝트 환경 등을 잘 고려하셔서 개발하시는데 도움이 됐으면 좋겠습니다 ㅎㅎ
읽어주셔서 감사합니다.