Tworzenie roli internetowej i procesu roboczego PHP

Omówienie

Ważne

Usługi Cloud Services (wersja klasyczna) są teraz przestarzałe dla nowych klientów i zostaną wycofane 31 sierpnia 2024 r. dla wszystkich klientów. Nowe wdrożenia powinny używać nowego modelu wdrażania opartego na usłudze Azure Resource Manager w usługach Azure Cloud Services (wsparcie dodatkowe).

W tym przewodniku pokazano, jak utworzyć role sieci Web lub procesu roboczego PHP w środowisku deweloperów systemu Windows, wybrać określoną wersję języka PHP z dostępnych wersji "wbudowanych", zmienić konfigurację języka PHP, włączyć rozszerzenia i na koniec wdrożyć na platformie Azure. W tym artykule opisano również sposób konfigurowania roli sieci Web lub procesu roboczego w celu używania środowiska uruchomieniowego PHP (z konfiguracją niestandardową i rozszerzeniami), które udostępniasz.

Platforma Azure udostępnia trzy modele obliczeniowe do uruchamiania aplikacji: aplikacja systemu Azure Service, Azure Virtual Machines i Azure Cloud Services. Wszystkie trzy modele obsługują język PHP. Usługi w chmurze, które obejmują role sieci Web i procesu roboczego, udostępniają platformę jako usługę (PaaS). W ramach usługi w chmurze rola sieci Web zapewnia dedykowany serwer internetowy usług Internet Information Services (IIS) do hostowania aplikacji internetowych frontonu. Rola procesu roboczego może uruchamiać zadania asynchroniczne, długotrwałe lub bezterminowe niezależnie od interakcji lub danych wejściowych użytkownika.

Aby uzyskać więcej informacji na temat tych opcji, zobacz Compute hosting options provided by Azure (Opcje hostingu obliczeniowego udostępniane przez platformę Azure).

Pobierz zestaw Azure SDK dla języka PHP

Zestaw Azure SDK dla języka PHP składa się z kilku składników. W tym artykule będą używane dwa z nich: Program Azure PowerShell i emulatory platformy Azure. Te dwa składniki można zainstalować za pośrednictwem Instalator platformy Microsoft Web. Aby uzyskać więcej informacji, zobacz Instalowanie i konfigurowanie programu Azure PowerShell.

Tworzenie projektu usług Cloud Services

Pierwszym krokiem tworzenia roli internetowej lub procesu roboczego w języku PHP jest utworzenie projektu usługi platformy Azure. projekt usługi platformy Azure służy jako kontener logiczny dla ról sieci Web i procesów roboczych, który zawiera definicję usługi projektu (csdef) i pliki konfiguracji usługi (cscfg).

Aby utworzyć nowy projekt usługi platformy Azure, uruchom program Azure PowerShell jako administrator i wykonaj następujące polecenie:

PS C:\>New-AzureServiceProject myProject

To polecenie spowoduje utworzenie nowego katalogu (myProject), do którego można dodać role sieci Web i procesu roboczego.

Dodawanie ról sieci Web lub procesu roboczego w języku PHP

Aby dodać rolę internetową PHP do projektu, uruchom następujące polecenie z katalogu głównego projektu:

PS C:\myProject> Add-AzurePHPWebRole roleName

W przypadku roli procesu roboczego użyj następującego polecenia:

PS C:\myProject> Add-AzurePHPWorkerRole roleName

Uwaga

Parametr roleName jest opcjonalny. Jeśli zostanie pominięty, nazwa roli zostanie wygenerowana automatycznie. Pierwszą utworzoną rolą internetową będzie WebRole1, druga będzie mieć WebRole2wartość i tak dalej. Pierwszą utworzoną rolą procesu roboczego będzie WorkerRole1, druga będzie mieć WorkerRole2wartość i tak dalej.

Korzystanie z własnego środowiska uruchomieniowego PHP

W niektórych przypadkach zamiast wybierać wbudowane środowisko uruchomieniowe PHP i konfigurować je zgodnie z powyższym opisem, możesz udostępnić własne środowisko uruchomieniowe PHP. Na przykład możesz użyć tego samego środowiska uruchomieniowego PHP w roli sieci Web lub procesu roboczego, którego używasz w środowisku projektowym. Ułatwia to zapewnienie, że aplikacja nie zmieni zachowania w środowisku produkcyjnym.

Konfigurowanie roli internetowej do używania własnego środowiska uruchomieniowego PHP

Aby skonfigurować rolę internetową do używania podanego środowiska uruchomieniowego PHP, wykonaj następujące kroki:

  1. Utwórz projekt usługi platformy Azure i dodaj rolę internetową PHP zgodnie z opisem w tym temacie.

  2. php Utwórz folder w bin folderze, który znajduje się w katalogu głównym roli sieci Web, a następnie dodaj środowisko uruchomieniowe PHP (wszystkie pliki binarne, pliki konfiguracji, podfoldery itp.) do php folderu.

  3. (OPCJONALNIE) Jeśli środowisko uruchomieniowe PHP używa sterowników firmy Microsoft dla języka PHP dla programu SQL Server, podczas aprowizacji należy skonfigurować rolę internetową, aby zainstalować klienta SQL Server Native Client 2012 . W tym celu dodaj instalator sqlncli.msi x64 do bin folderu w katalogu głównym roli sieci Web. Skrypt uruchamiania opisany w następnym kroku będzie w trybie dyskretnym uruchamiał instalatora po aprowizacji roli. Jeśli środowisko uruchomieniowe PHP nie używa sterowników firmy Microsoft dla języka PHP dla programu SQL Server, możesz usunąć następujący wiersz ze skryptu pokazanego w następnym kroku:

    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
  4. Zdefiniuj zadanie uruchamiania, które konfiguruje usługi Internet Information Services (IIS) do obsługi żądań stron .php przy użyciu środowiska uruchomieniowego PHP. W tym celu otwórz setup_web.cmd plik (w pliku katalogu głównym roli sieci Web) w bin edytorze tekstów i zastąp jego zawartość następującym skryptem:

    @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. Dodaj pliki aplikacji do katalogu głównego roli sieci Web. Będzie to katalog główny serwera internetowego.

  6. Opublikuj aplikację zgodnie z opisem w sekcji Publikowanie aplikacji poniżej.

Uwaga

Skrypt download.ps1 (w bin folderze katalogu głównego roli sieci Web) można usunąć po wykonaniu opisanych powyżej kroków dotyczących używania własnego środowiska uruchomieniowego PHP.

Konfigurowanie roli procesu roboczego do używania własnego środowiska uruchomieniowego PHP

Aby skonfigurować rolę procesu roboczego do używania podanego środowiska uruchomieniowego PHP, wykonaj następujące kroki:

  1. Utwórz projekt usługi platformy Azure i dodaj rolę procesu roboczego PHP zgodnie z opisem w tym temacie.

  2. php Utwórz folder w katalogu głównym roli procesu roboczego, a następnie dodaj środowisko uruchomieniowe PHP (wszystkie pliki binarne, pliki konfiguracji, podfoldery itp.) do php folderu.

  3. (OPCJONALNIE) Jeśli środowisko uruchomieniowe PHP używa sterowników firmy Microsoft dla języka PHP dla programu SQL Server, należy skonfigurować rolę procesu roboczego, aby zainstalować klienta SQL Server Native Client 2012 podczas aprowizowania. W tym celu dodaj instalator sqlncli.msi x64 do katalogu głównego roli procesu roboczego. Skrypt uruchamiania opisany w następnym kroku będzie w trybie dyskretnym uruchamiał instalatora po aprowizacji roli. Jeśli środowisko uruchomieniowe PHP nie używa sterowników firmy Microsoft dla języka PHP dla programu SQL Server, możesz usunąć następujący wiersz ze skryptu pokazanego w następnym kroku:

    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
  4. Zdefiniuj zadanie uruchamiania, które dodaje plik php.exe wykonywalny do zmiennej środowiskowej PATH roli procesu roboczego po aprowizacji roli. W tym celu otwórz setup_worker.cmd plik (w katalogu głównym roli procesu roboczego) w edytorze tekstów i zastąp jego zawartość następującym skryptem:

    @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. Dodaj pliki aplikacji do katalogu głównego roli procesu roboczego.

  6. Opublikuj aplikację zgodnie z opisem w sekcji Publikowanie aplikacji poniżej.

Uruchamianie aplikacji w emulatorach obliczeniowych i magazynowych

Emulatory platformy Azure udostępniają środowisko lokalne, w którym można przetestować aplikację platformy Azure przed wdrożeniem jej w chmurze. Istnieją pewne różnice między emulatorami a środowiskiem platformy Azure. Aby to lepiej zrozumieć, zobacz Używanie emulatora usługi Azure Storage do programowania i testowania.

Należy pamiętać, że do korzystania z emulatora obliczeniowego musi być zainstalowany lokalnie język PHP. Emulator obliczeń użyje lokalnej instalacji PHP do uruchomienia aplikacji.

Aby uruchomić projekt w emulatorach, wykonaj następujące polecenie z katalogu głównego projektu:

PS C:\MyProject> Start-AzureEmulator

Zostaną wyświetlone dane wyjściowe podobne do następujących:

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

Aplikację uruchomioną w emulatorze można wyświetlić, otwierając przeglądarkę internetową i przechodząc do adresu lokalnego wyświetlanego w danych wyjściowych (http://127.0.0.1:81 w przykładowych danych wyjściowych powyżej).

Aby zatrzymać emulatory, wykonaj następujące polecenie:

PS C:\MyProject> Stop-AzureEmulator

Publikowanie aplikacji

Aby opublikować aplikację, należy najpierw zaimportować ustawienia publikowania przy użyciu polecenia cmdlet Import-AzurePublish Ustawienia File. Następnie możesz opublikować aplikację przy użyciu polecenia cmdlet Publish-AzureServiceProject . Aby uzyskać informacje na temat logowania, zobacz How to install and configure Azure PowerShell (Jak zainstalować i skonfigurować program Azure PowerShell).

Następne kroki

Aby uzyskać więcej informacji, zobacz Centrum deweloperów JĘZYKA PHP.