为什么我要删除当前和版本以使Capistrano在nginx上工作?

时间:2016-02-23 13:33:33

标签: nginx capistrano capistrano3 capifony

我使用Capistrano 3及其插件capistrano / symfony在Web服务器上部署我的Symfony应用程序。这个服务器在Debian 8下使用Nginx。

当我运行cap prod deploy时,脚本可以运行。我可以在/ var / www / myapp / releases上看到我的新版本。 / var / www / myapp / current是指向我最新版本的符号链接。

但是当我访问我的应用程序时,它仍然可以提供旧版本。我试图重启nginx,但问题仍然存在。

唯一的解决方案"我发现在运行Capistrano部署之前删除/ var / www / myapp / current和/ var / www / myapp / releases。

你知道它可以来自哪里吗?

1 个答案:

答案 0 :(得分:2)

这通常不是nginx问题,而是PHP缓存(opcache,realpath等)。所以你可以手动删除旧文件夹(无聊),编写clear-all-php-caches脚本(结果可能会有所不同)或者将php重启任务添加到Capistrano 3部署过程中(我使用php-fpm进行CentOS 7示例):

namespace :deploy do
...
  desc 'Restart application'
  task :restart do
    on roles(:app), in: :sequence, wait: 5 do
        sudo 'service php-fpm restart'
    end
  end
...
end