과거에는 프로젝트를 게시할 때 파일을 복사해 붙여넣기 하거나 FTP를 통해 사이트 디렉토리에 업로드했지만, 이제는 지속적 통합, 자동화된 운영 및 유지보수, 자동화된 게시의 등장으로 출판 프로젝트도 날마다 변화하고 있습니다.
이 글은 VS 2019를 통해 원격 IIS 사이트에 원격으로 게시하는 방법을 설명합니다.
원격 서버 시스템: Windows Server 2019 64비트
서버 구성
1. IIS 추가, .NET 프레임워크 설치 (생략)
2. 웹 배포 다운로드 및 설치
웹 배포는 다음 주소에서 로컬 및 원격으로 웹 프로젝트를 배포하는 데 사용할 수 있습니다:하이퍼링크 로그인이 보입니다.
설치 시, 선택"완료"설치 후에는 아래 그림과 같이 서비스 내에 "웹 관리 서비스" 서비스를 보게 됩니다:
설치되지 않은 경우, 원격 게시 시 VS는 다음과 같은 오류를 뜹니다:
--------------------------- 마이크로소프트 비주얼 스튜디오 --------------------------- 원격 컴퓨터("xx")에 연결되지 않았습니다. 원격 기기에 Web Deploy가 설치되어 있고 필요한 프로세스("웹 관리 서비스")가 시작되었는지 확인하세요. 자세한 내용은 다음을 참조하세요:https://go.microsoft.com/fwlink/ ... ATION_NOT_REACHABLE。 원격 서버에 연결할 수 없습니다 --------------------------- 확실한가요 ---------------------------
3. "IIS 관리 스크립트 및 도구" 설치
관리 도구에서 웹 서버(IIS) > 서버 역할을 선택> 다음 IIS 관리 스크립트 및 도구 역할을 선택한 후 다음을 클릭해 역할을 설치하세요.
4. IIS가 원격 연결을 가능하게 합니다
IIS에서 관리 서비스를 찾고 원격 연결을 활성화하세요. 아래 이미지에 나타난 것처럼:
(참고:방화벽과 보안 그룹에서 8172 인바운드 포트를 열어)
5. 새로운 IIS 사이트 구축
다음 그림과 같이 test1이라는 새 사이트를 생성하세요:
6. IIS가 관리자 사용자 추가함
다음 이미지에 보이는 대로 IIS 관리자 사용자를 추가하세요:
동시에 test1 사이트에서는 아래 그림과 같이 권한을 추가하세요:
인증을 추가하지 않으면 원격 게시 시 다음과 같은 오류가 보고됩니다:
--------------------------- 마이크로소프트 비주얼 스튜디오 --------------------------- 웹 관리 서비스를 통해 원격 컴퓨터("xxx")에 연결했으나 권한을 부여하지 않았습니다. 올바른 사용자 이름과 비밀번호를 사용하고, 연결된 사이트가 이미 존재하며, 자격 증명을 가진 사용자가 사이트에 접근할 수 있는지 확인하세요. 자세한 내용은 다음을 참조하세요:https://go.microsoft.com/fwlink/ ... R_USER_UNAUTHORIZED。 원격 서버는 다음과 같은 오류를 반환합니다: (401) 권한 없음. --------------------------- 확실한가요 --------------------------- MVC 프로젝트 ASP.NET 출시
먼저, VS 2019를 사용해 WebAutomatedDeployment라는 이름의 새로운 .NET 4.6.2 asp.net mvc 프로젝트를 만듭니다.
두 개의 새로운 라이브러리를 만들면, 웹사이트 프로그램이 이 두 라이브러리를 동시에 참조합니다. (시뮬레이션이 공식 프로젝트에 더 가깝기 때문에 라이브러리 2개를 생성하고 참조하세요)
아래 그림과 같이 프로젝트를 시작해 보세요:
프로젝트를 우클릭하여 게시, 웹 서버(IIS)-> 웹 배포를 선택한 후 서버 정보를 입력하세요. 아래 그림과 같이 표시됩니다:
연결 상태를 확인하고 테스트가 통과했는지 확인하세요. 아래 이미지에서 확인할 수 있습니다:
제가 출판을 시도했을 때 오류는 다음과 같았습니다:
웹 배포 작업은 실패했습니다. ((2020/10/9 11:34:38) 원격 컴퓨터에서 오류 처리 요청. )
(2020/10/9 11:34:38) 원격 컴퓨터에서 오류 처리 요청. 서버가 요청을 처리하는 데 문제가 있습니다. 자세한 내용은 서버 관리자에게 문의하세요. WebAutomatedDeployment 0 서버 이벤트 뷰어를 통해 다음 그림과 같이 특정 오류를 확인할 수 있습니다:
User: itsvse 클라이언트 IP: xxx
Content-Type: application/msdeploy
Version: 9.0.0.0
MSDeploy.VersionMin: 7.1.600.0
MSDeploy.VersionMax: 9.0.3802.0
MSDeploy.Method: Sync
MSDeploy.RequestId: def8d9f7-1a72-4b19-8b75-919f8c6a9604
MSDeploy.RequestCulture: zh-CN
MSDeploy.RequestUICulture: zh-CN
ServerVersion: 9.0.1973.0
Skip: objectName="^configProtectedData$"
Provider: auto, Path: 클라이언트로 전파된 트레이스 배포 에이전트 예외가 발생했습니다. 요청 ID "def8d9f7-1a72-4b19-8b75-919f8c6a9604", 요청 타임스탬프: "2020/10/9 11:51:29". 오류 세부사항:
System.UnauthorizedAccessException: 尝试执行未经授权的操作。 System.Security.AccessControl.Win32.SetSecurityInfo(ResourceType type, string name, SafeHandle handle, SecurityInfos securityInformation, SecurityIdentifier owner, SecurityIdentifier group, GenericAcl sacl, GenericAcl dacl) at System.Security.AccessControl.NativeObjectSecurity.Persist(문자열 이름, SafeHandle handle, AccessControlSections includeSections, Object exceptionContext) System.Security.AccessControl.NativeObjectSecurity.Persist(문자열 이름, AccessControlSections includeSections, Object exceptionContext) at Microsoft.Web.Deployment.FileSystemSecurityEx.Persist(String path, Boolean isFile) at Microsoft.Web.Deployment.SetAclProvider.Add(DeploymentObject source, Boolean whatIf) Microsoft.Web.Deployment.DeploymentObject.Update(DeploymentObject 소스, DeploymentSyncContext syncContext) Microsoft.Web.Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject, DeploymentObject sourceObject) Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source) Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject) In Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable'1 syncPassId, 문자열 syncSessionId) at Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable'1 passId, String user, String siteName) Microsoft.Web.Deployment.DeploymentAgent.HandleRequestWorker(DeploymentAgentAsyncData asyncData) Microsoft.Web.Deployment.DeploymentAgent.HandleRequest(DeploymentAgentAsyncData asyncData) 용액:
VS 도구를 재시작하고 Publish을 클릭하면 다음 이미지가 나타납니다:
체크 "이 인증서는 Visual Studia에서 앞으로 세션을 위해 보관하세요"해결할 수 있어.
처음 공개되었을 때는 모든 파일을 서버에 업로드해야 했기 때문에 느렸습니다. 아래 그림에서 볼 수 있습니다:
Index.cshtml 페이지 파일을 수정하고 재게시를 클릭해 보세요. 아래 그림과 같이 다음 3개의 파일만 업데이트됩니다:
웹사이트를 새로고침하면 아래에 표시된 대로 업데이트된 것을 확인해 보세요:
(끝)
|