자습서: Azure App Service에 PHP 및 Azure Database for MySQL - 유연한 서버 앱 배포
적용 대상: Azure Database for MySQL - 유연한 서버
Azure App Service는 Linux 운영 체제를 사용하여 확장성이 뛰어난 자체 패치 웹 호스팅 서비스를 제공합니다.
이 자습서에서는 샘플 PHP 애플리케이션을 빌드하여 Azure App Service에 배포하고, 백 엔드의 Azure Database for MySQL 유연한 서버와 통합하는 방법을 보여줍니다. 여기에서는 Azure Database for MySQL 유연한 서버 인스턴스에서 공용 액세스 연결(허용된 IP 주소)을 사용하여 App Service 앱에 연결합니다.
이 자습서에서는 다음 작업을 수행하는 방법을 알아봅니다.
- Azure Database for MySQL 유연한 서버 인스턴스 만들기
- Azure Database for MySQL 유연한 서버 인스턴스에 PHP 앱 연결
- 앱을 Azure App Service에 배포
- 앱 업데이트 및 다시 배포
Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다. 현재 Azure 무료 계정을 사용하면 Azure Database for MySQL - 유연한 서버를 12개월 동안 무료로 사용해 볼 수 있습니다. 자세한 내용은 Azure Database for MySQL - 유연한 서버를 무료로 사용해 보기를 참조하세요.
필수 조건
- Git를 설치합니다.
- Azure CLI(명령줄 인터페이스)
- Azure 구독 Azure 구독이 아직 없는 경우 시작하기 전에 Azure 체험 계정을 만듭니다. 현재 Azure 무료 계정을 사용하면 Azure Database for MySQL - 유연한 서버를 12개월 동안 무료로 사용해 볼 수 있습니다. 자세한 내용은 Azure Database for MySQL - 유연한 서버를 무료로 사용해 보기를 참조하세요.
Azure Database for MySQL - 유연한 서버 만들기
먼저 공용 액세스 연결을 사용하여 Azure Database for MySQL 유연한 서버 인스턴스를 프로비전하고, 애플리케이션이 서버에 액세스할 수 있도록 방화벽 규칙을 구성하고, 프로덕션 데이터베이스를 만듭니다.
프라이빗 액세스 연결을 대신 사용하고 가상 네트워크에서 앱 및 데이터베이스 리소스를 격리하는 방법을 알아보려면 자습서: App Services 웹앱을 가상 네트워크의 Azure Database for MySQL 유연한 서버 인스턴스에 연결을 참조하세요.
리소스 그룹 만들기
Azure 리소스 그룹은 Azure 리소스가 배포되고 관리되는 논리 그룹입니다. centralus 위치에서 az group create 명령을 사용하여 rg-php-demo 리소스 그룹을 만들어 보겠습니다.
- 명령 프롬프트를 엽니다.
- Azure 계정에 로그인합니다.
az login
- Azure 구독을 선택합니다.
az account set -s <your-subscription-ID>
- 리소스 그룹을 만듭니다.
az group create --name rg-php-demo --location centralus
Azure Database for MySQL 유연한 서버 인스턴스 만들기
공용 액세스 연결을 사용하여 Azure Database for MySQL 유연한 서버 인스턴스를 만들려면 다음 az flexible-server create 명령을 실행합니다. 서버 이름, 관리 사용자 이름 및 암호에 대한 값을 바꿉니다.
az mysql flexible-server create \ --name <your-mysql-server-name> \ --resource-group rg-php-demo \ --location centralus \ --admin-user <your-mysql-admin-username> \ --admin-password <your-mysql-admin-password>
이제 CentralUS 지역에서 Azure Database for MySQL 유연한 서버 인스턴스를 만들었습니다. 이 서버는 32GB 스토리지, 7일 백업 보존 기간 및 공용 액세스 연결로 구성된 버스트 가능한 B1MS 컴퓨팅 SKU를 기반으로 합니다.
다음으로, 클라이언트 연결을 허용하도록 Azure Database for MySQL 유연한 서버 인스턴스에 대한 방화벽 규칙을 만들려면 다음 명령을 실행합니다. 시작 IP와 끝 IP가 모두 0.0.0.0으로 설정된 경우 다른 Azure 리소스(예: App Services 앱, VM, AKS 클러스터 등)만 Azure Database for MySQL 유연한 서버 인스턴스에 연결할 수 있습니다.
az mysql flexible-server firewall-rule create \ --name <your-mysql-server-name> \ --resource-group rg-php-demo \ --rule-name AllowAzureIPs \ --start-ip-address 0.0.0.0 \ --end-ip-address 0.0.0.0
PHP 애플리케이션과 함께 사용할 새 Azure Database for MySQL 유연한 서버 프로덕션 데이터베이스 sampledb를 만들려면 다음 명령을 실행합니다.
az mysql flexible-server db create \ --resource-group rg-php-demo \ --server-name <your-mysql-server-name> \ --database-name sampledb
애플리케이션 빌드
이 자습에서는 제품 카탈로그를 표시하고 관리하는 샘플 PHP 애플리케이션을 사용합니다. 이 애플리케이션은 카탈로그에서 제품 보기, 새 제품 추가, 기존 항목 가격 업데이트 및 제품 제거와 같은 기본 기능을 제공합니다.
애플리케이션 코드에 대해 자세히 알아보려면 GitHub 리포지토리에서 앱을 탐색하세요. PHP 앱을 Azure Database for MySQL 유연한 서버에 연결하는 방법을 알아보려면 빠른 시작: PHP를 사용하여 연결을 참조하세요.
이 자습서에서는 코딩된 샘플 앱을 직접 복제하고 Azure App Service에 배포하는 방법을 알아봅니다.
샘플 애플리케이션 리포지토리를 복제하고 리포지토리 루트로 변경하려면 다음 명령을 실행합니다.
git clone https://github.com/Azure-Samples/php-mysql-app-service.git cd php-mysql-app-service
다음 명령을 실행하여 기본 분기가
main
가 되도록 합니다.git branch -m main
Azure App Service 웹앱 만들기 및 구성
Azure App Service(Web Apps, API Apps 또는 Mobile Apps)에서 앱은 항상 App Service 요금제로 실행됩니다. App Service 계획은 실행할 웹앱에 대한 컴퓨팅 리소스 세트를 정의합니다. 이 단계에서는 샘플 애플리케이션을 호스트하는 Azure App Service 요금제 및 App Service 웹앱을 만듭니다.
무료 가격 책정 계층을 사용하여 App Service 요금제를 만들려면 다음 명령을 실행합니다.
az appservice plan create --name plan-php-demo \ --resource-group rg-php-demo \ --location centralus \ --sku FREE --is-linux
FTP 또는 로컬 Git과 같은 배포 방법을 사용하여 Azure 웹앱에 애플리케이션을 배포하려면 사용자 이름 및 암호 자격 증명을 사용하여 배포 사용자를 구성해야 합니다. 배포 사용자가 구성되면 이를 모든 Azure App Service 배포에 활용할 수 있습니다.
az webapp deployment user set \ --user-name <your-deployment-username> \ --password <your-deployment-password>
PHP 8.0 런타임을 사용하여 App Service 웹앱을 만들고 로컬 컴퓨터의 Git 리포지토리에서 앱을 배포하도록 로컬 Git 배포 옵션을 구성하려면 다음 명령을 실행합니다.
<your-app-name>
을 전역적으로 고유한 앱 이름으로 바꿉니다(유효한 문자는 a-z, 0-9 및 -).az webapp create \ --resource-group rg-php-demo \ --plan plan-php-demo \ --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을 저장합니다.다음으로, 웹앱에서 Azure Database for MySQL 유연한 서버 데이터베이스 연결 설정을 구성합니다.
샘플 PHP 애플리케이션의
config.php
파일은getenv()
함수를 사용하여 환경 변수에서 데이터베이스 연결 정보(서버 이름, 데이터베이스 이름, 서버 사용자 이름 및 암호)를 검색합니다. App Service 환경 변수를 애플리케이션 설정(appsettings)으로 설정하려면 다음 명령을 실행합니다.az webapp config appsettings set \ --name <your-app-name> \ --resource-group rg-php-demo \ --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"
또는 Service Connector를 사용하여 App Service 앱과 Azure Database for MySQL 유연한 서버 인스턴스 간에 연결을 설정할 수 있습니다. 자세한 내용은 Service Connector와 Azure Database for MySQL 유연한 서버 통합을 참조하세요.
로컬 Git을 사용하여 애플리케이션 배포
이제 로컬 Git 배포 옵션을 사용하여 Azure App Service에 샘플 PHP 애플리케이션을 배포합니다.
기본 분기를 배포하고 있으므로 App Service 앱의 기본 배포 분기를 기본으로 설정해야 합니다. 애플리케이션 설정에서 DEPLOYMENT_BRANCH를 설정하려면 다음 명령을 실행합니다.
az webapp config appsettings set \ --name <your-app-name> \ --resource-group rg-php-demo \ --settings DEPLOYMENT_BRANCH='main'
애플리케이션 리포지토리의 루트 디렉터리에 있는지 확인합니다.
로컬 Git 리포지토리에 Azure 원격을 추가하려면 다음 명령을 실행합니다.
<deploymentLocalGitUrl>
을 App Service 웹앱 만들기 단계에서 저장한 Git 원격의 URL로 바꿉니다.git remote add azure <deploymentLocalGitUrl>
Azure 원격에 대해
git push
을(를) 수행하여 앱을 배포하려면 다음 명령을 실행합니다. Git 자격 증명 관리자에서 자격 증명을 묻는 메시지가 표시되면 배포 사용자 구성 단계에서 만든 배포 자격 증명을 입력합니다.git push azure main
배포가 성공할 때까지 몇 분 정도 걸릴 수 있습니다.
애플리케이션 테스트
마지막으로 https://<app-name>.azurewebsites.net
(으)로 이동하여 애플리케이션을 테스트한 다음, 제품 카탈로그에서 항목을 추가, 보기, 업데이트 또는 삭제합니다.
축하합니다! 샘플 PHP 애플리케이션을 Azure App Service에 성공적으로 배포하고 백 엔드의 Azure Database for MySQL 유연한 서버와 통합했습니다.
앱 업데이트 및 다시 배포
Azure 앱을 업데이트하려면 필요한 코드를 변경하고 Git의 모든 변경 내용을 커밋한 다음, 코드 변경 내용을 Azure에 푸시합니다.
git add .
git commit -m "Update Azure app"
git push azure main
git push
가 완료되면 Azure 앱으로 이동하거나 새로 고쳐 새 기능을 테스트합니다.
리소스 정리
이 자습서에서는 리소스 그룹의 모든 Azure 리소스를 만들었습니다. 나중에 이러한 리소스가 필요하지 않을 것 같으면 Cloud Shell에서 다음 명령을 실행하여 리소스 그룹을 삭제합니다.
az group delete --name rg-php-demo