다음을 통해 공유


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

코드를 배포하는 가장 간단한 방법 중 하나는 로컬 컴퓨터에서 가져오는 것입니다. 이 문서에서는 로컬 컴퓨터의 Git 리포지토리에서 Azure App Service 에 앱을 배포하는 방법을 보여 줍니다.

참고

로컬 Git 배포에는 다른 배포 방법보다 덜 안전한 SCM(Source Control Manager) 기본 인증이 필요합니다. 기본 인증을 사용하지 않도록 설정하면 앱의 배포 센터에서 로컬 Git 배포를 구성할 수 없습니다.

필수 구성 요소

이 문서의 단계를 완료하려면 다음이 필요합니다.

  • App Services 리소스를 만들 수 있는 권한이 있는 Azure 계정 및 구독입니다. Azure 계정이 없는 경우 시작하기 전에 체험 계정을 만듭니다.

  • Git이 설치되고 배포할 앱 코드가 포함된 로컬 Git 리포지토리가 있습니다.

    로컬 Bash 터미널 창에서 다음 명령을 실행하여 샘플 Node.js 앱 리포지토리를 복제할 수 있습니다.

    git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
    
  • Azure CLI 명령을 사용하려는 경우 로컬 컴퓨터에 설치된 최신 버전의 Azure CLI 입니다. az login을 사용하여 Azure에 로그인합니다.

  • Azure PowerShell 명령을 실행하려면 최신 버전의 Azure PowerShell이 설치됩니다. Connect-AzAccount를 사용하여 Azure에 로그인합니다.

리포지토리 준비

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 설명서를 참조하세요.
Functions Azure Functions에 대한 연속 배포를 참조하세요.

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

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

배포 사용자 자격 증명

앱을 인증하고 배포하려면 배포 사용자 자격 증명이 필요합니다. 이러한 자격 증명은 Azure 구독 자격 증명과 다르며 사용자 범위 또는 애플리케이션 범위 자격 증명을 사용할 수 있습니다.

로컬 Git 배포에 대한 사용자 범위 배포 사용자는 암호가 아닌 사용자 이름만 필요합니다. Azure CLI 명령을 az webapp deployment user set --user-name <username>실행하거나 앱 배포 센터의로컬 Git/FTPS 자격 증명 탭에서 사용자 범위 아래에서 사용자 범위 사용자 이름을 설정할 수 있습니다.

사용자 범위 배포 사용자를 만든 후에는 액세스 권한이 있는 모든 App Service 앱에 사용할 수 있습니다. 자세한 내용은 사용자 범위 자격 증명 구성을 참조하세요.

애플리케이션 범위 배포 사용자는 앱별로 지정되며 앱을 만들 때 자동으로 만들어집니다. 앱 배포 센터의 로컬 Git/FTPS 자격 증명 탭에서 배포에 사용할 애플리케이션 범위 사용자 자격 증명을 가져올 수 있습니다.

Git 사용 앱 만들기 및 구성

Azure CLI, Azure PowerShell 또는 Azure Portal을 사용하여 Git 지원 앱을 만들고 구성하거나 기존 앱에 대한 로컬 Git 배포를 구성할 수 있습니다.

  • 로컬 Git 배포에 대해 구성된 새 웹앱을 만들려면 옵션을 사용하여 az webapp create--deployment-local-git 실행합니다. 예를 들면 다음과 같습니다.

    az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name myApp --runtime "NODE:20-lts" --deployment-local-git
    
  • 기존 앱에 대한 로컬 Git 배포를 구성하려면 az webapp deployment source config-local-git을 실행합니다. 예를 들면 다음과 같습니다.

    az webapp deployment source config-local-git --name myApp --resource-group myResourceGroup
    

두 명령 중 하나라도 다음과 같은 URL을 포함하는 출력을 생성합니다.

Local git is configured with url of 'https://contoso-user@myapp.scm.azurewebsites.net/myApp.git'

앞의 URL에는 사용자 범위 배포 사용자 이름이contoso-user 포함됩니다. 사용자 범위 배포 사용자 이름이 없는 경우 URL은 애플리케이션 범위 사용자 이름(예: https://$myApp@myApp.scm.azurewebsites.net/myApp.git)을 사용합니다.

이 Git 복제 URL을 사용하여 다음 단계에서 앱을 배포합니다.

웹앱 배포

Azure에 앱을 배포하려면 필요한 경우 원격 분기를 만들고 올바른 분기에 배포하고 있는지 확인한 다음 코드를 원격으로 푸시합니다.

원격 분기 만들기

Azure PowerShell New-AzWebApp 을 사용하여 샘플 코드에서 앱을 만든 경우, 해당 앱의 원격 azure 이 이미 생성되었습니다. 그렇지 않으면 다음 안내에 따라 원격 연결을 설정하세요.

  1. 로컬 터미널에서 디렉터리를 복제된 Git 리포지토리의 루트로 변경합니다.

  2. Git 클론 URL을 사용하여 azure라는 이름의 Git 원격을 추가합니다. Git 복제 URL을 모르는 경우 다음을 사용합니다 https://<app-name>.scm.azurewebsites.net/<app-name>.git.

    git remote add azure <git-clone-url>
    

올바른 브랜치에 푸시하세요

App Service 저장소는 기본적으로 파일을 master 분기로 배포합니다. 기존 로컬 파일이 리포지토리의 분기에 있는 master 경우 이제 실행 git push azure master하여 앱을 배포할 수 있습니다.

그러나 이 문서의 샘플 코드 리포지토리를 포함하여 많은 Git 리포지토리가 main 또는 다른 기본 분기 이름을 사용합니다. 올바른 분기에 배포하려면 원격 master 분기에 명시적으로 배포하거나 배포 분기를 다른 분기 main 이름으로 변경하고 해당 분기에 배포해야 합니다.

다음 master 명령을 사용하여 main 브랜치에서 push로 명시적으로 배포합니다.

git push azure main:master

또는 앱의 DEPLOYMENT_BRANCH 앱 설정을 main으로 변경한 후, 다음과 같이 main에 직접 푸시합니다.

  • Azure CLI:

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

    1. 앱의 포털 페이지에서 왼쪽 탐색 메뉴의 설정 아래에서 환경 변수를 선택합니다.
    2. 추가를 선택하고, 이름 DEPLOYMENT_BRANCH 및 값 기본으로 애플리케이션 설정을 추가하고, 적용을 선택합니다.
    3. 터미널 창에서 git push azure main를 실행합니다.

배포 완료 및 확인

코드를 푸시 한 후 Git Credential Manager 대화 상자가 나타나면 사용자 범위 배포 사용자 이름 또는 애플리케이션 범위 사용자 이름 및 암호를 입력합니다. Git 원격 URL에 로그인 정보가 이미 포함되어 있으면 입력하라는 메시지가 표시되지 않습니다.

명령 push의 출력을 검토합니다. Node.js용 npm install, ASP.NET용 MSBuild 또는 Python용 pip install 같은 런타임별 자동화가 표시될 수 있습니다. 오류가 발생하면 배포 문제 해결을 참조하세요.

Azure Portal로 이동하여 앱 개요 페이지에서 기본 도메인 링크를 선택하여 앱이 성공적으로 배포되었는지 확인합니다. 앱이 브라우저 탭에서 열리고 Hello World!를 표시해야 합니다.

배포 문제 해결

로컬 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을 git remote remove으로 제거한 후, 올바른 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 <branch>로 올바른 분기를 지정하세요.
Error - Changes committed to remote repository but deployment to website failed. azure의 앱 배포 분기와 일치하지 않는 로컬 분기를 푸시했습니다. 현재 브랜치가 master인지 확인하거나, 올바른 브랜치에 푸시하기 지침에 따라 배포 브랜치를 변경하세요.
src refspec [branchname] does not match any. main 원격에서 azure 이외의 분기로 푸시하려고 했습니다. git push을 다시 실행하고, main 브랜치에 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\