微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 将Symfony2应用程序部署到AWS弹性Beanstalk – 后部署缓存清除

当将Symfony2应用程序部署到Elastic Beanstalk时,我需要执行手动缓存清除以使应用程序开始运行.所以,我添加一个容器命令,以在部署过程中清除prod缓存.该命令运行,但我仍然需要手动清除以使应用程序工作.

在一些挖掘之后,我发现Symfony2缓存文件本身存在绝对的路径字符串.我添加的命令运行“预部署”或应用程序文件从他们的分段文件夹(称为“/ var / app / ondeck”)移动到他们最后的休息位置(‘/ var / app / current’)之前.因此,缓存文件中的绝对路径字符串错误,并且应用程序无法加载.

此外,开发环境立即正常工作,因为它自动重建自己的缓存.生产环境是唯一受到影响的环境.

我的问题:

>有没有办法在代码移动到位后自动运行缓存清除命令?
>或者,有没有办法让Symfony2让您为缓存生成指定不同的“基本路径”?这样可以将其设置为指向正确的最终位置.

感谢大家提前:-)

出现此问题的原因是,当各种Symfony命令在作曲家安装过程和/或您自己的命令(例如,assiting:dump)结束时运行时,缓存将被填充在ondeck环境中.

解决方案是将缓存清除为部署的最后一个命令,并指定–no-warmup停止Symfony自动重新填充它,以便当环境从ondeck移动到当前时,缓存为空.在我的.ebextensions / symfony.config我有

container_commands:
  01_migrate:
    command: PHP app/console doctrine:migrations:migrate --env=prod --no-debug --no-interaction
    leader_only: true
  02_dumpassets:
    command: PHP app/console assetic:dump --env=prod --no-debug
  99_clearcache:
    command: PHP app/console cache:clear --env=prod --no-debug --no-warmup

它没有很好的记录,但您也可以在环境移动到当前后使用后部署挂钩来加热缓存.也在.ebextensions / symfony.config中:

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/01-cachewarm.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      . /opt/elasticbeanstalk/support/envvars
      cd $EB_CONfig_APP_CURRENT
      PHP app/console cache:warmup --env=prod --no-debug

原文地址:https://www.jb51.cc/php/140096.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐