【问题标题】:Laravel deployment cache until server restartLaravel 部署缓存直到服务器重启
【发布时间】:2015-06-18 02:31:30
【问题描述】:

当我使用 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 本身?

【问题讨论】:

    标签: caching laravel capistrano


    【解决方案1】:

    我在部署我的 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 应用程序的其他问题。

    【讨论】:

      猜你喜欢
      • 2013-11-26
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      • 1970-01-01
      • 2016-05-25
      • 1970-01-01
      相关资源
      最近更新 更多