Java를 해보신 분이라면 Spring MVC로 Apache Tomcat에 한방에 올라가는 Eclipse의 연동된 환경이 꽤나 매력적으로 느껴지셨을 겁니다. 요즘은 파일 하나하나를 FTP로 업로드하기보단 패키지로 만들어서 설치하듯이 한 덩어리로 사이트를 구축하는 것이 관리하기도 편하고, 문제가 발생할 소지도 적어서 더 널리 쓰이는 게 아닌가 생각이 들 정도입니다.

이 글은 IIS에서 ASP 원격 배포가 가능하도록 설정하는 방법을 제시합니다.

준비물

  • Windows Server 2012 이상의 서버 OS
    • 당연히 IIS 역할이 추가되어 있어야 합니다.
    • Windows 8.0, 8.1 미지원으로 문서에 나와 있는데, Windows 10에서도 관련된 권한 옵션을 제공하는지 확인하지 못했습니다.
  • Web Deploy 설치 파일 (.msi)
  • 개발용 PC의 경우 Visual Studio 2017 Community 이상
    • 패키지를 만들어서 제공할 수 있는 다른 컴퓨터입니다.

순서

서버 역할 추가하기

서버 관리자에서 역할 및 기능 추가를 눌러줍니다.

IIS 관리 도구를 모두 선택해서 설치해줍니다. 이걸 먼저 해줘야 별탈이 없더군요.

Web Deploy 설치하기

Web Deploy 소프트웨어를 설치합니다. Web PI에서 3.5, 3.6 버전을 손쉽게 설치할 수 있습니다만, 이걸로 많은 문제가 발생합니다.

가장 흔한 게 접속 테스트에서 404, 550 같은 문제가 발생한다는 것입니다. 필요한 구성요소가 기본으로 선택되지 않은 채 설치가 진행되기 때문입니다.

그런 염려를 덜기 위해서는 직접 위 준비물 단락에 있는 링크에 들어가서 msi 파일을 다운받아 설치를 진행할 필요가 있습니다.

설치 마법사에서 모든 구성 요소 설치를 필히 선택해주세요. 설치가 완료되면 서버를 한 번 재부팅할 필요가 있습니다.

IIS 메뉴부터가 달라지거든요.

IIS 추가 설정

재부팅은 무사히 하고 오셨습니까? IIS에서 할 일이 좀 더 남았습니다.

모든 것이 순조롭게 설치되었다면, 관리 서비스 위임(Management Servicec Delegation) 항목이 설치되었을 겁니다.

지금은 이 항목에서 할 일은 없습니다.

내가 관리할 사이트를 (만들거나, 기존의 것을) 선택하여 마우스 우클릭으로 메뉴를 펼치고, [배포(Deploy)]→[웹 배포 게시 설정(Configure Web Publish Deploying…)]을 누릅니다.

여기서 게시 권한을 지정하고 설정하면 이 사이트에 대한 배포를 수용할 수 있게 됩니다.

사이트 설정이 완료되면 관리 서비스(Management Service)로 들어갑니다.

ID 자격 증명을 적합하게 설정하고 인증서도 https에서 쓸 수 있도록 올바른 것을 골라줍니다.

자신의 도메인 이름과 일치한 인증서를 사전에 발급받았다면 더욱 편리하게 설정할 수 있겠지요.

접속 테스트

올바르게 설정했으면 Visual Studio에서 접속을 확인해봅니다.

솔루션의 프로젝트 메뉴에서  [게시(Publish)…]로 진입합니다. 이미 게시한 적 있으면 저장된 프로필이 뜹니다.

타겟 방법은 IIS로 합니다.

Web Deploy를 선택하고 서버(IP / 호스트 이름), IIS 메뉴로 보이는 사이트 이름(기본 사이트), 유저명, 비밀번호, 목표 URL을 입력합니다.

목표 URL은 연결에 영향을 주지 않지만 미리보기 주소로 활용되는 듯 합니다.

[연결 테스트 (Vaildate Connection)] 버튼을 누르면, 상기 설정에 문제 없을 경우 통신 성공 여부가 뜹니다.

방화벽 설정

혹시 접속에 실패하는 경우 Windows 방화벽이 방해하고 있을 수 있습니다. 상기 항목이 제대로 옵션이 켜져 있는지 확인해봅시다.

테스트 프로젝트 배포

일반적인 문제 해결 방법

  • Web Deploy를 재설치하거나 업그레이드하는 경우, 관리 명령 프롬프트에서 다음과 같은 명령을 실행하여 핸들러와 에이전트를 다시 실행합시다.
    • net stop msdepsvc & net start msdepsvc
    • net stop wmsvc & net start wmsvc
  • 경로상에 있는 방화벽이 통신을 방해하지 않아야 합니다. Web Deployment Agent Service는 일반적으로 80포트를 쓰며, Web Management Service는 8172 포트를 씁니다.
  • MsDepSvc는 Administrator 또는 도메인의 Admin 그룹에서 실행되어야 합니다. 로컬 계정에서는 정상적으로 작동하지 않습니다.
  • .NET 4.0이 IIS에 등록되지 않았을 수 있습니다.
    • .NET 4.0이 설치되었으나 IIS 서비스 풀에 등록되지 않았을 수 있습니다. 그 원인은 .NET 4.0이 IIS 설치 전에 깔려 있지 않았기 때문입니다.
    • 다음 명령을 실행하여 해결합니다.
      • %systemdrive%\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -iru

결론

Spring 부럽지 않은 일사천리 개발 환경이 갖추어졌습니다. SQL도 한방에 연결할 수 있는 것 같은데 관련된 정보를 더 많이 알아봐야 활용이 편리할 것 같습니다.