연습 - Azure App Service에 PHP 및 MySQL - 유연한 서버 앱 배포

완료됨

이 단원에서는 샘플 PHP 앱을 빌드하여 Azure App Service에 배포하고 이를 백 엔드의 Azure Database for MySQL - 유연한 서버와 통합합니다.

1단계 - Azure Database for MySQL 유연한 서버 만들기

먼저, 공용 액세스 연결이 가능한 MySQL 유연한 서버를 프로비전하고, 앱이 서버에 액세스할 수 있도록 방화벽 규칙을 구성하고, 프로덕션 데이터베이스를 만듭니다.

Azure Portal을 사용하여 MySQL의 유연한 서버 만들기 환경을 살펴봅니다.

  1. 샌드박스를 활성화하는 데 사용한 것과 동일한 계정을 사용하여 Azure Portal에 로그인합니다.

  2. 페이지 상단의 검색 상자에 MySQL을 입력한 다음 Azure Database for MySQL 유연한 서버를 선택합니다.

    mysql 검색 결과를 보여 주는 포털 상단의 검색 창 스크린샷.

  3. Azure Database for MySQL 유연한 서버 페이지에서 + 만들기를 선택한 다음 유연한 서버를 선택합니다.

    유연한 서버 메뉴 항목이 강조 표시된 확장된 만들기 메뉴의 스크린샷.

  4. 유연한 서버 페이지의 기본 사항 탭에서 다음 테이블에 정보를 입력합니다.

    설정 제안 값
    구독 컨시어지 구독
    리소스 그룹 드롭다운 목록에서 learn-으로 시작하는 리소스 그룹을 선택합니다.
    서버 이름 유연한 서버를 식별하는 전역적으로 고유한 이름을 입력합니다.
    MySQL 버전 8.0
    워크로드 유형 개발 또는 취미 프로젝트용을 선택합니다.
    관리자 사용자 이름 mysqladmin을 입력합니다. azure_superuser, admin, administrator, root, guest, public을 사용하지 마세요.
    암호 Passw0rd123을 입력합니다. 암호는 8~128자 사이여야 하며 다음 세 가지 범주의 문자를 포함해야 합니다. 영문 대문자, 영문 소문자, 숫자(0~9) 및 영숫자가 아닌 문자(예: !, $, #, %).

    다른 모든 설정은 기본값을 유지합니다.

  5. 기본 탭의 컴퓨팅 + 스토리지에서 서버 구성을 선택합니다.

  6. 컴퓨팅 + 스토리지 페이지에서 다음 설정을 구성합니다.

    • 컴퓨팅
      • 버스트 가능 컴퓨팅 계층을 선택합니다.
      • 컴퓨팅 크기 드롭다운 목록에서 Standard_B1s(vCore 1개, GiB 메모리 1개, 최대 iops 400개)를 선택합니다.
    • 스토리지
      • 스토리지 크기(GB)20으로 설정되어 있는지 확인합니다.
      • 사전 프로비전된 IOPS를 선택하고 값을 360으로 설정된 상태로 둡니다.
      • 스토리지 자동 증가 확인란이 선택되어 있는지 확인합니다.
    • 고가용성
      • 고가용성 사용 확인란이 선택되어 있지 않은지 확인합니다.
    • Backup
      • 백업 보존 기간(일)7로 설정되어 있는지 확인합니다.
      • 지역 중단 또는 재해로부터 복구 확인란이 선택되지 않았는지 확인합니다.
  7. 저장을 선택한 다음 네트워킹 탭으로 이동합니다.

    네트워킹 탭 주위에 빨간색 상자가 있는 유연한 서버 만들기 블레이드를 보여주는 스크린샷

  8. 네트워킹 탭에서 공용 액세스(허용된 IP 주소) 연결 방법을 선택하고, 공용 IP 주소를 사용하여 인터넷을 통해 이 리소스에 대한 공용 액세스 허용을 선택한 후 다음 스크린샷과 같이 Azure 내의 모든 Azure 서비스에서 이 서버로의 공용 액세스 허용을 선택합니다.

  9. MySQL의 유연한 서버 구성을 검토하려면 검토 + 만들기를 선택합니다.

  10. 만들기를 선택하여 서버를 프로비전합니다. 프로비전에는 최대 10분이 걸릴 수 있습니다.

  11. 배포가 완료되면 리소스로 이동을 선택하여 Azure Database for MySQL 유연한 서버의 개요 페이지를 봅니다.

이 연습의 나머지 부분에서는 이 창 오른쪽에 나타나는 Azure Cloud Shell을 사용하여 명령을 실행합니다.

PHP 앱과 함께 사용할 새로운 MySQL 프로덕션 데이터베이스 sampledb를 만들려면 다음 명령을 실행합니다.

az mysql flexible-server db create \
--resource-group <rgn>[Sandbox resource group name]</rgn> \
--server-name <your-mysql-server-name> \
--database-name sampledb

2단계 - 앱 복제

이 연습에서는 제품 카탈로그를 표시하고 관리하는 샘플 PHP 앱을 사용합니다. 이 앱은 카탈로그에서 제품 보기, 새 제품 추가, 기존 항목 가격 업데이트 및 제품 제거와 같은 기본 기능을 제공합니다.

코딩된 앱을 직접 복제하고 Azure App Service에 배포하는 방법을 알아봅니다.

참고 항목

앱 코드에 대해 자세히 알아보려면 GitHub 리포지토리에서 앱을 탐색해 보세요.

  1. 샘플 앱 리포지토리를 복제하고 리포지토리 루트로 변경하려면 다음 명령을 실행합니다.

    git clone https://github.com/Azure-Samples/php-mysql-app-service.git
    cd php-mysql-app-service
    
  2. 다음 명령을 실행하여 기본 분기가 main가 되도록 합니다.

    git branch -m main
    

3단계 - Azure App Service 웹앱 만들기 및 구성

Azure App Service(Web Apps, API Apps 또는 Mobile Apps)에서 앱은 항상 App Service 요금제로 실행됩니다. App Service 계획은 실행할 웹앱에 대한 컴퓨팅 리소스 세트를 정의합니다. 이 단계에서는 샘플 앱을 호스트하는 Azure App Service 계획 및 App Service 웹앱을 만듭니다.

  1. 무료 가격 책정 계층을 사용하여 App Service 요금제를 만들려면 다음 명령을 실행합니다.

    az appservice plan create --name plan-learn \
    --resource-group <rgn>[Sandbox resource group name]</rgn> \
    --location centralus \
    --sku FREE --is-linux
    
  2. FTP 또는 로컬 Git과 같은 배포 방법을 사용하여 Azure 웹앱에 앱을 배포하려면 사용자 이름 및 암호 자격 증명을 사용하여 배포 사용자를 구성해야 합니다. 배포 사용자가 구성되면 이를 모든 Azure App Service 배포에 활용할 수 있습니다.

    az webapp deployment user set \
    --user-name <your-deployment-username> \
    --password <your-deployment-password>
    
  3. PHP 8.0 런타임을 사용하여 App Service 웹앱을 만들고 로컬 컴퓨터의 Git 리포지토리에서 앱을 배포하도록 로컬 Git 배포 옵션을 구성하려면 다음 명령을 실행합니다.

    참고: <your-app-name>을 전역적으로 고유한 앱 이름으로 바꿉니다(유효한 문자는 a-z, 0-9 및 -).

    az webapp create \
    --resource-group <rgn>[Sandbox resource group name]</rgn> \
    --plan plan-learn \
    --name <your-app-name> \
    --runtime "PHP|8.0" \
    --deployment-local-git
    

    Important

    Azure CLI 출력에서 ​​Git 원격의 URL은 deploymentLocalGitUrl 속성에 https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git 형식으로 표시됩니다. 나중에 필요하므로 이 URL을 저장합니다.

  4. 샘플 PHP 앱의 config.php 파일은 getenv() 함수를 사용하여 환경 변수에서 데이터베이스 연결 정보(서버 이름, 데이터베이스 이름, 서버 사용자 이름 및 암호)를 검색합니다. App Service 환경 변수를 애플리케이션 설정(appsettings)으로 설정하려면 다음 명령을 실행합니다.

    az webapp config appsettings set \
    --name <your-app-name> \
    --resource-group <rgn>[Sandbox resource group name]</rgn> \
    --settings DB_HOST="<your-server-name>.mysql.database.azure.com" \
    DB_DATABASE="sampledb" \
    DB_USERNAME="<your-mysql-admin-username>" \
    DB_PASSWORD="<your-mysql-admin-password>" \
    MYSQL_SSL="true"
    

    위 명령은 웹앱에서 MySQL 유연한 서버 데이터베이스 연결 설정을 구성합니다.

4단계 - 로컬 Git을 사용하여 앱 배포

이제 로컬 Git 배포 옵션을 사용하여 샘플 PHP 앱을 Azure App Service에 배포합니다.

  1. 기본 분기를 배포하고 있으므로 App Service 앱의 기본 배포 분기를 기본으로 설정해야 합니다. 애플리케이션 설정에서 DEPLOYMENT_BRANCH를 설정하려면 다음 명령을 실행합니다.

    az webapp config appsettings set \
    --name <your-app-name> \
    --resource-group <rgn>[Sandbox resource group name]</rgn> \
    --settings DEPLOYMENT_BRANCH='main'
    
  2. 현재 앱 리포지토리의 루트 디렉터리에 있는지 확인합니다.

  3. 로컬 Git 리포지토리에 Azure 원격을 추가하려면 다음 명령을 실행합니다.

    참고:<deploymentLocalGitUrl>을(를) App Service 웹앱 만들기 단계에서 저장한 Git 원격의 URL로 바꿉니다.

    git remote add azure <deploymentLocalGitUrl>
    
  4. Azure 원격에 대해 git push을(를) 수행하여 앱을 배포하려면 다음 명령을 실행합니다. Git 자격 증명 관리자에서 자격 증명을 묻는 메시지가 표시되면 배포 사용자 구성 단계에서 만든 배포 자격 증명을 입력합니다.

    git push azure main
    

배포가 성공하는 데 몇 분 정도 걸릴 수 있습니다.

5단계 - 앱 테스트

마지막으로, https://<app-name>.azurewebsites.net을 찾아본 다음 제품 카탈로그에서 항목을 추가, 보기, 업데이트 또는 삭제하여 앱을 테스트합니다.

웹 브라우저에 표시된 배포된 웹앱의 스크린샷.

축하합니다! 샘플 PHP 앱을 Azure App Service에 배포했고, 백 엔드의 Azure Database for MySQL - 유연한 서버와 통합했습니다.