我使用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。
你知道它可以来自哪里吗?
答案 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