이 문서에서는 FTP(파일 전송 프로토콜) 또는 FTPS(파일 전송 프로토콜 보안)를 사용하여 웹앱, 모바일 앱 백 엔드 또는 API 앱을 Azure App Service에 배포하는 방법을 보여 줍니다. FTP 또는 FTPS 앱 배포를 사용하도록 설정하기 위해 구성이 필요하지 않습니다. 앱의 FTP/S 엔드포인트가 이미 활성화되어 있습니다.
비고
FTP/S 배포가 작동하려면 SCM 기본 인증 게시 자격 증명 과 FTP 기본 인증 게시 자격 증명 을 모두 사용하도록 설정해야 합니다. 기본 인증을 사용하지 않도록 설정하면 FTP/S 배포가 작동하지 않으며 앱의 배포 센터에서 FTP/S 자격 증명을 보거나 구성할 수 없습니다.
배포 자격 증명 가져오기
배포에 대한 자격 증명을 얻으려면 Azure App Service에 대한 배포 자격 증명 구성의 지침을 따릅니다. 앱의 애플리케이션 범위 자격 증명을 복사하거나 사용자 범위 자격 증명을 설정하고 복사합니다. 자격 증명 집합을 사용하여 앱의 FTP/S 엔드포인트에 연결할 수 있습니다.
애플리케이션 범위 자격 증명의 경우 FTP/S 사용자 이름 형식은 <app-name>\$<app-name>
. 사용자 범위 자격 증명의 경우 FTP/S 사용자 이름 형식은 <app-name>\<username>
. App Service FTP/S 엔드포인트는 앱 간에 공유되며, 사용자 범위 자격 증명은 특정 리소스에 연결되지 않으므로 사용자 이름 앞에 앱 이름을 추가해야 합니다.
FTP/S 엔드포인트 가져오기
FTP/S 엔드포인트를 얻으려면 다음을 수행합니다.
앱의 Azure Portal 페이지에서 왼쪽 탐색 메뉴의 배포 아래에서 배포 센터를 선택합니다. FTPS 자격 증명 탭에서 FTPS 엔드포인트 URL을 복사합니다.
Azure에 파일 배포
FTP/S를 사용하여 Azure에 파일을 배포하려면 다음을 수행합니다.
- Visual Studio, Cyberduck 또는 WinSCP와 같은 FTP/S 클라이언트에서 연결 정보를 사용하여 앱에 연결합니다.
- 파일 및 해당 디렉터리 구조를 Azure 의 /site/wwwroot 디렉터리 또는 WebJobs 의 /site/wwwroot/App_Data/Jobs/ 디렉터리에 복사합니다.
- 앱의 URL을 찾아 앱이 제대로 실행하는지 확인합니다.
비고
로컬 Git 배포 및 ZIP 배포와 달리 FTP/S 배포는 다음과 같은 빌드 자동화를 지원하지 않습니다.
- NuGet, NPM, PIP 및 작성기 자동화와 같은 종속성을 복원합니다.
- .NET 바이너리 파일 컴파일하기
- web.config 파일 생성
로컬 컴퓨터에서 이러한 필요한 파일을 수동으로 생성한 다음 앱과 함께 배포해야 합니다. Node.js web.config 예제는 Node 앱에 대한 사용자 지정 web.config 사용을 참조하세요.
FTPS 적용
FTPS는 TLS(전송 계층 보안) 및 SSL(Secure Sockets Layer)을 사용하는 보다 안전한 형태의 FTP입니다. 보안 강화를 위해 TLS/SSL을 통해 FTPS를 적용해야 합니다. FTP 배포를 사용하지 않는 경우 FTP와 FTPS를 모두 사용하지 않도록 설정할 수도 있습니다.
암호화되지 않은 FTP를 사용하지 않도록 설정하려면 다음을 수행합니다.
FTP/S 배포 문제 해결
- 배포 중에 오류가 발생하거나 예측할 수 없는 동작이 발생할 수 있는 앱은 어떻게 되나요?
- FTP/S 배포 문제 해결의 첫 번째 단계는 무엇인가요?
- FTP/S를 수행하고 내 코드를 게시할 수 없는 이유는 무엇인가요?
- 수동 모드를 통해 App Service에서 FTP/S에 연결하려면 어떻게 해야 하나요?
- 명시적 암호화를 사용하여 FTPS를 통해 연결을 시도할 때 연결이 실패하는 이유는 무엇인가요?
- 내 앱을 배포하는 데 사용된 방법을 확인하려면 어떻게 해야 하나요?
배포 중에 오류가 발생하거나 예측할 수 없는 동작이 발생할 수 있는 앱은 어떻게 되나요?
공식적으로 지원되는 배포 방법은 앱을 실행하는 데 사용되는 /home/site/wwwroot 폴더의 파일을 변경합니다. 잠긴 파일로 인해 배포가 실패할 수 있습니다. 또한 파일이 모두 동시에 업데이트되지 않는 경우 배포 중에 앱이 예측 불가능하게 동작할 수 있으며, 이는 고객 관련 앱에 바람직하지 않습니다.
이러한 문제를 방지하는 몇 가지 방법이 있습니다.
- 압축을 풀지 않고 ZIP 패키지에서 직접 앱을 실행합니다.
- 배포 중에 앱을 중지하거나 오프라인 모드를 사용하도록 설정합니다. 자세한 내용은 배포 중 잠긴 파일 처리를 참조하세요.
- 자동 전환을 켠 상태로 스테이징 슬롯에 배포합니다.
FTP/S 배포 문제 해결의 첫 번째 단계는 무엇인가요?
FTP/S 배포 문제를 해결하기 위한 첫 번째 단계는 배포 문제와 런타임 애플리케이션 문제를 구분하는 것입니다.
일반적으로 배포 문제로 인해 앱에 파일이나 잘못된 파일이 배포되지 않습니다. FTP/S 배포를 조사하거나 소스 제어와 같은 대체 배포 경로를 선택하여 문제를 해결할 수 있습니다.
일반적으로 런타임 애플리케이션 문제로 인해 올바른 파일이 앱에 배포되지만 잘못된 앱 동작이 발생합니다. 런타임에 코드 동작에 초점을 맞추고 특정 오류 경로를 조사하여 문제를 해결할 수 있습니다.
자세한 내용은 배포 및 런타임 문제를 참조하세요.
FTP/S를 수행하고 내 코드를 게시할 수 없는 이유는 무엇인가요?
올바른 호스트 이름 및 자격 증명을 입력했는지 확인합니다. 또한 방화벽이 컴퓨터에서 다음 FTP/S 포트를 차단하지 않는지 확인합니다.
- FTP/S 컨트롤 연결 포트:
21
990
- FTP/S 데이터 연결 포트:
989
10001-10300
수동 모드를 통해 Azure App Service에서 FTP/S에 연결하려면 어떻게 해야 하나요?
Azure App Service는 활성 모드와 수동 모드를 통해 연결을 지원합니다. 배포 컴퓨터는 일반적으로 운영 체제의 방화벽 뒤에 있거나 홈 또는 비즈니스 네트워크의 일부이므로 수동 모드를 사용하는 것이 좋습니다. 수동 모드 연결의 예 는 연결 페이지(고급 사이트 설정 대화 상자)를 참조하세요.
명시적 암호화를 사용하여 FTPS를 통해 연결을 시도할 때 연결이 실패하는 이유는 무엇인가요?
FTPS를 사용하면 명시적 또는 암시적 TLS 보안 연결을 설정할 수 있습니다.
- 명시적 암호화를 사용하여 연결하는 경우 포트
21
를 통해 연결이 설정됩니다. - 암시적 암호화를 사용하여 연결하는 경우 포트
990
를 통해 연결이 설정됩니다.
사용하는 URL 형식은 연결 성공에 영향을 줄 수 있으며 클라이언트 애플리케이션에 따라 달라집니다. 포털에 URL이 ftps://
로 표시됩니다. 만약 연결한 URL이 ftp://
로 시작하면, 연결이 포트 21
에서 연결된다는 의미입니다. URL이 시작 ftps://
되면 연결이 암시적이며 포트 990
에 있음을 암시적으로 표시합니다.
포트 ftps://
를 사용하여 21
에 연결하려는 것과 같은 설정을 섞지 않도록 주의하세요. 명시적 연결이 메서드 앞에 일반 FTP 연결로 시작되므로, AUTH
방법을 사용하여도 명시적 암호화로 연결하는 데 실패합니다.
내 앱을 배포하는 데 사용된 방법을 확인하려면 어떻게 해야 하나요?
Azure Portal 페이지에서 애플리케이션 설정을 확인하여 앱이 배포된 방법을 확인할 수 있습니다. 왼쪽 탐색 메뉴의 설정에서 환경 변수를 선택합니다. 앱 설정 탭에서 다음을 수행합니다.
- 외부 패키지 URL
WEBSITE_RUN_FROM_PACKAGE
을 사용하여 앱을 배포한 경우 URL 값이 있는 애플리케이션 설정에 설정이 나타납니다. - ZIP 배포를 사용하여 앱을 배포한 경우 설정이
WEBSITE_RUN_FROM_PACKAGE
값1
과 함께 표시됩니다.
Azure DevOps를 사용하여 앱을 배포한 경우 Azure DevOps 포털에서 배포 기록을 볼 수 있습니다. Azure Functions Core Tools를 사용한 경우 Azure Portal에서 배포 기록을 볼 수 있습니다.