当我使用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本身?
答案 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-compiled
和view:clear
行,因为这些似乎解决了使用Capistrano部署Laravel应用程序时的其他问题。