ASP.NET 코어 리눅스 프로젝트를 배포하는 방법

개요

리눅스 서버와 서버에 배포 ASP.NET 코어 웹 사이트 프로젝트를위한 닷넷 코어 환경을 구축하고, 프로젝트의 관리를 달성하기 위해 관리자 과정, 리버스 프록시 서버로 Nginx에를 사용하는 방법이 문서 문서.
원본 링크 : 어떻게 ASP.NET 코어 리눅스 프로젝트를 배포하는 방법

그림 삽입 설명 여기


첫째, 프로젝트 구성 및 릴리스

1. 프로젝트 구성 (옵션)

ASP.Net 핵심 프로젝트 기본 수신 대기 포트 5000, 점령가 발생하는 경우 포트는,이 단계는 포트에서 정의 할 수 있습니다.

1.1 구성 파일

8080 사용자 정의 포트 번호 예제 프로젝트 루트 디렉토리의 새로운 구성 파일 hosting.json :

{
  "server.urls": "http://*:8080"
}

1.2 수정 Program.cs

public static void Main(string[] args)
        {
            //CreateHostBuilder(args).Build().Run();
            var config = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("hosting.json", optional: true)
                .Build();
            WebHost.CreateDefaultBuilder(args)
                .UseConfiguration(config)
                .UseStartup<Startup>()
                .Build()
                .Run();
        }

2. 프로젝트 자료

오른쪽 솔루션 탐색기에서 프로젝트는 선택 간행물을 릴리스 빌드는 서버 빈 디렉토리에 해당 프로젝트에 업로드 된 내용이 Xftp 또는 다른 폴더를 게시 찾아 게시 할 폴더 모드를 사용합니다.

그림 삽입 설명 여기

둘째, 빌드 닷넷 코어 환경

서명 키 마이크로 소프트를 등록 (1)

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

닷넷 SDK를 설치합니다

#验证 yum
sudo yum update
#安装 .Net Core
sudo yum install dotnet-sdk-3.1 -y

설치를 확인합니다

dotnet --version

그림 삽입 설명 여기

세, Nginx의 설치 및 구성

요청 URL 포트 80을 통해 서버에 액세스 할 수 nginx를 리버스 프록시, nginx를 모니터 포트 (80)는, 그것은 nginx를 액세스 해당 도메인 이름과 함께 사용자 지정 포트 프로젝트에 전달됩니다.

Nginx에 설치 (1)

링크를 클릭 EPEL 출시-7-12.noarch.rpm 직접 다운로드,

또는 자신의 이동 https://dl.fedoraproject.org/pub/epel의 다운로드 버전 EPEL 필요하고 서버에 업로드, 디렉토리에서 다음 명령을 사용하여 설치를 완료하기 위해 어디 EPEL rpm 패키지 :

# 安装epel
rpm -ivh epel-release-7-9.noarch.rpm
# 安装nginx
yum install nginx
# 启动nginx
systemctl start nginx

제대로 작동 테스트 Nginx에 다음 명령을 사용하여

curl http://127.0.0.1

2. 구성 Nginx에

Nginx의 구성 파일의 기본 위치는 필요에 따라 구성을 완료, /etc/nginx/nginx.conf이며, 다음은 내 구성 참조입니다 :

server {
        listen       80;
        server_name  此处为你的域名;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
            proxy_pass http://localhost:此处为你的项目监听端口;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

구성 후 구성 파일을 다시로드 :

nginx -s reload

Nginx에 시작할 때 사용할 수 있습니다 :

systemctl enable nginx service

넷째, 웹 사이트를 시작

이 시점에서, 당신은 이미 네트워크 외부에서 사이트에 액세스를 시작할 수 있습니다. 스타트 업 모드에서 당신은 Xshell 세션 창, 이전 서버의 프로젝트 디렉토리에 들어가기에 공개 할 수 있습니다,이 명령은 dotnet 你的项目名.dll사이트를 시작하지만, 당신이 사용할 수 있도록 너무 오래 Ctrl + C 또는 분리 세션으로, 프로젝트 과정은 끝났다 일시적으로 시험을한다. 하려면 사이트는 두 가지 방법 중 하나를 사용할 수 있습니다, 아래 실행을 계속했다.

nohup을 시작

nohup dotnet 你的项目名.dll

A는 사이트를 실행하고 세션을 분리하지 않습니다 프로세스가 종료되면서, 어떤 구성은 간단하지 않으며 그것은 장점이 있습니다,하지만 당신은 가까운 문제 원한다면, 당신은 할 필요 ps -ef | grep dotnet를 해당 프로세스 ID를 찾은 다음 죽일. 서버를 다시 시작하거나 프로젝트 오류가 예기치 않게 다음 프로젝트가 자동으로 다시 시작되지 않고 종료하면 또 다른 단점은, 그입니다. 당신이 마음 그렇다면, 다음과 같은 방법을하는 것이 좋습니다.

감독자 가디언

관리자는 마이크로 소프트가 백그라운드에서 프로그램이 실행을 지정할 수있는 프로세스 관리 도구를 권장 프로세스가 비정상 종료가되면 자동으로 다시 시작됩니다이다.

설치 관리자

yum install python-setuptools
easy_install supervisor

구성 관리자

mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
mkdir /etc/supervisor/conf.d
  • 파일의 수정 supervisor.conf 끝은 다음을 포함한다 :
;[include]
;files = conf.d/*.conf
  • /etc/supervisor/conf.d 카탈로그에서 프로젝트에 대한 프로파일을 만듭니다vim /etc/supervisor/conf.d/你的项目名.conf
[program:你的项目名]
command=dotnet 你的项目名.dll 
directory=你的项目目录
autorestart=true
stderr_logfile=/var/log/你的项目名.err.log
stdout_logfile=/var/log/你的项目名.out.log 
environment=ASPNETCORE_ENVIRONMENT=Production 
user=root
stopsignal=INT
  • 시작 구성 파일 :
supervisord -c /etc/supervisor/supervisord.conf

관련 명령

  • 구성 파일을 다시로드

    supervisorctl reload
    
  • 모든 프로세스의 상태의 보호자보기

    supervisorctl status all
    
  • 모든 데몬을 닫습니다

    supervisorctl stop all
    

지금까지 ASP.NET 핵심 프로젝트 배포가 완료되었습니다.

게시 26 개 원래 기사 · 원 찬양 24 ·은 30000 +를 볼

추천

출처blog.csdn.net/iSunwish/article/details/105162027