triopsi / maintenance
CakePHP 的维护插件
Requires
- php: >=7.4
- cakephp/cakephp: 4.4.*
Requires (Dev)
- phpunit/phpunit: ^8.5 || ^9.3
README
为您的 CakePHP 应用程序提供维护模式。使用此插件,您可以切换您的应用程序到维护模式。您还可以通过白名单来确定谁可以继续访问您的应用程序。它附带组件、控制台和中间件。
⚠️ 如果数据库连接或您的应用程序因升级而完全关闭,则不应使用此工具。在那里它会失败。它应仅用于软维护工作。
安装
您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。
安装 composer 包的推荐方式是
composer require triopsi/maintenance
通过 bin/bake 加载插件
通过负载任务,您可以在 application.php 中加载插件。您可以通过运行以下命令来实现
bin/cake plugin load Maintenance
手动安装
如果您要安装的插件不在 packagist.org 上,您可以将插件代码克隆或复制到您的插件目录中。 /plugin/
在 bootstrap 方法中的 application.php 中添加以下内容
$this->addPlugin('Maintenance');
如果我们要手动安装插件,则需要修改我们的应用程序的 composer.json 文件以包含以下信息
"autoload": {
"psr-4": {
...
"Maintenance\\": "plugins/Maintenance/src/"
}
},
"autoload-dev": {
"psr-4": {
...
"Maintenance\\Test\\": "plugins/Maintenance/tests/"
}
},
此外,您还需要告诉 Composer 刷新其自动加载缓存
php composer.phar dumpautoload
自定义
请确保您在 /templates/Error/
中有一个名为 maintenance.php
的模板文件。
配置
className
:设置视图类名。接受短名称(Ajax)、插件名称(MyPlugin.Ajax)或完全命名空间名称(App\View\AppView)或 null 以使用 CakePHP 提供的 View 类。templatePath
:设置模板文件路径。例如,/template/Error。statusCode
:HTTP 响应码用于 HTTP 标头。templateLayout
:布局名称或 false 以使用默认布局。templateFileName
:维护模式的模板名称。templateExtension
:视图模板扩展。contentType
:响应类型。资源的 MIME 类型或数据。api_prefix
:API URL 后缀。对于此前缀,禁用维护模式。输入 false 以禁用异常。
这些可以用来调整维护模式页面的内容。
维护组件
此组件添加了额外的功能
- 如果维护模式处于活动状态(并且由于白名单您看不到它),则一个闪存消息会显示您是否当前处于白名单中。
如何设置
// In your App Controller Class (/src/Controller/AppController) public function initialize() { ... $this->loadComponent( 'Maintenance.Maintenance' ); }
禁用闪存消息
在 /config/app.php
中编写一个变量,如
maintenance => array(
'flash' => false
)
或在 /src/Controller/AppController
中的 initialize 方法中
Cake\Core\Configure::write( 'maintenance.flash', false )
除了闪存消息外,还可以触发其他操作。在组件中写入名为 maintenance_mode
的视图变量。借助此变量,可以在模板文件中查询状态。这可能看起来像这样
// in the layout or view file:
<?php
if (isset( $maintenance_mode ) && true === $maintenance_mode ) {
?>
<div class="bg-warning text-center">
<?php echo __( 'Maintenance Modus is active' ); ?>
</div>
<?php
}
?>
维护模式命令
这应该是启用和禁用应用程序维护模式的首选方式。
命令
- 状态
- 激活
- 禁用
- 白名单
- 重置
帮助页面
Usage:
cake maintenance_mode [-d 0] [-h] [-q] [-r] [-v] <status|activate|deactivate|reset|whitelist> [<ip_addresses>]
Options:
--duration, -d Duration in minutes - optional.
--help, -h Display this help.
--quiet, -q Enable quiet output.
--remove, -r Remove IP Addresses from whitelist.
--verbose, -v Enable verbose output.
Arguments:
activity See the current status (choices: status|activate|deactivate|reset|whitelist)
ip_addresses A comma separated list of ip addresses for the whitelist.
(optional)
示例
激活维护模式的示例
./bin/cake maintenance_mode activate
或使用超时(5分钟)
./bin/cake maintenance_mode -d 5 activate
禁用维护模式
./bin/cake maintenance_mode deativate
或重置模式(禁用维护模式并删除所有白名单 IP 地址)
./bin/cake maintenance_mode reset
添加 IP 地址到白名单
./bin/cake maintenance_mode whitelist 127.0.0.1
添加 IP 地址到白名单
./bin/cake maintenance_mode whitelist 127.0.0.1,127.0.0.2,127.0.0.3
从白名单中删除 IP 地址
./bin/cake maintenance_mode -r whitelist 127.0.0.1
列出所有 IP 地址
./bin/cake maintenance_mode whitelist
获取状态
./bin/cake maintenance_mode status