PHP 웹 및 작업자 역할 만들기
개요
Important
이제 Cloud Services(클래식)는 2024년 9월 1일부터 모든 고객을 대상으로 더 이상 사용되지 않습니다. 기존 실행 중인 배포는 Microsoft에서 중지 및 종료되며, 데이터는 2024년 10월부터 영구적으로 손실됩니다. 새 배포에서는 새로운 Azure Resource Manager 기반 배포 모델인 Azure Cloud Services(추가 지원)를 사용해야 합니다.
이 가이드는 Windows 개발 환경에서 PHP 웹이나 작업자 역할을 만들고, 사용 가능한 "기본 제공" 버전에서 특정 PHP 버전을 선택하여 PHP 구성을 변경하고, 확장을 사용하고, 마지막으로 Azure에 배포하는 방법을 보여 줍니다. 또한 사용자 지정 구성 및 확장으로 제공하는 PHP 런타임을 사용하도록 웹 또는 작업자 역할을 구성하는 방법도 설명합니다.
Azure는 애플리케이션을 실행하기 위한 세 가지 컴퓨팅 모델인 Azure App Service, Azure Virtual Machines 및 Azure Cloud Services를 제공합니다. 이 세 모델은 모두 PHP를 지원합니다. 웹 및 작업자 역할을 포함하는 Cloud Services는 PaaS(Platform as a Service)를 제공합니다. Cloud Services 안에서 웹 역할은 프런트 엔드 웹 애플리케이션을 호스팅할 전용 IIS(인터넷 정보 서비스) 웹 서버를 제공합니다. 작업자 역할은 비동기, 장기 실행 또는 영구 작업을 사용자 조작 또는 입력과 독립적으로 실행할 수 있습니다.
이러한 옵션에 대한 자세한 내용은 Azure에서 제공하는 Compute 호스팅 옵션을 참조하세요.
PHP용 Azure SDK 다운로드(영문)
PHP용 Azure SDK는 여러 구성 요소로 구성됩니다. 이 문서에서는 이러한 구성 요소 중 두 가지인 Azure PowerShell 및 Azure 에뮬레이터를 사용합니다. 이러한 두 구성 요소는 Microsoft 웹 플랫폼 설치 관리자를 통해 설치할 수 있습니다. 자세한 내용은 Azure PowerShell을 설치 및 구성하는 방법을 참조하세요.
Cloud Services 프로젝트 만들기
PHP 웹 또는 작업자 역할을 만드는 첫 번째 단계는 Azure 서비스 프로젝트를 만드는 것입니다. Azure 서비스 프로젝트는 웹 및 작업자 역할의 논리 컨테이너 역할을 하며 프로젝트의 서비스 정의(.csdef) 및 서비스 구성(.cscfg) 파일이 포함되어 있습니다.
새 Azure 서비스 프로젝트를 만들려면 관리자로 Azure PowerShell을 실행하고 다음 명령을 실행합니다.
PS C:\>New-AzureServiceProject myProject
이 명령은 웹 및 작업자 역할을 추가할 수 있는 새 디렉터리(myProject
)를 만듭니다.
PHP 웹 또는 작업자 역할 추가
PHP 웹 역할을 프로젝트에 추가하려면 프로젝트의 루트 디렉터리에서 다음 명령을 실행합니다.
PS C:\myProject> Add-AzurePHPWebRole roleName
작업자 역할의 경우에는 다음 명령을 사용합니다.
PS C:\myProject> Add-AzurePHPWorkerRole roleName
참고 항목
roleName
매개 변수는 선택 사항입니다. 생략되면 역할 이름이 자동으로 생성됩니다. 첫 번째로 만들어진 웹 역할은 WebRole1
, 두 번째는 WebRole2
이 되는 식입니다. 첫 번째로 만들어진 작업자 역할은 WorkerRole1
, 두 번째는 WorkerRole2
이 되는 식입니다.
고유 PHP 런타임 사용
기본 제공 PHP 런타임을 선택하여 이전에 설명대로 구성하는 대신 고유 PHP 런타임을 제공할 경우도 있습니다. 예를 들어, 개발 환경에서 사용하는 웹 또는 작업자 역할에서 동일한 PHP 런타임을 사용할 수 있습니다. 이 프로세스를 사용하면 보다 쉽게 애플리케이션 동작이 프로덕션 환경에서 동일하게 유지되도록 할 수 있습니다.
고유 PHP 런타임을 사용하도록 웹 역할 구성
사용자가 제공하는 PHP 런타임을 사용하도록 웹 역할을 구성하려면 아래 단계를 따릅니다.
이 문서의 앞부분에서 설명한 대로 Azure 서비스 프로젝트를 만들고 PHP 웹 역할을 추가합니다.
웹 역할의 루트 디렉터리에 있는
bin
폴더에php
폴더를 만든 후 PHP 런타임(모든 바이너리, 구성 파일, 하위 폴더 등)을php
폴더에 추가합니다.(선택 사항) PHP 런타임이 Microsoft Drivers for PHP for SQL Server를 사용하면 웹 역할이 프로비전될 때 SQL Server Native Client 2012를 설치하도록 웹 역할을 구성해야 합니다. 이렇게 하려면 sqlncli.msi x64 설치 관리자를 웹 역할의 루트 디렉터리에 있는
bin
폴더에 추가합니다. 다음 단계에 설명되어 있는 시작 스크립트는 역할이 프로비전될 때 설치 관리자를 자동으로 실행합니다. PHP 런타임이 Microsoft Drivers for PHP for SQL Server를 사용하지 않으면 다음 단계의 스크립트에서 다음 줄을 제거할 수 있습니다.msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
PHP 런타임을 사용하여
.php
페이지에 대한 요청을 처리하도록 IIS(인터넷 정보 서비스)를 구성하는 시작 작업을 정의합니다. 이렇게 하려면 텍스트 편집기에서setup_web.cmd
파일(웹 역할 루트 디렉터리의bin
파일에 있음)을 열고 그 내용을 다음 스크립트로 바꿉니다.@ECHO ON cd "%~dp0" if "%EMULATED%"=="true" exit /b 0 msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES SET PHP_FULL_PATH=%~dp0php\php-cgi.exe SET NEW_PATH=%PATH%;%RoleRoot%\base\x86 %WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%PHP_FULL_PATH%',maxInstances='12',idleTimeout='60000',activityTimeout='3600',requestTimeout='60000',instanceMaxRequests='10000',protocol='NamedPipe',flushNamedPipe='False']" /commit:apphost %WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%PHP_FULL_PATH%'].environmentVariables.[name='PATH',value='%NEW_PATH%']" /commit:apphost %WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%PHP_FULL_PATH%'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS',value='10000']" /commit:apphost %WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/handlers /+"[name='PHP',path='*.php',verb='GET,HEAD,POST',modules='FastCgiModule',scriptProcessor='%PHP_FULL_PATH%',resourceType='Either',requireAccess='Script']" /commit:apphost %WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /"[fullPath='%PHP_FULL_PATH%'].queueLength:50000"
웹 서버의 루트 디렉터리가 되는 웹 역할의 루트 디렉터리에 애플리케이션 파일을 추가합니다.
애플리케이션 게시 섹션에 설명된 대로 애플리케이션을 게시합니다.
참고 항목
download.ps1
스크립트(웹 역할 루트 디렉터리의 bin
폴더에 있음)는 고유 PHP 런타임을 사용하기 위해 이전 단계를 따른 후에 삭제할 수 있습니다.
고유 PHP 런타임을 사용하도록 작업자 역할 구성
제공하는 PHP 런타임을 사용하도록 작업자 역할을 구성하려면 다음 단계를 따르세요.
이 문서의 앞부분에서 설명한 대로 Azure 서비스 프로젝트를 만들고 PHP 작업자 역할을 추가합니다.
작업자 역할의 루트 디렉터리에
php
폴더를 만든 후 PHP 런타임(모든 바이너리, 구성 파일, 하위 폴더 등)을php
폴더에 추가합니다.(선택 사항) PHP 런타임이 Microsoft Drivers for PHP for SQL Server를 사용하면 작업자 역할이 프로비전될 때 SQL Server Native Client 2012를 설치하도록 작업자 역할을 구성해야 합니다. 이렇게 하려면 sqlncli.msi x64 설치 관리자를 작업자 역할의 루트 디렉터리에 추가합니다. 다음 단계에 설명되어 있는 시작 스크립트는 역할이 프로비전될 때 설치 관리자를 자동으로 실행합니다. PHP 런타임이 Microsoft Drivers for PHP for SQL Server를 사용하지 않으면 다음 단계의 스크립트에서 다음 줄을 제거할 수 있습니다.
msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
역할이 프로비전될 때
php.exe
실행 파일을 작업자 역할의 PATH 환경 변수에 추가하는 시작 작업을 정의합니다. 이렇게 하려면 텍스트 편집기에서setup_worker.cmd
파일(작업자 역할의 루트 디렉터리에 있음)을 열고 그 내용을 다음 스크립트로 바꿉니다.@echo on cd "%~dp0" echo Granting permissions for Network Service to the web root directory... icacls ..\ /grant "Network Service":(OI)(CI)W if %ERRORLEVEL% neq 0 goto error echo OK if "%EMULATED%"=="true" exit /b 0 msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES setx Path "%PATH%;%~dp0php" /M if %ERRORLEVEL% neq 0 goto error echo SUCCESS exit /b 0 :error echo FAILED exit /b -1
애플리케이션 파일을 작업자 역할의 루트 디렉터리에 추가합니다.
애플리케이션 게시 섹션에 설명된 대로 애플리케이션을 게시합니다.
컴퓨팅 및 스토리지 에뮬레이터에서 애플리케이션 실행
Azure 에뮬레이터는 클라우드에 배포하기 전에 Azure 애플리케이션을 테스트할 수 있는 로컬 환경을 제공합니다. 에뮬레이터와 Azure 환경 사이에는 약간의 차이가 있습니다. 이러한 차이점을 이해하기 쉽도록 개발 및 테스트에 Azure Storage 에뮬레이터 사용을 참조하세요.
컴퓨팅 에뮬레이터를 사용하려면 PHP를 로컬로 설치해야 합니다. 컴퓨팅 에뮬레이터는 로컬 PHP 설치를 사용하여 애플리케이션을 실행합니다.
에뮬레이터에서 프로젝트를 실행하려면 프로젝트의 루트 디렉터리에서 다음 명령을 실행합니다.
PS C:\MyProject> Start-AzureEmulator
다음 샘플 출력은 표시되는 내용과 유사합니다.
Creating local package...
Starting Emulator...
Role is running at http://127.0.0.1:81
Started
웹 브라우저를 열고 출력에 표시된 로컬 주소(앞에 표시된 예제 출력의 http://127.0.0.1:81
)로 이동하면 에뮬레이터에서 실행 중인 애플리케이션을 볼 수 있습니다.
에뮬레이터를 중지하려면 다음 명령을 실행합니다.
PS C:\MyProject> Stop-AzureEmulator
애플리케이션 게시
애플리케이션을 게시하려면 먼저 Import-AzurePublishSettingsFile cmdlet을 사용하여 게시 설정을 가져와야 합니다. 그런 다음 Publish-AzureServiceProject cmdlet을 사용하여 애플리케이션을 게시합니다. 로그인에 대한 자세한 내용은 Azure PowerShell을 설치 및 구성하는 방법을 참조하세요.
다음 단계
자세한 내용은 PHP 개발자 센터를 참조하세요.