Laravel部署缓存,直到服务器重启

时间:2015-04-12 20:16:49

标签: caching laravel capistrano

当我使用Capistrano将我的Laravel 4.2.9应用程序部署到Ubuntu 14.04服务器时,好像我的所有php文件都被PHP,Laravel或Nginx缓存。我必须手动重启服务器以破坏缓存并查看我的任何更改。

Capistrano在服务器上创建一个新的发布目录,并在里面运行git checkout以获取最后标记的版本。部署完成后,当前'符号链接将更新为指向新版本目录。唯一的共享文件是我的上传目录和我的环境设置文件。

我尝试的事情:

  • php artisan cache:clear
  • composer dump-autoload

部署后只有手动服务器重启会破坏缓存,这会导致停机(也适用于该服务器上托管的其他站点)和额外的风险。

有人建议这可能是Nginx,PHP还是Laravel本身?

1 个答案:

答案 0 :(得分:3)

我在部署Laravel 5应用程序时遇到了类似的问题,似乎通过在Capistrano的deploy.rb末尾添加以下内容来解决它:

namespace :deploy do
    desc "Build"
    after :updated, :build do
        on roles(:web) do
            within release_path  do
                execute :composer, "install --no-dev --quiet"
                execute :php, "artisan clear-compiled"
                execute :php, "artisan cache:clear"
                execute :php, "artisan view:clear"
                execute :php, "artisan twig:clean" # For use with TwigBridge
                execute :php, "artisan route:cache"
                execute :php, "artisan config:cache"
            end
        end
    end
end

(如果您未使用TwigBridge,请务必删除twig:clean行。)

编辑包含clear-compiledview:clear行,因为这些似乎解决了使用Capistrano部署Laravel应用程序时的其他问题。