다음을 통해 공유


Git을 로컬로 사용하여 Azure App Service에 배포

이 문서에서는 로컬 컴퓨터의 Git 리포지토리에서 Azure App Service 에 앱을 배포하는 방법을 보여 줍니다.

참고 항목

이 배포 방법에는 다른 배포 방법보다 덜 안전한 SCM(Source Control Manager) 기본 인증이 필요합니다. 로컬 Git 배포가 작동하지 않는 경우 앱 배포 센터에서 로컬 Git 배포를 구성할 수 없습니다.

필수 조건

이 문서에 설명된 단계를 완료하려면 다음을 수행합니다.

  • Azure 계정이 없는 경우 시작하기 전에 체험 계정을 만듭니다.

  • Git를 설치합니다.

  • 배포할 코드가 있는 로컬 Git 리포지토리를 만듭니다. 샘플 리포지토리를 다운로드하려면 로컬 터미널 창에서 다음 명령을 실행합니다.

    git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
    

리포지토리 준비

App Service 빌드 서버에서 자동화된 빌드 기능을 가져오려면 리포지토리 루트에 프로젝트의 올바른 파일이 있는지 확인합니다.

런타임 루트 디렉터리 파일
ASP.NET(Windows만 해당) *.sln, *.csproj 또는 default.aspx.
ASP.NET Core *.sln 또는 *.csproj.
PHP index.php;
Ruby(Linux만 해당) Gemfile;
Node.JS server.js, app.js 또는 package.json(시작 스크립트 포함).
파이썬 *.py, requirements.txt 또는 runtime.txt.
HTML default.htm, default.html, default.asp, index.htm, index.html 또는 iisstart.htm.
WebJobs 연속 WebJobs의 경우 <job_name>/run.<extension> 아래 App_Data/jobs/continuous 또는 트리거된 웹 작업의 경우 App_Data/jobs/triggered입니다. 자세한 내용은 Kudu WebJobs 설명서를 참조하세요.
함수 Azure Functions에 대한 연속 배포를 참조하세요.

배포를 사용자 지정하려면 리포지토리 루트에 .deployment 파일을 포함합니다. 자세한 내용은 배포 사용자 지정사용자 지정 배포 스크립트를 참조하세요.

Visual Studio에서 리포지토리를 자동으로 만들 수 있습니다. 이 방법을 사용하면 프로젝트가 Git을 통해 즉시 배포할 준비가 됩니다.

배포 사용자 구성

Azure App Service에 대한 배포 자격 증명을 구성하는 방법을 알아봅니다. 사용자 범위 로그인 정보 또는 애플리케이션 범위 로그인 정보를 사용할 수 있습니다.

Git 사용 앱 만들기

App Service 앱이 이미 있고 앱에 대한 로컬 Git 배포를 구성하려면 대신 기존 앱 구성을 참조하세요.

옵션을 사용하여 az webapp create 를 실행합니다 --deployment-local-git .

예시:

az webapp create --resource-group <group-name> --plan <plan-name> --name <app-name> --runtime "<runtime-flag>" --deployment-local-git

출력에는 예제 https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git와 같은 URL이 포함됩니다. 다음 단계에서 이 URL을 사용하여 앱을 배포합니다.

기존 앱 구성

아직 앱이 없는 경우 Git 사용 앱 만들기를 시작합니다.

az webapp deployment source config-local-git을 실행합니다.

예시:

az webapp deployment source config-local-git --name <app-name> --resource-group <group-name>

출력에는 예제 https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git와 같은 URL이 포함됩니다. 다음 단계에서 이 URL을 사용하여 앱을 배포합니다.

이 URL에는 사용자 범위 배포 사용자 이름이 포함됩니다. 대신 애플리케이션 범위 로그인 정보를 사용할 수 있습니다.

웹앱 배포

  1. 로컬 터미널 창에서 디렉터리를 Git 리포지토리의 루트로 변경합니다. 앱의 URL을 사용해 Git 리모트를 추가하세요. 사용하는 메서드가 URL을 제공하지 않는 경우 앱 이름과 함께 사용합니다 https://<app-name>.scm.azurewebsites.net/<app-name>.git .

    git remote add azure <url>
    

    참고 항목

    New-AzWebApp을 사용하여 PowerShell에서 Git 사용 앱을 만든 경우 원격이 이미 만들어집니다.

  2. git push azure master 명령을 실행하여 Azure 원격 분기로 파일을 푸시합니다.

    자세한 내용은 배포 분기 변경을 참조하세요.

  3. Git Credential Manager 대화 상자에서 Azure 로그인 정보가 아닌 사용자 범위 또는 애플리케이션 범위 로그인 정보를 입력합니다.

    Git 원격 URL에 사용자 이름과 암호가 이미 포함되어 있으면 입력하라는 메시지가 표시되지 않습니다.

  4. 출력을 검토합니다. 런타임별 자동화, 예를 들어 ASP.NET의 MSBuild, Node.js의 npm 설치 또는 Python의 pip 설치가 표시될 수 있습니다.

  5. Azure Portal에서 앱으로 이동하여 콘텐츠가 배포되었는지 확인합니다.

배포 분기 변경

App Service 리포지토리에 커밋을 푸시하면 App Service는 기본적으로 master 분기에 파일을 배포합니다. 많은 Git 리포지토리가 이동 mastermain하므로 다음 두 가지 방법 중 하나로 App Service 리포지토리의 올바른 분기로 푸시해야 합니다.

  • master에 명시적으로 배포하기 위해, 다음 예에서처럼 명령을 실행하세요.

    git push azure main:master
    
  • 앱 설정을 설정하여 배포 분기를 DEPLOYMENT_BRANCH 변경한 다음 커밋을 사용자 지정 분기에 푸시합니다.

    Azure CLI를 사용하여 수행하려면 다음을 수행합니다.

    az webapp config appsettings set --name <app-name> --resource-group <group-name> --settings DEPLOYMENT_BRANCH='main'
    git push azure main
    

    Azure 포털에서 DEPLOYMENT_BRANCH 앱 설정을 변경할 수 있습니다.

    1. 설정에서 환경 변수를 선택합니다.
    2. 이름과 DEPLOYMENT_BRANCH 값이 있는 앱 설정을 추가합니다 main.

배포 문제 해결

Git을 사용하여 Azure에서 App Service 앱에 게시할 때 다음과 같은 일반적인 오류 메시지가 표시될 수 있습니다.

메시지 원인 해결 방법
Unable to access '[siteURL]': Failed to connect to [scmAddress] 앱이 실행되고 있지 않습니다. Azure Portal에서 앱을 시작합니다. 웹앱이 중지되면 Git 배포를 사용할 수 없습니다.
Couldn't resolve host 'hostname' azure 원격의 주소 정보가 잘못되었습니다. 명령을 git remote -v 사용하여 모든 원격 및 연결된 URL을 나열합니다. azure 원격의 URL이 올바른지 확인합니다. 필요한 경우 올바른 URL을 사용하여 이 원격을 제거한 다음 다시 만듭니다.
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'main'. 실행했을 때 git push 분기를 지정하지 않았거나 push.default의 값을 .gitconfig에 설정하지 않았습니다. 다시 실행하고 git push 주 분기 git push azure main를 지정합니다.
Error - Changes committed to remote repository but deployment to website failed. azure의 앱 배포 분기와 일치하지 않는 로컬 분기를 푸시했습니다. 현재 분기가 master인지 확인합니다. 기본 분기를 변경하려면 DEPLOYMENT_BRANCH 애플리케이션 설정을 사용합니다. 자세한 내용은 배포 분기 변경을 참조하세요.
src refspec [branchname] does not match any. 당신은 main 원격에서 azure 외의 분기로 푸시하려고 했습니다. 다시 실행하고 git push 주 분기 git push azure main를 지정합니다.
RPC failed; result=22, HTTP code = 5xx. 이 오류는 HTTPS를 통해 큰 git 리포지토리를 푸시하려고 하면 발생할 수 있습니다. 에 대해 더 높은 값을 postBuffer설정하도록 로컬 컴퓨터의 git 구성을 변경합니다. 예: git config --global http.postBuffer 524288000
Error - Changes committed to remote repository but your web app not updated. 추가 필수 모듈을 지정하는 package.json 파일이 있는 Node.js 앱을 배포했습니다. npm ERR! 이 오류 앞에 표시되는 오류 메시지를 검토하여 더 많은 컨텍스트를 확인합니다. 다음 원인은 이 오류의 알려진 원인과 해당 npm ERR! 메시지입니다.

잘못된 형식의 package.json 파일: npm ERR! Couldn't read dependencies.

Windows용 이진 배포가 없는 네이티브 모듈:
npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
또는
npm ERR! [modulename@version] preinstall: \make \|\| gmake\