【发布时间】:2018-06-30 08:39:20
【问题描述】:
我在尝试使用 Capistrano 将 Laravel 应用程序部署到 Ubuntu 服务器上时遇到问题。
我的部署目录是/var/www/project_stage。当我将项目部署到该目录时,一切正常。我的项目上线了,每一行代码都可以正常工作。
但是当我进行更改并部署同一项目的新版本时,不知何故(我猜)我的文件被缓存并且没有响应最新版本,它们仍然响应旧版本已经被覆盖.
当我将项目部署到不同的文件夹(例如:/var/www/project_stage2 而不是 /var/www/project_stage)并将我的 Nginx 配置更改为从该文件夹提供服务时,它会再次正常工作。但不是在第二次部署到同一目录中。所以我可以说我每次都可以部署到不同的目录,但我不能两次部署到同一个目录。它总是在首次部署时响应。
这是我尝试过的:
- 我检查了 Capistrano 的当前目录是否链接到 正确的文件夹,它有。
- 我检查了我所做的更改是否在新部署中可见,这 他们是。文件在新部署时完全更改。
- 我检查了 Nginx 是否正在寻找正确的发布目录,它 有。
- 我尝试运行
php artisan cache:clear,route:clear,view:clear,config:cache命令,我也运行composer dump-autoload。没有任何效果。 - 我把Nginx的
sendfile参数改成off重启了,不行 结果。 - 我在this 问题上阅读了类似的问题,但它没有解决问题 我的情况。
这是我的 deploy.rb:
#deploy_path 继承自 staging.rb 锁定“~> 3.10.1” 设置:应用程序,“project_stage” 设置:repo_url,“我的回购协议” 设置:keep_releases,10 设置:laravel_dotenv_file,“./.env.staging” 命名空间:部署做 之前 :updated, :easy do 在角色(:all) 上做 |host| 执行:chmod,“-R 777 #{deploy_path}/shared/storage/logs” 执行:chmod,“-R 777 #{deploy_path}/shared/storage/framework” 结尾 结尾 :finished, :hard do 之后 在角色(:all) 上做 |host| 结尾 结尾 描述“构建” 在 :updated, :build 之后 在角色(:网络)上做 在 release_path 中做 执行 :php, "artisan clear-compiled" 执行:php,“工匠缓存:清除” 执行:php,“工匠视图:清除” 执行:php,“工匠路线:缓存” 执行:php,“工匠配置:缓存” 结尾 结尾 结尾 end #end 部署命名空间我正在使用 PHP7.0(带有 unix 套接字的 FPM)、Nginx、Laravel5、Capistrano3(带有 capsitano/laravel gem)、Ubuntu Server 16.4。
【问题讨论】:
-
您是否在使用将
opcache.validate_timestamps设置为零的操作码缓存?
标签: laravel caching nginx deployment capistrano