Laravel维护模式通过php artisan down开启,php artisan up关闭,期间返回503状态码并显示自定义维护页面;可配合--secret、--refresh等参数优化体验,并需注意缓存、权限及CDN问题;部署时应集成维护命令以保障更新平稳。

Laravel的维护模式,说白了,就是给你的网站盖上一个“施工中”的牌子,让访问者知道你正在对它进行一些操作。开启和关闭这个模式,核心就是通过Artisan命令行工具,用
php artisan down
php artisan up
要让你的Laravel应用进入维护模式,你只需要在项目的根目录下执行一个简单的Artisan命令:
php artisan down
这个命令一执行,你的网站就会立即返回一个503状态码(Service Unavailable),并且显示一个默认的维护页面。所有非白名单IP或秘密链接的访问都会被拦截。
如果你想在维护期间,自己或者团队成员还能正常访问网站进行测试,可以使用
--secret
php artisan down --secret="your-secret-token"
这样,当你访问
https://your-domain.com/your-secret-token
另外,你可能希望在维护模式下,浏览器能够自动刷新页面,等待网站恢复。这时可以使用
--refresh
php artisan down --refresh=60
这会让浏览器每60秒尝试刷新一次页面。
如果你想自定义返回的HTTP状态码,而不是默认的503,可以使用
--status
php artisan down --status=500
当维护工作完成,需要让网站恢复正常访问时,也很简单:
php artisan up
这个命令会删除Artisan生成的
storage/framework/down
坦白说,用户遇到“网站维护中”的页面,体验通常不会太好。但我们总能做些什么来缓解这种不适。在我看来,最直接且有效的方法就是定制一个友好的维护页面。Laravel默认会显示一个非常基础的页面,但我们可以通过创建
resources/views/errors/503.blade.php
另外,前面提到的
--secret
--refresh
在使用维护模式时,我遇到过一些挺让人头疼的问题,这里列举几个常见的,希望能帮到你:
php artisan down
php artisan up
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
config:cache
down
storage/framework/down
php artisan down
storage/framework
down
storage
www-data
nginx
775
777
php artisan up
App\Exceptions\Handler.php
render
在处理这些问题时,我通常会从最简单的缓存清除开始,然后检查文件权限,最后才考虑更复杂的网络层面或代码逻辑问题。这是一种从表象到本质的排查思路,挺实用的。
将维护模式集成到部署流程中,是确保网站更新平稳过渡的关键一环。我个人觉得,一个好的部署流程,应该能让用户几乎无感知地完成更新。
一种比较直接的方式是在部署脚本中,将
php artisan down
php artisan up
部署前的准备:
php artisan down --secret="deploy-secret" --refresh=30
这里使用
--secret
--refresh
git pull origin main composer install --no-dev --optimize-autoloader
php artisan migrate --force
--force
部署后的收尾:
php artisan cache:clear php artisan config:clear && php artisan config:cache php artisan route:clear && php artisan route:cache php artisan view:clear && php artisan view:cache
我习惯先清除再重建,这样能确保所有缓存都是基于最新代码生成的。
php artisan up
在CI/CD管道中(比如GitHub Actions, GitLab CI, Jenkins),这些命令可以被封装成一个个独立的步骤。例如,在GitHub Actions中,你可以定义一个“Deploy”Job,其中包含“Enter Maintenance Mode”、“Update Code”、“Run Migrations”、“Clear & Cache”和“Exit Maintenance Mode”等Steps。
当然,除了这种“硬性”的维护模式,更高级的部署策略,比如蓝绿部署(Blue/Green Deployment)或者滚动更新(Rolling Update),可以在不完全中断服务的情况下进行部署,它们通过在后台准备新版本实例,然后切换流量,可以最大限度地减少用户感知到的停机时间。不过,对于大多数中小型应用来说,Laravel自带的维护模式已经足够应对日常的部署需求了,关键在于我们如何巧妙地利用它,把对用户的影响降到最低。
以上就是Laravel如何开启和关闭维护模式_站点维护状态切换的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号