반응형
(Ubuntu 20.04 LTS 사용되었습니다.)
.net 버전별 Ubuntu 지원 - 링크
.Net Core로 개발된 결과물을 Linux에서 실행하기 위해서는
-
Linux에 .Net Core SDK나 Runtime이 설치되어 있어야 하고,
-
사용자 요청을 받아줄 Proxy 서버 구성을 해야 합니다.
-
Kestrel이 포함된 ASP.NET build 후 .dll 파일을 Linux web root에 배포
-
.dll 파일을 서비스로 등록 후 서비스 실행
.NET Runtime 설치 방법
Ubuntu에 .NET SDK또는 .NET 런타임 설치 - Azure Docs
-
Ubuntu 20.04 LTS 설치 방법 - Azure Docs
아래 명령어를 차례대로 실행하기만 하면 됩니다.
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 프록시 구성
Apache에서 Nginx 프록시 설정방법 - The Building Coder
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 빌드
참고
-
dotnet publish options - Azure Docs
솔루션 파일(.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 프로젝트 서비스로 실행
참조
-
[Ubuntu] Systemd Service 등록 - SILNEX BLOG
.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 |