【问题标题】:Symfony cache:clear in Azure web app with GitHub ActionsSymfony 缓存:使用 GitHub Actions 在 Azure Web 应用程序中清除
【发布时间】:2022-02-13 03:10:14
【问题描述】:

我正在将 symfony 应用程序部署到 Azure Linux PHP 7.4 Web 应用程序。我使用How to archive files in artifact for github workflow actions in order to fix this warning? 中建议的方法来简化部署。

所以一切都运行良好,但偶尔网站会失败。我追踪到了一个陈旧的缓存。要解决此问题,我必须使用 SSH 连接到 Web 应用程序并清除缓存

$ php bin/console cache:clear

详细查看 Github 操作构建和部署日志,我看到在构建 VM 上执行了 cache:clear,这没有帮助。

我正在使用添加了 zip/unzip 步骤的标准 php 构建和部署脚本...

# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions

name: Build and deploy PHP app to Azure Web App - xxx

on:
  push:
    branches:
      - master
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '7.4'

      - name: Check if composer.json exists
        id: check_files
        uses: andstor/file-existence-action@v1
        with:
          files: 'composer.json'

      - name: Run composer install if composer.json exists
        if: steps.check_files.outputs.files_exists == 'true'
        run: composer validate --no-check-publish && composer install --prefer-dist --no-progress

      - name: Zip artifact for deployment
        run: zip -r release.zip * .env .htaccess public/.htaccess

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v2
        with:
          name: php-app
          path: release.zip

  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'staging'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v2
        with:
          name: php-app

      - name: Unzip artifact for deployment
        run: unzip release.zip
        
      - name: 'Deploy to Azure Web App'
        uses: azure/webapps-deploy@v2
        id: deploy-to-webapp
        with:
          app-name: 'xxxx'
          slot-name: 'staging'
          publish-profile: ${{ secrets.AZUREAPPSERVICE_xxxxx }}
          package: .

如何在部署到网络应用后让清除缓存命令起作用?

【问题讨论】:

标签: azure symfony azure-web-app-service github-actions


【解决方案1】:

对...

原来清除缓存的方法很简单。使用缓存清除命令作为“启动命令”

所以我部署和 SSH 到 Web 应用程序并检查 /home/site/wwwroot/var/cache/staging 和瞧!所有文件都是新创建的!

这件事一开始我就想到了,但它真的看起来像一个kluge。我真的想要一种更清洁的方法来做到这一点。我尝试将启动命令添加到部署脚本中,但出现此错误...

所以我无法添加启动命令,因为有发布配置文件。

那么为什么这么简单的问题要花这么长时间才能回答呢?不止一个建议的答案完全不相关。所有这些答案与我的问题的共同点是“缓存”和“php”之类的词。

【讨论】:

    【解决方案2】:

    根据上述问题陈述,我们了解到您希望在部署后清除 Web 应用缓存。

    为了实现这一点,您可以添加一个应用设置WEBSITE_LOCAL_CACHE_OPTION=Always,以帮助您清除网络应用的本地缓存。

    对于任何应用服务,其相关内容(代码文件、资源等)都托管在共享内容文件夹中,以提供应用服务的所有功能,如负载平衡等。因此,如果有 2 个虚拟机配置负载平衡,那么只有一个共享位置托管应用服务的所有内容。

    当这些 Web 应用程序引用内容文件夹时,可能会出现延迟问题(尽管 Azure 会处理大部分这些问题),这可能会稍微降低网站的性能。在这样的性能关键型应用中,我们可以利用“Azure App Service Local Cache”的特性。

    有关详细信息,请参阅 Azure App Service Local Cachethis 博客文章上的此 Azure 文档。

    【讨论】:

    • 是的,您正确理解了这个问题。但是,我无法让您的解决方案发挥作用。我为网络应用程序定义了 WEBSITE_LOCAL_CACHE_OPTION=Always 并重新启动。我通过 SSH 连接到 Web 应用程序,但缓存中仍然充满了旧垃圾。请记住,我所说的缓存是 /home/site/wwwroot/var/cache。
    猜你喜欢
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 2012-01-10
    • 2013-05-09
    • 2020-07-25
    • 1970-01-01
    相关资源
    最近更新 更多