triopsi/maintenance

CakePHP 的维护插件

安装: 37

依赖项: 0

建议者: 0

安全: 0

星星: 0

监视者: 1

分支: 0

开放问题: 0

类型:cakephp-plugin

v1.0.0 2023-03-08 05:41 UTC

This package is auto-updated.

Last update: 2024-09-08 08:43:12 UTC


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