Server/linux

[linux] asp.net core 리눅스 호스팅 by centos, 아파치(apache)

코딩for 2022. 8. 31. 14:18
반응형

asp.net core 의 리눅스 서버호스팅하기

 

1. OS 및 아파치 서버 준비

 

[linux] CentOS7 아파치(apache) 웹서버 설치하기

1. 패키지 목록 업데이트 sudo yum update 2. 아파치 설치 sudo yum -y install httpd 2. 아파치 서비스 등록 및 실행 sudo systemctl enable httpd sudo systemctl restart httpd 3. 방화벽 포트 설정(열기) sud..

askforyou.tistory.com

 

2. asp.net core 설치

 

  - Microsoft 키를 등록

$ sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

- 닷넷 sdk 설치 및 확인

sudo yum install dotnet-sdk-3.1

 

3. 프로젝트 배포 파일을 리눅스 서버로 복사

 -  프로젝트 파일 publish(게시) 하여 배포파일 생성  (게시방법은 폴더 프로필, 배포모드 자체 포함 으로 진행)

 

 - 해당 경로에 배포된 파일 리눅스 서버로 이동

    파일질라를 이용해서 /home/opc/  하위디렉토리로 배포파일 복사

    cp 명령어를 통해 "/var/www/프로젝트명" 으로 복사

 

-  Startup.cs 에 아래 내용 추가

// using Microsoft.AspNetCore.HttpOverrides;

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

  

4.   아파치 구성 및 확인

 -  conf 구성 파일 생성 

 /etc/httpd/conf.d/프로젝트명.conf   로 파일을 생성

<VirtualHost *:*>
    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}e
</VirtualHost>

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
    ServerName www.example.com
    ServerAlias *.example.com
    ErrorLog /var/www/app-error.log
    CustomLog /var/www/app-access.log common
</VirtualHost>

*아파치(80 포트) 요청이 들어오면 127.0.0.1:5000 으 전달

 

-  아파치 설정파일 확인 및 아파치 재시작

 

반응형

여기까지 이상이 없으면 정상적으로 호스팅 하는것을 볼 수 있다.

OS 서버 IP 로 접속 확인

 

 

 

5. Kestrel 서비스 구성하기

 

- 서비스 파일 생성

 sudo nano /etc/systemd/system/kestrel-프로젝트명.service
[Unit]
Description=asp.net core Service

[Service]
WorkingDirectory=/var/www/프로젝트
ExecStart=/usr/bin/dotnet /var/www/프로젝트/프로젝트.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-campview
User=apache
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

- 서비스 시작 및 상태

sudo systemctl enable 서비스명

sudo systemctl start  서비스명

sudo systemctl status  서비스명


 

[TroubleShooting]

더보기

* 아래와 같은 오류가 발생시 

A fatal error was encountered. The library 'libhostpolicy.so' required to execute the application was not found in '/app/'.

Failed to run as a self-contained app.

publish 폴더에   "프로젝트명.runtimeconfig.json"  

프로젝트명.runtimeconfig.json   파일에서  "includedFrameworks"  부분  "framework"  로 변경  (파일이 없으면 만들어 넣어준다.)

 

 

 

 

 

 

 

 

오류 유형: 549. The library 'libhostpolicy.so' required to execute the application was not found in '...'

 

www.sysnet.pe.kr

 

 

* https 로 리다이렉트 되는 문제로 접속이 불가

  1. Startup.cs 에서  app.UseHttpsRedirection()   주석처리

  2. launchSettings.json    의  applicationUrl  에서 https://localhost:5001;   를 삭제

 

 

* 서비스 실행시 오류

$ sudo systemctl start httpd.service
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.

아래 명령어 실행하여 해결

$ getenforce
$ setenforce 0  
$ systemctl start  httpd.service

 https://www.edureka.co/community/67382/httpd-service-failed-because-control-process-exited-error

 

Job for httpd service failed because the control process exited with error code

Hi Guys, I installed httpd web server in my system. But when I tried to start its service, it shows ... xe" for details. How can I solve this error?

www.edureka.co

 

반응형