본문 바로가기
IT/.Net Core

ASP.Net Core : Launch to Ubuntu (1/2)

by rapker 2023. 4. 18.
반응형

 

(Ubuntu 20.04 LTS 사용되었습니다.)
 
.net 버전별 Ubuntu 지원 - 링크
 
.Net Core로 개발된 결과물을 Linux에서 실행하기 위해서는
 
  1. Linux에 .Net Core SDK나 Runtime이 설치되어 있어야 하고,
  2. 사용자 요청을 받아줄 Proxy 서버 구성을 해야 합니다.
  3. Kestrel이 포함된 ASP.NET build 후 .dll 파일을 Linux web root에 배포
  4. .dll 파일을 서비스로 등록 후 서비스 실행
 
 
.NET Runtime 설치 방법
 
 
아래 명령어를 차례대로 실행하기만 하면 됩니다.
sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get update
sudo apt-get install -y aspnetcore-runtime-5.0
프로젝트에 따라 필요로 하는 runtime버전을 추가로 설치해야 할 수도 있습니다.
 
 
aspnetcore-runtime 설치 시 아래와 같은 오류가 발생하는 경우
 
APT 문제 해결 문서에서는 아래 두 가지 해결 방법을 제시하고 있습니다.
 
방법 1
sudo dpkg --purge packages-microsoft-prod && sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
 
방법 2
sudo apt-get install -y gpg
wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y aspnetcore-runtime-5.0
 
저는 두 번째 방법으로 아래와 같이 설치가 마무리 되었습니다.
 
 

 

반응형

 

 
Nginx 설치
 
아래 명령어를 순서대로 입력하여 nginx를 설치하고 실행 합니다.
sudo apt-get update
sudo apt-get -y install nginx
service nginx start
 
nginx를 실행할 때 아래와 같이 패스워드를 묻는 구간에서 패스워드를 입력해주면 됩니다.
 
 
nginx가 제대로 설치 되었다면 아래와 같은 페이지를 확인할 수 있습니다.
Ubuntu의 방화벽이나 보안 설정에 Nginx의 기본포트인 80포트가 허용 되어 있어야 합니다.
 
 
Nginx 프록시 구성
 
 
Nginx 주요 위치 및 구성 파일
 
- 주요 구성 파일의 위치: Nginx는 /etc/nginx/에 위치
- 로그 파일의 위치: /var/log/nginx/에 위치
- 기본 웹사이트의 위치: /usr/share/nginx/html/에 위치
- 사용자 웹 Root의 위치: /var/www/ 하위에 위치
   (사용자 웹 Root는 사이트별 구성 파일에서 설정에 따라 달라질 수 있음)
 
Nginx를 프록시 서버로 구동시키기 위해 nginx.conf 파일을 수정이 필요합니다.
(nginx.conf 에 sites-enabled/default 파일이 includ 되어있어 default 파일을 수정합니다.)
 
default 파일 변경을 위해 /etc/nginx/sites-enabled/ 경로로 이동합니다.
cd /etc/nginx/sites-enabled/
 
edit로 default 파일을 열어 아래 이미지와 같이 수정합니다.
sudo nano default
 
proxy 구성
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwared-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:5000/;
proxy_redirect off;
 
default 파일 내용 수정 후 서비스 재 시작
sudo systemctl restart nginx
 
 
 
asp.net core 프로젝트 실행
 
asp.net core 빌드
 
참고
 
솔루션 파일(.sln)이 있는 곳으로 이동 후 프로젝트 빌드
dotnet publish --configuration Release
 
빌드된 파일들 확인
 
 
빌드된 파일 업로드
publish 경로에 빌드된 파일들을 Linux 머신에 업로드 합니다.
  • 업로드 될 경로는 그다지 중요하지 않습니다 (특정 경로에 있어야 하지 않고 업로드하고 싶은 위치 아무곳이나 가능)
  • 옵션으로 실행에 불필요한 파일들은 업로드 하지 않아도 됩니다.
 
 
업로드한 .dll 파일 linux에서 실행
 
빌드된 .dll파일이 있는 경로로 이동
cd /var/www/publish
 
.dll 실행
dotnet ./AspnetCoreStudy.dll
 
 
 
 
 
정상적으로 실행 중이고
(이제 linux ip로 접속을 하면 nginx가 80으로 받아주고 localhost:5000으로 넘겨줄 거니까)
브라우저에서 linux ip로 접속을 시도해 봅니다.
 
 
asp.net core 프로젝트 서비스로 실행
 
참조
 
.dll 파일을 서비스로 실행 시키기 위해 서비스 파일을 생성합니다.
cd /etc/systemd/system
sudo nano aspnetcorestudy.service
 
 
아래 내용 참조하여 (알맞은 경로로 변경) 내용을 작성하고 파일을 생성합니다.
[Unit]
Description=My first .NET Core application on Ubuntu
[Service]
WorkingDirectory=/var/www/publish
ExecStart=dotnet /var/www/publish/AspnetCoreStudy.dll
Restart=always
RestartSec=10 # Restart service after 10 seconds if dotnet service crashes
SyslogIdentifier=offershare-web-app
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
 
 
생성된 파일 확인
 
 
.dll 파일을 서비스로 등록 후 실행 합니다.
sudo systemctl enable aspnetcorestudy.service
sudo systemctl start aspnetcorestudy.service
sudo systemctl status aspnetcorestudy.service
 
 
위 는 서비스가 정상적으로 실행 중인 상태 이고 이제 브라우저 에서 linux ip 80 포트로 접속을 시도해 봅니다.
 
 
언제봐도 행복한 정상적인 모습으로 출력 됩니다.
반응형
LIST

'IT > .Net Core' 카테고리의 다른 글

윈도우 응용프로그램 서비스 등록  (0) 2023.04.19
ASP.Net Core : Launch to Ubuntu (2/2)  (0) 2023.04.18