PHP web ve çalışan rolleri oluşturma

Genel bakış

Önemli

Cloud Services (klasik) artık yeni müşteriler için kullanımdan kaldırılmıştır ve tüm müşteriler için 31 Ağustos 2024'te kullanımdan kaldırılacaktır. Yeni dağıtımlarda yeni Azure Resource Manager tabanlı dağıtım modeli Azure Cloud Services (genişletilmiş destek) kullanılmalıdır.

Bu kılavuz, bir Windows geliştirme ortamında PHP web veya çalışan rolleri oluşturma, kullanılabilir "yerleşik" sürümlerden belirli bir PHP sürümünü seçme, PHP yapılandırmasını değiştirme, uzantıları etkinleştirme ve son olarak Azure'a dağıtma adımlarını gösterir. Ayrıca, sağladığınız php çalışma zamanını (özel yapılandırma ve uzantılarla) kullanmak için bir web veya çalışan rolünün nasıl yapılandırıldığını da açıklar.

Azure, uygulamaları çalıştırmak için üç işlem modeli sağlar: Azure Uygulaması Hizmeti, Azure Sanal Makineler ve Azure Cloud Services. Üç model de PHP'i destekler. Web ve çalışan rollerini içeren Cloud Services, hizmet olarak platform (PaaS) sağlar. Bir bulut hizmetinde web rolü, ön uç web uygulamalarını barındırmak için ayrılmış bir Internet Information Services (IIS) web sunucusu sağlar. Çalışan rolü, kullanıcı etkileşimi veya girişlerinden bağımsız olarak zaman uyumsuz, uzun süre çalışan veya kalıcı görevler çalıştırabilir.

Bu seçenekler hakkında daha fazla bilgi için bkz . Azure tarafından sağlanan işlem barındırma seçenekleri.

PHP için Azure SDK'sını indirme

PHP için Azure SDK çeşitli bileşenlerden oluşur. Bu makalede bunlardan ikisi kullanılır: Azure PowerShell ve Azure öykünücüleri. Bu iki bileşen Microsoft Web Platformu Yükleyicisi aracılığıyla yüklenebilir. Daha fazla bilgi için bkz. Azure PowerShell’i yükleme ve yapılandırma.

Cloud Services projesi oluşturma

PHP web veya çalışan rolü oluşturmanın ilk adımı bir Azure Hizmeti projesi oluşturmaktır. Azure Hizmeti projesi, web ve çalışan rolleri için mantıksal bir kapsayıcı görevi görür ve projenin hizmet tanımı (.csdef) ve hizmet yapılandırması (.cscfg) dosyalarını içerir.

Yeni bir Azure Hizmeti projesi oluşturmak için Azure PowerShell'i yönetici olarak çalıştırın ve aşağıdaki komutu çalıştırın:

PS C:\>New-AzureServiceProject myProject

Bu komut, web ve çalışan rolleri ekleyebileceğiniz yeni bir dizin (myProject) oluşturur.

PHP web veya çalışan rolleri ekleme

Projeye PHP web rolü eklemek için projenin kök dizininden aşağıdaki komutu çalıştırın:

PS C:\myProject> Add-AzurePHPWebRole roleName

Çalışan rolü için şu komutu kullanın:

PS C:\myProject> Add-AzurePHPWorkerRole roleName

Not

roleName parametresi isteğe bağlıdır. Atlanırsa rol adı otomatik olarak oluşturulur. Oluşturulan ilk web rolü olur WebRole1, ikincisi olur WebRole2ve bu şekilde devam eder. Oluşturulan ilk çalışan rolü olur WorkerRole1, ikincisi olur WorkerRole2ve bu şekilde devam eder.

Kendi PHP çalışma zamanınızı kullanma

Bazı durumlarda, yerleşik bir PHP çalışma zamanını seçip yukarıda açıklandığı gibi yapılandırmak yerine kendi PHP çalışma zamanınızı sağlamak isteyebilirsiniz. Örneğin, geliştirme ortamınızda kullandığınız bir web veya çalışan rolünde aynı PHP çalışma zamanını kullanabilirsiniz. Bu, uygulamanın üretim ortamınızdaki davranışı değiştirmemesini kolaylaştırır.

Kendi PHP çalışma zamanınızı kullanmak için bir web rolü yapılandırma

Bir web rolünü, sağladığınız bir PHP çalışma zamanını kullanacak şekilde yapılandırmak için şu adımları izleyin:

  1. Bir Azure Hizmeti projesi oluşturun ve bu konuda daha önce açıklandığı gibi bir PHP web rolü ekleyin.

  2. Web rolünüzün kök dizinindeki bin klasörde bir php klasör oluşturun ve ardından PHP çalışma zamanınızı (tüm ikili dosyalar, yapılandırma dosyaları, alt klasörler vb.) php klasöre ekleyin.

  3. (İSTEĞE BAĞLı) PHP çalışma zamanınız SQL Server için PHP için Microsoft Drivers kullanıyorsa, sağlandığında WEB rolünüzü SQL Server Native Client 2012'yi yükleyecek şekilde yapılandırmanız gerekir. Bunu yapmak için sqlncli.msi x64 yükleyicisinibin web rolünüzün kök dizinindeki klasöre ekleyin. Bir sonraki adımda açıklanan başlangıç betiği, rol sağlandığında yükleyiciyi sessizce çalıştırır. PHP çalışma zamanınız SQL Server için PHP için Microsoft Sürücüleri'ni kullanmıyorsa, sonraki adımda gösterilen betikten aşağıdaki satırı kaldırabilirsiniz:

    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
  4. Internet Information Services'i (IIS) sayfa isteklerini işlemek üzere .php PHP çalışma zamanınızı kullanacak şekilde yapılandıran bir başlangıç görevi tanımlayın. Bunu yapmak için, dosyayı (binweb rolünüzün kök dizinindeki dosyada) bir metin düzenleyicisinde açın setup_web.cmd ve içeriğini aşağıdaki betikle değiştirin:

    @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"
    
  5. Uygulama dosyalarınızı web rolünüzün kök dizinine ekleyin. Bu, web sunucusunun kök dizini olacaktır.

  6. Uygulamanızı aşağıdaki Uygulamanızı yayımlama bölümünde açıklandığı gibi yayımlayın.

Not

Betik download.ps1 (web rolünün bin kök dizininin klasöründe) kendi PHP çalışma zamanınızı kullanmak için yukarıda açıklanan adımları izledikten sonra silinebilir.

Çalışan rolünü kendi PHP çalışma zamanınızı kullanacak şekilde yapılandırma

Bir çalışan rolünü, sağladığınız bir PHP çalışma zamanını kullanacak şekilde yapılandırmak için şu adımları izleyin:

  1. Bir Azure Hizmeti projesi oluşturun ve bu konuda daha önce açıklandığı gibi bir PHP çalışan rolü ekleyin.

  2. Çalışan rolünün kök dizininde bir php klasör oluşturun ve ardından PHP çalışma zamanınızı (tüm ikili dosyalar, yapılandırma dosyaları, alt klasörler vb.) klasöre php ekleyin.

  3. (İSTEĞE BAĞLı) PHP çalışma zamanınız SQL Server için PHP için Microsoft Drivers kullanıyorsa, sağlandığında SQL Server Native Client 2012'yi yüklemek için çalışan rolünüzü yapılandırmanız gerekir. Bunu yapmak için sqlncli.msi x64 yükleyicisini çalışan rolünün kök dizinine ekleyin. Bir sonraki adımda açıklanan başlangıç betiği, rol sağlandığında yükleyiciyi sessizce çalıştırır. PHP çalışma zamanınız SQL Server için PHP için Microsoft Sürücüleri'ni kullanmıyorsa, sonraki adımda gösterilen betikten aşağıdaki satırı kaldırabilirsiniz:

    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
  4. Rol sağlandığında yürütülebilir dosyanızı php.exe çalışan rolünün PATH ortam değişkenine ekleyen bir başlangıç görevi tanımlayın. Bunu yapmak için dosyayı (çalışan rolünün kök dizininde) bir metin düzenleyicisinde açın setup_worker.cmd ve içeriğini aşağıdaki betikle değiştirin:

    @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
    
  5. Uygulama dosyalarınızı çalışan rolünüzün kök dizinine ekleyin.

  6. Uygulamanızı aşağıdaki Uygulamanızı yayımlama bölümünde açıklandığı gibi yayımlayın.

Uygulamanızı işlem ve depolama öykünücülerinde çalıştırma

Azure öykünücüleri, Azure uygulamanızı buluta dağıtmadan önce test etmek için kullanabileceğiniz yerel bir ortam sağlar. Öykünücüler ile Azure ortamı arasında bazı farklılıklar vardır. Bunu daha iyi anlamak için bkz. Geliştirme ve test için Azure Depolama Öykünücüsü'ni kullanma.

İşlem öykünücüsü kullanmak için PHP'nin yerel olarak yüklenmiş olması gerektiğini unutmayın. İşlem öykünücüsü uygulamanızı çalıştırmak için yerel PHP yüklemenizi kullanır.

Projenizi öykünücülerde çalıştırmak için projenizin kök dizininden aşağıdaki komutu yürütün:

PS C:\MyProject> Start-AzureEmulator

Şuna benzer bir çıkış görürsünüz:

Creating local package...
Starting Emulator...
Role is running at http://127.0.0.1:81
Started

Bir web tarayıcısı açıp çıktıda gösterilen yerel adrese göz atarak (http://127.0.0.1:81 yukarıdaki örnek çıktıda) uygulamanızın öykünücüde çalıştığını görebilirsiniz.

Öykünücüleri durdurmak için şu komutu yürütün:

PS C:\MyProject> Stop-AzureEmulator

Uygulamanızı yayımlama

Uygulamanızı yayımlamak için önce Import-AzurePublish Ayarlar File cmdlet'ini kullanarak yayımlama ayarlarınızı içeri aktarmanız gerekir. Ardından Publish-AzureServiceProject cmdlet'ini kullanarak uygulamanızı yayımlayabilirsiniz. Oturum açma hakkında bilgi için bkz . Azure PowerShell'i yükleme ve yapılandırma.

Sonraki adımlar

Daha fazla bilgi için bkz . PHP Geliştirici Merkezi.