우분투에서 .ASP NET core Apache 연동

I. 목표

그동안 플랫폼에 구애를 받지않는 Java 기반을 많이 활용하였는데, net core도 리눅스, 맥에서도 구동가능하여 우분투 환경에서 MSA 기반의 인증서버를 구현하는것을 목표로 한다.

II. 연구및 개발내용

1. 환경

-NET Core 우분투 설치는 인터넷에 많이 나와있으므로 생략함

-Apache는 개발서버에 설치되어 있는 것을 활용하므로 설치 과정 문서는 생략함

2. 배포

– 비쥬얼 스튜디오 게시를 통해 게시된 폴더를 알집으로 압축하여 우분투에 FTP로 업로드.

– /home/idr/Service/Identity/Identity.WebApi 폴더에 압축을 풀어 배포

– unzip Identity.WebApi.zip -d Identity.WebApi

3. 프록시 서버구성

– 사용자가 Apache를 통해 요청을 하면 .net core의 Kestrel 서버로 전달해주기 위해서는 역방향 프록시 서버를 구성해야 함.

– 정뱡향 또는 역방향프록시에 대한 기술문서는 구글검색을 참고.

– 프로그램상 Startup.cs 파일에 아래와 같이 추가해 준다.

* 테스트해보니 아래처럼 안해도 동작은 한다.

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{

app.UseRouting();

// Apache 또는 IIS 역방향 프록시
// using Microsoft.AspNetCore.HttpOverrides;을 해야함
app.UseForwardedHeaders(new ForwardedHeadersOptions {
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
}

 

4. Apache 구성

1) 환경설정

cd /etc/apache2/sites-available
vi identity.mbizok.com.conf

RequestHeader set “X-Forwarded-Proto” expr=%{REQUEST_SCHEME}

ProxyPreserveHost On
ProxyPass / http://127.0.0.1:6002/
ProxyPassReverse / http://127.0.0.1:6002/
ServerName identity.mbizok.com
ServerAlias identity.mbizok.com
ErrorLog /var/log/apache2/error-identity.mbizok.com.log
CustomLog /var/log/apache2/access-identity.mbizok.com.log common

 

2) 사이트활성화

a2ensite identity.mbizok.com.conf
service apache2 restart

 

3) 로그 확인

– 에러가 발생하여 로그 확인

systemctl status apache2.service

3m<94> 19 16:36:06 moramlinux apache2[19883]: AH00526: Syntax error on line 2 of /etc/apache2/sites-enabled/identity.mbizok.com.conf:
3m<94> 19 16:36:06 moramlinux apache2[19883]: Invalid command ‘RequestHeader’, perhaps misspelled or defined by a module not included in the server configuration

 

– 아파치 모듈 설치 및 아파치 재시작

a2enmod headers
service apache2 restart

5. Kestrel 서비스

6002 포트로 도는 API 서버를 실행하기 위해 kestrel 서비스를 만들어야 함.

1) 설정화일

vi /etc/systemd/system/kestrel-identity.mbizok.com.service

[Unit] Description= Identity Web Api

[Service] WorkingDirectory=/home/idr/Service/Identity/Identity.WebApi
ExecStart=/usr/bin/dotnet /home/idr/Service/Identity/Identity.WebApi/Identity.WebApi.dll –urls=”http://127.0.0.1:6002″
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=idr
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install] WantedBy=multi-user.target

 

2) 서비스 활성화

systemctl enable kestrel-identity.mbizok.com.service

 

3) 서비스 시작

systemctl start kestrel-identity.mbizok.com.service

 

4) 서비스 상태확인

systemctl status kestrel-identity.mbizok.com.service

III. 결론

리눅스 환경에서도 이제는 Asp.Net을 이용할수 있게 되었다.

태그 , ,