728x90
반응형
Visual Studio에서 직접 원격 IIS 서버로 웹 애플리케이션을 배포하기 위해서는 Web Deploy 환경 구성이 필요합니다.
이 글에서는 다음 내용을 중심으로 설정 과정을 정리합니다.
- Web Deploy 설치 및 구성
- 방화벽 및 권한 설정
- Visual Studio 게시 프로필 작성
- 오류 해결 및 테스트
1. 서버 측 환경 설정 (IIS 서버)
1-1. Web Deploy 설치
기존 서버에 Web Deploy 3.0이 설치되어 있었더라도, msdeploy.axd 요청을 처리할 수 없는 경우가 많습니다.
이럴 때는 Web Deploy 3.6을 설치하거나, 기존 3.0을 수정 설치하여 핸들러가 등록되도록 해야 합니다.
1-2. 설치 시 필수 구성요소 체크
사용자 지정 설치(Custom)로 다음 항목을 반드시 체크해야 합니다:
- IIS Deployment Handler
- Remote Agent Service
설치 후 msdeploy.dll 파일이 아래 경로에 존재해야 합니다:
C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.dll
1-3. IIS 재시작 또는 앱 풀 재시작
설치 후 다음 중 하나를 수행합니다:
- 전체 IIS 재시작: iisreset
- 또는 배포 대상 웹사이트의 앱 풀만 재시작
2. Web Management Service(WMS) 설정
- 서비스 실행
- services.msc → Web Management Service 실행
- 포트 8172 허용 확인
- netstat -an | find "8172" 로 리스닝 여부 확인
- IIS 관리자 > 서버 노드 > 관리 서비스
- 원격 연결 허용 체크
3. 방화벽 설정
Windows Defender 방화벽에서 포트 8172 인바운드 규칙 허용 필요
- 고급 보안이 포함된 Windows Defender 방화벽 실행
- 인바운드 규칙 → 새 규칙 만들기
- 포트 선택
- TCP / 특정 포트: 8172
- 연결 허용
- 필요한 경우 특정 IP만 허용 가능
4. 배포 계정 권한 설정
배포에 사용할 Windows 계정에 IIS 사이트 폴더 쓰기 권한이 필요합니다.
예: C:\inetpub\wwwroot\MySite
- 해당 폴더 > 속성 > 보안 > 사용자 추가 > 쓰기/수정 권한 부여
또한, IIS 관리자 > 관리 서비스 위임에서 Web Deploy 권한도 허용되어야 합니다.
5. Visual Studio에서 게시 설정
5-1. 게시 프로필 생성
- 프로젝트 우클릭 → 게시
- 프로필 추가 → Web Deploy 선택
- 아래 항목 입력:
항목값 예시
서버 | https://서버주소:8172/msdeploy.axd |
사이트 이름 | IIS 사이트 이름 |
사용자명 | Windows 계정 |
암호 | 해당 계정 비밀번호 |
5-2. 설정 탭에서 데이터베이스 관련 체크 해제
- “연결 문자열 포함”, “마이그레이션 적용” 등은 사용하지 않으면 해제
- .dacpac, .sql 파일 자동 배포 막기 위함
6. 오류 로그 및 확인 팁
대표적인 오류 코드:
상태 코드설명
404 7 0 | msdeploy.axd 핸들러 없음 또는 등록 실패 |
401 | 인증 실패 (계정 또는 권한 문제) |
200 | 배포 정상 작동 중 |
IIS 로그 확인
IIS 로그 파일 경로 예시:
C:\inetpub\logs\LogFiles\W3SVC<SiteID>\
로그에서 cs-uri-stem이 /msdeploy.axd 인 요청 확인 가능
7. 기타 참고 사항
- .pubxml 파일은 배포 설정이 저장되는 XML이며, Visual Studio > Publish > Advanced Settings에서 수정 가능
- web.config도 자동 배포됨. 서버 환경별 분기 설정 필요 시 web.Release.config 등으로 분리 가능
728x90
반응형
'Skills > ASP.NET' 카테고리의 다른 글
.NET에서 사용되는 주요 풀링(Pooling) 기법 정리 (0) | 2025.06.22 |
---|---|
ASP.NET Web Forms 요청부터 응답까지, 내부 구조 완전 정복 (1) | 2025.06.22 |
.NET의 컴파일 과정: C#에서 IL, DLL, JIT, 기계어까지, 그리고 CLR의 역할 (0) | 2024.09.07 |
aspx와 ascx의 차이 (1) | 2024.09.07 |
bin과 obj 폴더의 역할 (0) | 2024.09.07 |