ASP. NET Core 응용 프로그램 발표 및 배치 안내

머리말
이 편 은 주로 어떤 내용 을 포함 하고 있 습 니까?
  • 프로젝트 를 로 컬 디 렉 터 리 에 발표 합 니 다
  • 프로젝트 를 서버 에 전송 하고 시작 설정
  • Nginx 를 방문 입구 로 하고 역방향 에이전트 설정
  • 환경 정보
  • 개발 환경:
  • 용도.
    도구 & 버 전
    운영 체제
    Windows 10
    개발 도구
    Visual Studio 2017(15.7.5)
    SDK
    .NET Core SDK 2.1
    전송 도구
    FlashFxp
  • 배치 환경
  • 용도.
    도구 & 버 전
    Linux Server
    CentOS 7
    SDK
    .NET Core SDK 2.1
    전송 도구
    Vsftp
    역방향 에이전트
    Nginx 1.12.2
    준비 작업
  • ASP. NET Core 예시 항목
  • 항목.
    설명 하 다.
    SDK
    .NET Core SDK 2.1
    프로젝트 템 플 릿
    ASP.NET Core Web App(MVC)
    항목 이름
    HelloWeb
    솔 루 션 이름
    HelloWeb
    솔 루 션 루트 디 렉 터 리
    D:ProjectsTestHelloWeb
    프로젝트 생 성 완료 후 Program. cs 파일 을 수정 하여 수 동 으로 시작 할 Url 을 http: / *: 5000 으로 지정 해 야 합 니 다.
     public class Program
        {
            public static void Main(string[] args)
            {
                CreateWebHostBuilder(args).Build().Run();
            }
    
            public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
                WebHost.CreateDefaultBuilder(args)
                    .UseStartup()
                    .UseUrls("http://*:5000");
        }
    http://*:5000 호 환 http://localhost:5000, http://127.0.0.1:5000, http:// ip:5000 가능 하여 리 눅 스 서버 에 배치 한 후 테스트 할 수 있 습 니 다.
  • CentOS 7 배치 환경
  • CentOS 7 가상 컴퓨터 설치:https://ken.io/note/hyper-v-c...
  • FTP 서비스 배치:https://ken.io/note/centos-qu...
  • . NET Core SDK 2.1 배포:https://ken.io/note/centos7-....
  • Nginx 배치:https://ken.io/note/centos-qu...

  • 2. 현지 에 발표
    1. 명령 행 발표
    cmd 명령 행 에서 작업 하기
    #       (HelloWeb.csproj    )
    d: && cd D:\Projects\Test\HelloWeb\HelloWeb
    
    #  publish  
    dotnet publish -c release
    
    #dotnet publish -h    publish    
    #-c release    Release      
    

    2. Visual Studio 그래 픽 인터페이스 조작
  • 항목 의 마우스 우 클릭 메뉴 에서 선택: 발표
  • 왼쪽 에서 폴 더 를 선택 하고 설정 을 만 듭 니 다
  • 발표 조작 패 널 에서 발 표를 선택 하면 됩 니 다
  • 3. 로 컬 실행 테스트
    발표 가 완료 되면 D: Projects TestHello WebHello WebbinReleasenetcoreapp 2.1 publish 에서 발 표 된 파일 출력 을 볼 수 있 습 니 다.
    cmd 명령 행 에서 동작:
    #        
    d: && cd D:\Projects\Test\HelloWeb\HelloWeb\bin\Release
    etcoreapp2.1\publish # dotnet HelloWeb.dll # Hosting environment: Production Content root path: D:\Projects\Test\HelloWeb\HelloWeb\bin\Release
    etcoreapp2.1\publish Now listening on: http://[::]:5000 Application started. Press Ctrl+C to shut down.

    브 라 우 저 를 통 해 접근: localhost: 5000, 정상 여 부 를 검증 합 니 다.
    배치
    1. 환경 설정 & 시작 테스트
    XShell 을 통 해 CentOS 7 서버 에 연결 하여 작 동 합 니 다.
  • 사이트 디 렉 터 리 를 만 들 고 권한 을 부여 합 니 다
  • #       
    sudo mkdir -p /webroot/helloweb
    
    #        
    sudo mkdir -p /webroot/helloweb/app
    
    #        
    sudo mkdir -p /webroot/helloweb/logs
    
    #    
    sudo chmod 777 /webroot/helloweb/app
    sudo chmod 777 /webroot/helloweb/logs
  • 오픈 포트
  • #       
    sudo firewall-cmd --add-port=5000/tcp --permanent
    
    #         
    sudo firewall-cmd --reload
  • 시작 응용 프로그램
  • FTP 를 통 해 / webroot / helloweb / app 로 전 송 됩 니 다.
    명령 으로 시작:
    #  app     dotnet      
    cd /webroot/helloweb/app/
    dotnet HelloWeb.dll
    
    #     ,    :
    
    Hosting environment: Production
    Content root path: /webroot
    Now listening on: http://[::]:5000
    Application started. Press Ctrl+C to shut down.
    

    이때 브 라 우 저 를 통 해 접근 http://:5000 하면 됩 니 다.
    사이트 스타일 이 제대로 불 러 오지 않 았 다 면 wwroot 아래 의 정적 파일 을 방문 할 때 404 일 것 입 니 다.
    이것 은 ASP. NET Core 기본 값 이 명령 실행 중인 디 렉 터 리 를 응용 루트 디 렉 터 리 로 파일 을 읽 기 때 문 입 니 다.
    따라서 HelloWeb. dll 이 있 는 디 렉 터 리 에서 dotnet 명령 을 실행 해 야 합 니 다. 그렇지 않 으 면 wwroot 디 렉 터 리 의 정적 파일 을 읽 을 수 없습니다.
    2. 시작 스 크 립 트 설정
    시작 하 는 방식 을 표시 합 니 다. XShell 의 연결 창 을 닫 으 면 이 응용 프로그램의 진행 이 꺼 집 니 다.그래서 nohup 명령 으로 시작 할 수 있 습 니 다. 스 크 립 트 예제:
    nohup dotnet HelloWeb.dll &

    nohup 은 프라이버시 가 시작 되 기 때문에 닫 힌 프로그램 은 프로 세 스 id 를 찾 아야 닫 을 수 있 습 니 다. 따라서 아예 시작 을 설정 하고 스 크 립 트 를 중단 하 는 것 이 더 편리 합 니 다.
  • 시작 스 크 립 트 만 들 기
  • start. sh 파일 만 들 기
    sudo vi /webroot/helloweb/start.sh
    

    스 크 립 트 내용:
    #!/bin/sh
    cd $(cd "$(dirname "$0")"; pwd)
    APP_NAME=HelloWeb.dll
    echo "start begin..."
    echo $APP_NAME
    
    cd app
    nohup  dotnet $APP_NAME >>../logs/info.log 2>>../logs/error.log &
    cd ..
    
    sleep 5
    
    if test $(pgrep -f $APP_NAME|wc -l) -eq 0
    then
       echo "start failed"
    else
       echo "start successed"
    fi
    
  • 정지 스 크 립 트 만 들 기
  • stop. sh 파일 만 들 기
    sudo vi /webroot/helloweb/stop.sh
    

    스 크 립 트 내용:
    #!/bin/sh
    cd $(cd "$(dirname "$0")"; pwd)
    APP_NAME=HelloWeb.dll
    
    PROCESS=`ps -ef|grep $APP_NAME|grep -v grep  |awk '{ print $2}'`
    while :
    do
      kill -9 $PROCESS > /dev/null 2>&1
      if [ $? -ne 0 ];then
       break
      else
       continue
    fi
    done
    
    echo 'stop success!'
    
  • 스 크 립 트 테스트
  • #    
    sh /webroot/helloweb/start.sh
    
    #      
    start begin...
    HelloWeb.dll
    start successed
    
    #    
    sh /webroot/helloweb/stop.sh
    
    #       
    stop success!

    4. 시동 & 역방향 프 록 시 설정
    1. 시동 설정
  • 스 크 립 트 를 실행 가능 한 파일 로 표시 합 니 다
  • sudo chmod +x /webroot/helloweb/stop.sh
  • helloweb 서비스 만 들 기
  • #      
    sudo vi /usr/lib/systemd/system/helloweb.service
    
    #    
    [Unit]
    Description=helloweb
    After=network.target
    
    [Service]
    WorkingDirectory=/webroot/helloweb/app
    ExecStart=/usr/bin/dotnet /webroot/helloweb/app/HelloWeb.dll
    ExecStop=/webroot/helloweb/stop.sh
    Restart=always
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target
    

    여러 버 전의. NET Core 환경 을 설정 했다 면 / usr / bin / dotnet 를 대응 하 는 경로 로 바 꾸 는 것 을 기억 하 세 요.
  • 서비스 시작 & 서비스 시작 설정
  • #        
    sudo systemctl enable helloweb
    
    #    
    sudo systemctl start helloweb

    2. Nginx 역방향 프 록 시 설정
  • helloweb 사이트 설정 만 들 기
  • #      
    sudo vi /etc/nginx/conf.d/helloweb.conf
    
    #        
    server {
        listen       80;        #  80  
        server_name  helloweb.mydomain.com; #     
        location / {            #     
            proxy_pass http://localhost:5000;
        }
        error_page   500 502 503 504  /50x.html;#   
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
    
  • NGINX 설정 다시 불 러 오기
  • sudo nginx -s reload
  • 방화벽 포트 개방
  • #       
    sudo firewall-cmd --add-port=80/tcp --permanent
    
    #         
    sudo firewall-cmd --reload
  • 방문 테스트:
  • 로 컬 hosts 설정 을 통 해 helloweb. my domain. com 을 서버 IP 로 가리 키 기
    그리고 브 라 우 저 를 통 해 접근: helloweb.mydomain.com 하면 됩 니 다.
    본 고 는 나의 독립 블 로그 에 첫 발 을 내 디 뎠 다.https://ken.io/note/asp.net-c...

    좋은 웹페이지 즐겨찾기