{"meta":{"title":"将 PHP 部署到 Azure App Service","intro":"了解如何将 PHP 项目部署到 Azure App Service 中，作为您持续部署 (CD) 工作流的一部分。","product":"GitHub Actions","breadcrumbs":[{"href":"/zh/actions","title":"GitHub Actions"},{"href":"/zh/actions/how-tos","title":"操作方法"},{"href":"/zh/actions/how-tos/deploy","title":"部署"},{"href":"/zh/actions/how-tos/deploy/deploy-to-third-party-platforms","title":"部署到第三方平台"},{"href":"/zh/actions/how-tos/deploy/deploy-to-third-party-platforms/php-to-azure-app-service","title":"PHP 在 Azure 应用服务中的应用"}],"documentType":"article"},"body":"# 将 PHP 部署到 Azure App Service\n\n了解如何将 PHP 项目部署到 Azure App Service 中，作为您持续部署 (CD) 工作流的一部分。\n\n## 先决条件\n\n在创建 GitHub Actions 工作流程之前，首先需要完成以下设置步骤：\n\n1. 创建 Azure 应用服务计划。\n\n   例如，可以使用 Azure CLI 创建新的应用服务计划：\n\n   ```bash copy\n   az appservice plan create \\\n      --resource-group MY_RESOURCE_GROUP \\\n      --name MY_APP_SERVICE_PLAN \\\n      --is-linux\n   ```\n\n   在上述命令中，将 `MY_RESOURCE_GROUP` 替换为你原有的 Azure 资源组，将 `MY_APP_SERVICE_PLAN` 替换为应用服务计划的新名称。\n\n   有关使用 [Azure CLI](https://docs.microsoft.com/cli/azure/) 的详细信息，请参阅 Azure 文档：\n\n   * 有关身份验证，请参阅“[使用 Azure CLI 登录](https://docs.microsoft.com/cli/azure/authenticate-azure-cli)”。\n   * 如果需要创建新的资源组，请参阅“[az group](https://docs.microsoft.com/cli/azure/group?view=azure-cli-latest#az_group_create)”。\n\n2. 创建 Web 应用。\n\n   例如，可以使用Azure CLI通过 PHP 运行时创建Azure App Service Web 应用：\n\n   ```bash copy\n   az webapp create \\\n       --name MY_WEBAPP_NAME \\\n       --plan MY_APP_SERVICE_PLAN \\\n       --resource-group MY_RESOURCE_GROUP \\\n       --runtime \"php|7.4\"\n   ```\n\n   在上面的命令中，将参数替换为你自己的值，其中 `MY_WEBAPP_NAME` 是 Web 应用的新名称。\n\n3. 配置 Azure 的发布配置文件并创建一个 `AZURE_WEBAPP_PUBLISH_PROFILE` 机密。\n\n   使用发布配置文件生成 Azure 部署凭据。 有关详细信息，请参阅 Azure 文档中的“[生成部署凭据](https://docs.microsoft.com/azure/app-service/deploy-github-actions?tabs=applevel#generate-deployment-credentials)”。\n\n   在你的 GitHub 存储库中，创建一个名为 `AZURE_WEBAPP_PUBLISH_PROFILE` 的机密，其中包含发布配置文件的内容。 有关创建机密的详细信息，请参阅“[在 GitHub Actions 中使用机密](/zh/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets#creating-secrets-for-a-repository)”。\n\n4. （可选）配置部署环境。 环境用于描述常规部署目标，例如 `production`、`staging` 或 `development`。\n   GitHub Actions当工作流部署到环境时，环境将显示在存储库的主页上。 可以使用环境来要求审批作业以继续，限制可以触发工作流的分支，使用自定义部署保护规则控制部署，或限制对机密的访问权限。 有关创建环境的详细信息，请参阅“[管理部署环境](/zh/actions/how-tos/deploy/configure-and-manage-deployments/manage-environments)”。\n\n## 创建工作流程\n\n完成先决条件后，可以继续创建工作流程。\n\n以下示例工作流演示如何在推送到 `main` 分支时生成 PHP 项目并将其部署到Azure App Service。\n\n确保在工作流 `AZURE_WEBAPP_NAME` 中将 `env` 密钥设置为创建的 Web 应用的名称。 如果项目的路径不是存储库根路径，请将 `AZURE_WEBAPP_PACKAGE_PATH` 更改为你的项目路径。 如果使用的 PHP 版本不是 `8.x`，请将 `PHP_VERSION` 更改为你使用的版本。\n\n如果配置了部署环境，请将 `environment` 的值更改为环境的名称。 如果未配置环境 ，或者如果工作流位于专用存储库中并且你未使用 GitHub Enterprise Cloud，请删除 `environment` 密钥。\n\n```yaml copy\n# 此工作流使用未经 GitHub 认证的操作。\n# 它们由第三方提供，并受\n# 单独的服务条款、隐私政策和支持\n# 文档。\n\n# GitHub 建议将操作固定到提交 SHA。\n# 若要获取较新版本，需要更新 SHA。\n# 还可以引用标记或分支，但该操作可能会更改而不发出警告。\n\nname: Build and deploy PHP app to Azure Web App\n\nenv:\n  AZURE_WEBAPP_NAME: MY_WEBAPP_NAME   # set this to your application's name\n  AZURE_WEBAPP_PACKAGE_PATH: '.'      # set this to the path to your web app project, defaults to the repository root\n  PHP_VERSION: '8.x'                  # set this to the PHP version to use\n\non:\n  push:\n    branches:\n      - main\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup PHP\n        uses: shivammathur/setup-php@1f2e3d4c5b6a7f8e9d0c1b2a3e4f5d6c7b8a9e0f\n        with:\n          php-version: ${{ env.PHP_VERSION }}\n\n      - name: Check if composer.json exists\n        id: check_files\n        uses: andstor/file-existence-action@2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b\n        with:\n          files: 'composer.json'\n\n      - name: Get Composer Cache Directory\n        id: composer-cache\n        if: steps.check_files.outputs.files_exists == 'true'\n        run: |\n          echo \"dir=$(composer config cache-files-dir)\" >> $GITHUB_OUTPUT\n\n      - name: Set up dependency caching for faster installs\n        uses: actions/cache@v4\n        if: steps.check_files.outputs.files_exists == 'true'\n        with:\n          path: ${{ steps.composer-cache.outputs.dir }}\n          key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}\n          restore-keys: |\n            ${{ runner.os }}-composer-\n\n      - name: Run composer install if composer.json exists\n        if: steps.check_files.outputs.files_exists == 'true'\n        run: composer validate --no-check-publish && composer install --prefer-dist --no-progress\n\n      - name: Upload artifact for deployment job\n        uses: actions/upload-artifact@v4\n        with:\n          name: php-app\n          path: .\n\n  deploy:\n    runs-on: ubuntu-latest\n    needs: build\n    environment:\n      name: 'production'\n      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}\n\n    steps:\n      - name: Download artifact from build job\n        uses: actions/download-artifact@v5\n        with:\n          name: php-app\n\n      - name: 'Deploy to Azure Web App'\n        id: deploy-to-webapp\n        uses: azure/webapps-deploy@85270a1854658d167ab239bce43949edb336fa7c\n        with:\n          app-name: ${{ env.AZURE_WEBAPP_NAME }}\n          publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}\n          package: .\n```\n\n## 其他阅读材料\n\n* 对于原始工作流模板，请参阅 GitHub Actions `azure-webapps-php.yml` 存储库中的 [](https://github.com/actions/starter-workflows/blob/main/deployments/azure-webapps-php.yml)。\n* 用于部署 Web 应用程序的是官方的 Azure [`Azure/webapps-deploy`](https://github.com/Azure/webapps-deploy) 操作。\n* 有关部署到 Azure 的 GitHub 操作工作流的更多示例，请参阅 [actions-workflow-samples](https://github.com/Azure/actions-workflow-samples) 存储库。"}