Share via


PHP-alkalmazás konfigurálása Azure-alkalmazás szolgáltatáshoz

PHP-verzió megjelenítése

Ez az útmutató bemutatja, hogyan konfigurálhatja PHP-webalkalmazásait, mobil háttérrendszereit és API-alkalmazásait Azure-alkalmazás Szolgáltatásban.

Ez az útmutató alapvető fogalmakat és utasításokat tartalmaz az appokat az App Service-ben üzembe helyező PHP-fejlesztők számára. Ha még soha nem használta a Azure-alkalmazás szolgáltatást, először kövesse a PHP rövid útmutatóját és a PHP-t a MySQL-oktatóanyaggal.

Az aktuális PHP-verzió megjelenítéséhez futtassa a következő parancsot a Cloud Shellben:

az webapp config show --resource-group <resource-group-name> --name <app-name> --query phpVersion

Megjegyzés:

Egy fejlesztési pont kezeléséhez adja meg a paramétert --slot , majd a pont nevét.

Az összes támogatott PHP-verzió megjelenítéséhez futtassa a következő parancsot a Cloud Shellben:

az webapp list-runtimes --os windows | grep PHP

Ez az útmutató bemutatja, hogyan konfigurálhatja PHP-webalkalmazásait, mobil háttérrendszereit és API-alkalmazásait Azure-alkalmazás Szolgáltatásban.

Ez az útmutató alapvető fogalmakat és utasításokat tartalmaz az appokat az App Service-ben üzembe helyező PHP-fejlesztők számára. Ha még soha nem használta a Azure-alkalmazás szolgáltatást, először kövesse a PHP rövid útmutatóját és a PHP-t a MySQL-oktatóanyaggal.

Az aktuális PHP-verzió megjelenítéséhez futtassa a következő parancsot a Cloud Shellben:

az webapp config show --resource-group <resource-group-name> --name <app-name> --query linuxFxVersion

Megjegyzés:

Egy fejlesztési pont kezeléséhez adja meg a paramétert --slot , majd a pont nevét.

Az összes támogatott PHP-verzió megjelenítéséhez futtassa a következő parancsot a Cloud Shellben:

az webapp list-runtimes --os linux | grep PHP

PHP-verzió beállítása

Futtassa a következő parancsot a Cloud Shellben a PHP-verzió 8.1-esre való beállításához:

az webapp config set --resource-group <resource-group-name> --name <app-name> --php-version 8.1

Futtassa a következő parancsot a Cloud Shellben a PHP-verzió 8.1-esre való beállításához:

az webapp config set --resource-group <resource-group-name> --name <app-name> --linux-fx-version "PHP|8.1"

A Composer futtatása

Ha azt szeretné, hogy az App Service az üzembe helyezéskor futtassa a Composert , a legegyszerűbb módszer a Composer felvétele az adattárba.

A helyi terminálablakból módosítsa a könyvtárat az adattár gyökerére, és kövesse a letöltéskor megjelenő utasításokat a Composer letöltéséhez a composer.phar könyvtárgyökérre való letöltéséhez.

Futtassa a következő parancsokat (telepítenie kell az npm-et ):

npm install kuduscript -g
kuduscript --node --scriptType bash --suppressPrompt

Az adattár gyökérkönyvtára két további fájllal rendelkezik: .deployment és deploy.sh.

Nyissa meg a deploy.sh , és keresse meg a Deployment szakaszt, amely így néz ki:

##################################################################################################################################
# Deployment
# ----------

Adja hozzá a szükséges eszköz futtatásához szükséges kódszakaszt a Deployment szakasz végén:

# 4. Use composer
echo "$DEPLOYMENT_TARGET"
if [ -e "$DEPLOYMENT_TARGET/composer.json" ]; then
  echo "Found composer.json"
  pushd "$DEPLOYMENT_TARGET"
  php composer.phar install $COMPOSER_ARGS
  exitWithMessageOnError "Composer install failed"
  popd
fi

Véglegesítse az összes módosítást, és telepítse a kódot a Git vagy a Zip használatával , engedélyezve a buildautomatizálást. A Composernek most az üzembe helyezés automatizálása részeként kell futnia.

Grunt/Bower/Gulp futtatása

Ha azt szeretné, hogy az App Service az üzembe helyezéskor népszerű automatizálási eszközöket (például Grunt, Bower vagy Gulp) futtasson, egyéni üzembehelyezési szkriptet kell megadnia. Az App Service akkor futtatja ezt a szkriptet, ha a Gittel vagy a Zip-alapú üzembe helyezéstengedélyezi a buildautomatizálással.

Ahhoz, hogy az adattár futtathassa ezeket az eszközöket, hozzá kell adnia őket a package.json függőségeihez . Például:

"dependencies": {
  "bower": "^1.7.9",
  "grunt": "^1.0.1",
  "gulp": "^3.9.1",
  ...
}

Helyi terminálablakból módosítsa a könyvtárat az adattár gyökerére, és futtassa a következő parancsokat (telepítenie kell az npm-et ):

npm install kuduscript -g
kuduscript --node --scriptType bash --suppressPrompt

Az adattár gyökérkönyvtára két további fájllal rendelkezik: .deployment és deploy.sh.

Nyissa meg a deploy.sh , és keresse meg a Deployment szakaszt, amely így néz ki:

##################################################################################################################################
# Deployment
# ----------

Ez a szakasz futással npm install --productionvégződik. Adja hozzá a szükséges eszköz futtatásához szükséges kódszakaszt a Deployment szakasz végén:

Tekintse meg a MEAN.js mintában látható példát, ahol az üzembehelyezési szkript egy egyéni npm install parancsot is futtat.

Bower

Ez a kódrészlet fut bower install.

if [ -e "$DEPLOYMENT_TARGET/bower.json" ]; then
  cd "$DEPLOYMENT_TARGET"
  eval ./node_modules/.bin/bower install
  exitWithMessageOnError "bower failed"
  cd - > /dev/null
fi

Nyelő

Ez a kódrészlet fut gulp imagemin.

if [ -e "$DEPLOYMENT_TARGET/gulpfile.js" ]; then
  cd "$DEPLOYMENT_TARGET"
  eval ./node_modules/.bin/gulp imagemin
  exitWithMessageOnError "gulp failed"
  cd - > /dev/null
fi

Grunt

Ez a kódrészlet fut grunt.

if [ -e "$DEPLOYMENT_TARGET/Gruntfile.js" ]; then
  cd "$DEPLOYMENT_TARGET"
  eval ./node_modules/.bin/grunt
  exitWithMessageOnError "Grunt failed"
  cd - > /dev/null
fi

Testreszabott építési automatizálás

Ha az alkalmazást a Git használatával helyezi üzembe, vagy ha engedélyezve van a buildautomatizálással rendelkező zip-csomagok használata, az App Service buildautomatizálása az alábbi sorrendben halad végig:

  1. Futtassa az egyéni szkriptet, ha a megadott.PRE_BUILD_SCRIPT_PATH
  2. Run php composer.phar install.
  3. Futtassa az egyéni szkriptet, ha a megadott.POST_BUILD_SCRIPT_PATH

PRE_BUILD_COMMAND és POST_BUILD_COMMAND alapértelmezés szerint üres környezeti változók. Az előzetes buildelési parancsok futtatásához definiálja a következőt PRE_BUILD_COMMAND: . A buildelés utáni parancsok futtatásához definiálja a következőt POST_BUILD_COMMAND:

Az alábbi példa a parancsok sorozatának két változóját adja meg vesszővel elválasztva.

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings PRE_BUILD_COMMAND="echo foo, scripts/prebuild.sh"
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings POST_BUILD_COMMAND="echo foo, scripts/postbuild.sh"

A buildautomatizálás testreszabásához további környezeti változókért lásd az Oryx konfigurációját.

További információ arról, hogy az App Service hogyan futtatja és fejleszti a PHP-alkalmazásokat Linuxon, tekintse meg az Oryx dokumentációját: A PHP-alkalmazások észlelése és felépítése.

Indítás testreszabása

Ha szeretné, futtathat egy egyéni parancsot a tároló indítási idején a következő parancs futtatásával a Cloud Shellben:

az webapp config set --resource-group <resource-group-name> --name <app-name> --startup-file "<custom-command>"

Access environment variables

Az App Service-szel az alkalmazás kódján kívül is megadhatja az alkalmazások beállításait. Ezután a standard getenv() mintával érheti el őket. Például egy DB_HOST nevű alkalmazásbeállítás hozzáféréséhez használja a következő kódot:

getenv("DB_HOST")

Webhely gyökerének módosítása

Az Ön által választott webes keretrendszer egy alkönyvtárat használhat a webhely gyökérkönyvtáraként. A Laravel például a nyilvános/ alkönyvtárat használja a webhely gyökérkönyvtáraként.

A webhelygyökér testreszabásához állítsa be az alkalmazás virtuális alkalmazás elérési útját a az resource update parancs használatával. Az alábbi példa a webhely gyökerét az adattár nyilvános vagy alkönyvtárára állítja.

az resource update --name web --resource-group <group-name> --namespace Microsoft.Web --resource-type config --parent sites/<app-name> --set properties.virtualApplications[0].physicalPath="site\wwwroot\public" --api-version 2015-06-01

Alapértelmezés szerint az Azure App Service virtuális alkalmazáselérési gyökérútvonala (/) a telepített alkalmazásfájlok gyökérkönyvtárára (sites\wwwroot) mutat.

Az Ön által választott webes keretrendszer egy alkönyvtárat használhat a webhely gyökérkönyvtáraként. A Laravel például az public/ alkönyvtárat használja a webhely gyökérkönyvtáraként.

Az App Service alapértelmezett PHP-rendszerképe az Nginxet használja, és az Nginx-kiszolgáló irányelvvel való konfigurálásával módosíthatja a root webhelygyökerét. Ez a példakonfigurációs fájl az alábbi kódrészleteket tartalmazza, amelyek módosítják az root irányelvet:

server {
    #proxy_cache cache;
    #proxy_cache_valid 200 1s;
    listen 8080;
    listen [::]:8080;
    root /home/site/wwwroot/public; # Changed for Laravel

    location / {            
        index  index.php index.html index.htm hostingstart.html;
        try_files $uri $uri/ /index.php?$args; # Changed for Laravel
    }
    ...

Az alapértelmezett tároló az /etc/nginx/sites-available/default helyen található konfigurációs fájlt használja. Ne feledje, hogy a fájlban végzett módosítások törlődnek az alkalmazás újraindításakor. Ha olyan módosítást szeretne végezni, amely az alkalmazás újraindításakor érvényes, adjon hozzá egy egyéni indítási parancsot, például az alábbi példában:

cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload

Ez a parancs lecseréli az alapértelmezett Nginx-konfigurációs fájlt egy alapértelmezett nevű fájlra az adattár gyökérkönyvtárában, és újraindítja az Nginxet.

Detect HTTPS session

Az App Service-ben a TLS/SSL-leállítás a hálózati terheléselosztóknál történik, így minden HTTPS-kérés titkosítatlan HTTP-kérésként éri el az alkalmazást. Ha az alkalmazáslogikának ellenőriznie kell, hogy a felhasználói kérések titkosítva vannak-e, vizsgálja meg az X-Forwarded-Proto fejlécet.

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
// Do something when HTTPS is used
}

A népszerű webes keretrendszerek lehetővé teszik a X-Forwarded-* szabványos alkalmazásminta információinak elérését. A CodeIgniterben a is_https() alapértelmezés szerint ellenőrzi az értékeket X_FORWARDED_PROTO .

A php.ini beállításainak testreszabása

Ha módosítania kell a PHP-telepítést, az alábbi lépések végrehajtásával módosíthatja a php.ini irányelvek bármelyikét.

Megjegyzés:

A PHP-verzió és az aktuális php.ini konfiguráció megtekintésének legjobb módja a phpinfo() meghívása az alkalmazásban.

Nem PHP_INI_SYSTEM irányelvek testreszabása

Az PHP_INI_UStandard kiadás R, PHP_INI_PERDIR és PHP_INI_ALL irányelvek testreszabásához (lásd a php.ini irányelveket) adjon hozzá egy .user.ini fájlt az alkalmazás gyökérkönyvtárához.

Adja hozzá a konfigurációs beállításokat a .user.ini fájlhoz ugyanazzal a szintaxissal, amelyet a php.ini fájlban használna. Ha például be szeretné kapcsolni a display_errors beállítást, és 10M értékre szeretné állítani upload_max_filesize a beállítást, a .user.ini fájl a következő szöveget tartalmazná:

 ; Example Settings
 display_errors=On
 upload_max_filesize=10M

 ; Write errors to d:\home\LogFiles\php_errors.log
 ; log_errors=On

Telepítse újra az alkalmazást a módosításokkal, és indítsa újra.

A fájlhasználat .user.ini alternatívaként az alkalmazásban a ini_set() használatával testre szabhatja ezeket a nem PHP_INI_SYSTEM irányelveket.

Az PHP_INI_UStandard kiadás R, PHP_INI_PERDIR és PHP_INI_ALL linuxos webalkalmazásokra vonatkozó irányelvek( például upload_max_filesize és expose_php) testreszabásához használjon egyéni "ini" fájlt. SSH-munkamenetben is létrehozhatja.

  1. Nyissa meg a KUDU-webhelyet https://< sitename.scm.azurewebsites.net>.
  2. A felső menüben válassza a Bash vagy az SSH lehetőséget.
  3. A Bash/SSH-ban nyissa meg a "/home/site/wwwroot" könyvtárat.
  4. Hozzon létre egy "ini" nevű könyvtárat (például mkdir ini).
  5. Módosítsa az aktuális munkakönyvtárat az imént létrehozott "ini" mappára.

A beállítások hozzáadásához létre kell hoznia egy "ini" fájlt. Ebben a példában a "extensions.ini" kifejezést használjuk. Nincsenek olyan fájlszerkesztők, mint a Vi, a Vim vagy a Nano, ezért echo használatával adja hozzá a beállításokat a fájlhoz. Módosítsa a "upload_max_filesize" 2 M-ről 50M-re. A következő paranccsal adja hozzá a beállítást, és hozzon létre egy "extensions.ini" fájlt, ha még nem létezik.

/home/site/wwwroot/ini>echo "upload_max_filesize=50M" >> extensions.ini
/home/site/wwwroot/ini>cat extensions.ini

upload_max_filesize=50M

/home/site/wwwroot/ini>

Ezután lépjen az Azure Portalra, és adjon hozzá egy alkalmazásbeállítást az imént létrehozott "ini" könyvtár vizsgálatához, hogy alkalmazza a módosítást upload_max_filesize.

  1. Nyissa meg az Azure Portalt , és válassza ki az App Service Linux PHP-alkalmazását.
  2. Válassza az alkalmazáshoz tartozó Alkalmazás Gépház lehetőséget.
  3. Az Alkalmazásbeállítások szakaszban válassza az + Új beállítás hozzáadása lehetőséget.
  4. Az alkalmazásbeállítás neveként írja be a "PHP_INI_SCAN_DIR" értéket, és az értékhez írja be a "/home/site/wwwroot/ini" értéket.
  5. Válassza a Mentés gombot.

Megjegyzés:

Ha újrafordított egy PHP-bővítményt, például a GD-t, kövesse a PHP-bővítmények újrafordításának lépéseit a Azure-alkalmazás szolgáltatásban – PHP-bővítmények hozzáadása

PHP_INI_SYSTEM irányelvek testreszabása

A PHP_INI_SYSTEM irányelvek testreszabásához (lásd a php.ini irányelveket) használja az PHP_INI_SCAN_DIR alkalmazásbeállítást.

Először futtassa a következő parancsot a Cloud Shellben egy alkalmazásbeállítás PHP_INI_SCAN_DIRhozzáadásához:

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings PHP_INI_SCAN_DIR="d:\home\site\ini"

Lépjen a Kudu konzolra (https://<app-name>.scm.azurewebsites.net/DebugConsole) és lépjen a következőre d:\home\site: .

Hozzon létre egy könyvtárat a hívásban d:\home\siteini, majd hozzon létre egy .ini fájlt a d:\home\site\ini könyvtárban (például settings.ini) a testreszabni kívánt irányelvekkel. Használja ugyanazt a szintaxist, amelyet egy php.ini fájlban használna.

A expose_php értékének módosításához például futtassa a következő parancsokat:

cd /home/site
mkdir ini
echo "expose_php = Off" >> ini/setting.ini

A módosítások érvénybe lépéséhez indítsa újra az alkalmazást.

A PHP_INI_SYSTEM irányelvek testreszabásához (lásd a php.ini irányelveket) nem használhatja a .htaccess megközelítést. Az App Service egy külön mechanizmust biztosít az PHP_INI_SCAN_DIR alkalmazásbeállítás használatával.

Először futtassa a következő parancsot a Cloud Shellben egy alkalmazásbeállítás PHP_INI_SCAN_DIRhozzáadásához:

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings PHP_INI_SCAN_DIR="/usr/local/etc/php/conf.d:/home/site/ini"

/usr/local/etc/php/conf.d az alapértelmezett könyvtár, ahol a php.ini létezik. /home/site/ini az az egyéni könyvtár, amelyben egyéni .ini fájlt fog hozzáadni. Az értékeket egy .:

Lépjen a webes SSH-munkamenetre a Linux-tárolóval (https://<app-name>.scm.azurewebsites.net/webssh/host).

Hozzon létre egy könyvtárat a hívásban /home/siteini, majd hozzon létre egy .ini fájlt a /home/site/ini könyvtárban (például settings.ini) a testreszabni kívánt irányelvekkel. Használja ugyanazt a szintaxist, amelyet egy php.ini fájlban használna.

Tipp.

Az App Service beépített Linux-tárolóiban a /home megmaradó megosztott tárolóként van használva.

A expose_php értékének módosításához például futtassa a következő parancsokat:

cd /home/site
mkdir ini
echo "expose_php = Off" >> ini/setting.ini

A módosítások érvénybe lépéséhez indítsa újra az alkalmazást.

PHP-bővítmények engedélyezése

A beépített PHP-telepítések tartalmazzák a leggyakrabban használt bővítményeket. A php.ini direktívák testreszabásával megegyező módon engedélyezheti a további bővítményeket.

Megjegyzés:

A PHP-verzió és az aktuális php.ini konfiguráció megtekintésének legjobb módja a phpinfo() meghívása az alkalmazásban.

További bővítmények engedélyezéséhez kövesse az alábbi lépéseket:

Adjon hozzá egy könyvtárat bin az alkalmazás gyökérkönyvtárához, és helyezze bele a .dll bővítményfájlokat (például mongodb.dll). Győződjön meg arról, hogy a bővítmények kompatibilisek az Azure PHP-verziójával, és VC9 és nem szálbiztos (nts) kompatibilisek.

A módosítások üzembe helyezése.

Kövesse az PHP_INI_SYSTEM irányelvek testreszabása című szakasz lépéseit, és adja hozzá a bővítményeket az egyéni .ini fájlhoz a kiterjesztéssel vagy zend_extension irányelvekkel.

extension=d:\home\site\wwwroot\bin\mongodb.dll
zend_extension=d:\home\site\wwwroot\bin\xdebug.dll

A módosítások érvénybe lépéséhez indítsa újra az alkalmazást.

A beépített PHP-telepítések tartalmazzák a leggyakrabban használt bővítményeket. A php.ini direktívák testreszabásával megegyező módon engedélyezheti a további bővítményeket.

Megjegyzés:

A PHP-verzió és az aktuális php.ini konfiguráció megtekintésének legjobb módja a phpinfo() meghívása az alkalmazásban.

További bővítmények engedélyezéséhez kövesse az alábbi lépéseket:

Adjon hozzá egy könyvtárat bin az alkalmazás gyökérkönyvtárához, és helyezze bele a .so bővítményfájlokat (például mongodb.so). Győződjön meg arról, hogy a bővítmények kompatibilisek az Azure PHP-verziójával, és VC9 és nem szálbiztos (nts) kompatibilisek.

A módosítások üzembe helyezése.

Kövesse az PHP_INI_SYSTEM irányelvek testreszabása című szakasz lépéseit, és adja hozzá a bővítményeket az egyéni .ini fájlhoz a kiterjesztéssel vagy zend_extension irányelvekkel.

extension=/home/site/wwwroot/bin/mongodb.so
zend_extension=/home/site/wwwroot/bin/xdebug.so

A módosítások érvénybe lépéséhez indítsa újra az alkalmazást.

Access diagnostic logs

A standard error_log() segédprogrammal diagnosztikai naplókat készíthet a Azure-alkalmazás szolgáltatásban való megjelenítéshez.

Az alkalmazáskódból létrehozott konzolnaplók App Service-ben történő eléréséhez kapcsolja be a diagnosztikai naplózást a következő parancs a Cloud Shellben történő futtatásával:

az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose

A --level lehetséges értékei: Error, Warning, Info és Verbose. Minden szint tartalmazza az azt megelőző szintet. Például: az Error csak a hibaüzeneteket tartalmazza, a Verbose pedig az összes üzenetet.

Ha a diagnosztikai naplózás be van kapcsolva, futtassa a következő parancsot a naplóstream megtekintéséhez:

az webapp log tail --resource-group <resource-group-name> --name <app-name>

Ha nem jelennek meg azonnal a konzolnaplófájlok, ellenőrizze ismét 30 másodperc múlva.

Megjegyzés:

A naplófájlokat a böngészőből is megtekintheti a következő címen: https://<app-name>.scm.azurewebsites.net/api/logs/docker.

A Ctrl+C billentyűparanccsal bármikor leállíthatja a naplóstreamelést.

A tárolón belülről létrehozott konzolnaplókhoz hozzáférhet.

Először kapcsolja be a tárolónaplózást a következő parancs futtatásával:

az webapp log config --name <app-name> --resource-group <resource-group-name> --docker-container-logging filesystem

Cserélje le és <resource-group-name> írja be <app-name> a webalkalmazásnak megfelelő neveket.

A tárolónaplózás bekapcsolása után futtassa a következő parancsot a naplóstream megtekintéséhez:

az webapp log tail --name <app-name> --resource-group <resource-group-name>

Ha nem jelennek meg azonnal a konzolnaplófájlok, ellenőrizze ismét 30 másodperc múlva.

Ha bármikor le szeretné állítani a naplóstreamelést, írja be a Ctrl C billentyűkombinációt.+

A naplófájlokat a böngészőben is megvizsgálhatja a következő helyen https://<app-name>.scm.azurewebsites.net/api/logs/docker: .

Hibaelhárítás

Ha egy működő PHP-alkalmazás másképp viselkedik az App Service-ben, vagy hibákat tapasztal, próbálkozzon a következőkkel:

  • Hozzáférés a naplóstreamhez.
  • Tesztelje az alkalmazást helyileg éles módban. Az App Service éles módban futtatja az alkalmazást, ezért gondoskodnia kell arról, hogy a projekt a várt módon működjön helyileg éles módban. For example:
    • A composer.json típustól függően különböző csomagok telepíthetők éles üzemmódra (requirevs. require-dev).
    • Egyes webes keretrendszerek eltérő módon helyezhetnek üzembe statikus fájlokat éles módban.
    • Egyes webes keretrendszerek egyéni indítási szkripteket használhatnak éles módban való futtatáskor.
  • Futtassa az alkalmazást az App Service-ben hibakeresési módban. A Laravelben például úgy konfigurálhatja az alkalmazást, hogy a hibakeresési üzeneteket éles környezetben adja ki az APP_DEBUG alkalmazás beállításávaltrue.

robots933456 a naplókban

A következő üzenet jelenhet meg a tárolónaplókban:

2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"

Az üzenet biztonságosan figyelmen kívül hagyható. /robots933456.txt egy olyan próba URL-cím, amelyet az App Service annak a vizsgálatára használ, hogy a tároló képes-e a kérések kiszolgálására. A 404-es válasz egyszerűen azt jelenti, hogy a cím nem létezik, azonban jelzi az App Service számára, hogy a tároló kifogástalan állapotú, és készen áll a kérések megválaszolására.

Következő lépések

Vagy tekintse meg a további erőforrásokat:

Környezeti változók és alkalmazásbeállítások referenciája