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