개발/ASP.NET

ASP .NET CentOS Install

728x90

1. CentOS 7 Install 

 

2. CentOS .NET Core Runtime Install

Microsoft package repository Install

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

 

Runtime Install

yum install dotnet-sdk-6.0
yum install aspnetcore-runtime-6.0
yum install dotnet-runtime-6.0

 

3. Apache Install

Yum package update

yum update

Apache And mod_ssl Install

yum -y install httpd mod_ssl

 

4. ASP .NET Project release upload

ASP .NET Core 프로젝트를 폴더 배포

배포된 프로젝트는 Linux의 /var/www/html/{프로젝트명} 으로 업로드.

 

5. Apache 구성

다음 경로에 {프로젝트명}.conf 파일 생성

/etc/httpd/conf.d/
<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 {IP}
    ServerAlias {IP}
    ServerAdmin root@localhost
    DocumentRoot /var/www/html/{프로젝트명}
    ErrorLog logs/{프로젝트명}-error.log
    CustomLog logs/{프로젝트명}-access.log common
</VirtualHost>

아래 파일에서 주석 처리된 'ServerName' 주석을 해제하고 'ServerName localhost' 수정

vi /etc/httpd/conf/httpd.conf

설정 확인을 위한 명령어 실행(Syntax OK => 성공)

service httpd configtest

 

6. 서비스 구동

Apache 구동

systemctl enable httpd
systemctl restart httpd

방화벽 해제

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

/var/www/html/{프로젝트명} 위치에서 웹서비스 구동

dotnet {프로젝트}.dll

permission denied error가 발생하면 다음 명령어 실행

setsebool -P httpd_can_network_connect 1

 

7. 서비스 등록

서비스 등록 파일 생성

sudo nano /etc/systemd/system/{프로젝트명}.service
[Unit]
Description=서비스 설명

[Service]
WorkingDirectory=/var/www/html/프로젝트명
ExecStart=/usr/bin/dotnet /var/www/html/프로젝트명/프로젝트명.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=apache
Environment=ASPNETCORE_ENVIRONMENT=Production 

[Install]
WantedBy=multi-user.target

서비스 사용 설정

sudo systemctl enable {프로젝트명}.service
sudo systemctl start {프로젝트명}.service
sudo systemctl status {프로젝트명}.service