我需要在生产服务器中更新源文件(从存储库中提取和更新),运行迁移并重新生成缓存资产。
Symfony 2中是否有任何机制可以安全地执行此操作?比如将网站置于“维护模式”(应该抛出503)或其他什么东西?
答案 0 :(得分:5)
我刚刚找到了Symfony 2的Bundle,它在控制台中为您提供了2个额外的命令,使您的应用程序进入维护模式。 在这里:https://github.com/lexik/LexikMaintenanceBundle
答案 1 :(得分:3)
我一直在努力决定如何实现这一点。一方面,Symfony2提供了不错的prod缓存,所以如果你没有破坏性地修改你的数据库模式(删除列或表等),你可能只需更改模式,从你的repo部署,然后清除你的prod就可以逃脱缓存。这就是我大部分时间处理事情的方式。
另一方面,如果你想进入维护模式,你需要一个对框架负载最小的解决方案(也就是说,你可能不想启动内核),或者你'无论如何都要打败这个目的:当你捣乱的时候把负担从框架上移开。
如果是我,我可能会写一个简单的维护脚本,只设置一个503标题,可能会提供一些静态html(从我的网站模板中生成)并将其发送回用户,然后使用一些条件逻辑在我的app.php
中,当我应该处于维护模式时使用它。这很难看,但它确实有效。
答案 2 :(得分:1)
不确定如何在一个较大的网站上进行此操作,用户可能处于某种交易中(例如购物),但对于较小的网站,您不能只使用.htaccess文件(假设这是你的根目录的web目录,重定向到某个维护页面,而不是重定向到app.php。
答案 3 :(得分:1)
我可以建议使用部署程序(http://deployer.org/)来部署Symfony2应用程序。这样您就不需要维护页面了。该工具附带了symfony2和symfony3模板。 它会生成您的资产,预热缓存并跟踪您的发布目录。它也很容易回滚到以前的版本。 有一个"当前" -symlink总是指向您当前的发布目录。如果发布部署完成,则此链接将更新到新创建的发布目录。
关于学说迁移,您需要为此编写自定义任务。
答案 4 :(得分:0)
请查看capifony http://capifony.org/
它对Symfony2有很好的支持。