corley/maintenance-bundle

Corley 维护包

0.5.1 2022-06-02 04:49 UTC

This package is auto-updated.

Last update: 2024-08-24 23:50:54 UTC


README

使用 web 服务器策略将 Web 应用程序统一置于维护状态的方法。维护模式将切断所有请求,并以静态 HTML 文件和 503 头(服务不可用)进行回复。

这些条件将确保在维护期间负载均衡器断开实例

Build Status

安装

composer.json 中添加依赖项。

当前版本需要至少 PHP 8.1 和一个受支持的(发布时)Symfony 版本(4.4、5.4、6.0 和 6.1)。

"require": {
    "corley/maintenance-bundle": "^0.5"
}

要支持更早的版本,例如 SF 3.4、4.2、4.3、5.1 等,或 PHP 大于 7.2 但小于 8.1,您需要使用

"require": {
    "corley/maintenance-bundle": "^0.4"
}

为了继续支持更早的版本,例如 SF 2.x、3.3、4.1 等,或 PHP 小于 7.2,您需要使用

"require": {
    "corley/maintenance-bundle": "^0.2"
}

此版本也可以用于更近期的 Symfony 版本,例如与 3.4 或 4.4 一起使用,但不兼容 Symfony 5 - 只有 0.3 或更高版本可以在此处使用,因为 Symfony 5.0 中事件结构的更改。

对于预 Flex 应用程序,在 AppKernel.php 中注册包。

public function registerBundles()
{
    ...
    $bundles = array(
        ...
        new Corley\MaintenanceBundle\CorleyMaintenanceBundle(),
    );
    ...
    return $bundles;
}

对于使用 Flex 最近版本的构建的项目,将生成默认配方,该配方会将包添加到您的 bundles.php 中。在 Flex 的旧版本中,您可能需要自己这样做

Corley\MaintenanceBundle\CorleyMaintenanceBundle::class => ['all' => true],

维护模式

当您想要将您的 Web 应用程序置于维护状态时

bin/console corley:maintenance:lock on

恢复应用程序状态

bin/console corley:maintenance:lock off

配置您的 Web 服务器

如果您使用 Apache2,您必须在 .htaccess 中添加几行,对于 nginx,只需在 Web 应用程序配置中添加专用行。确保这些行位于任何其他重写规则之前。Apache2 中的 mod_rewrite 模块必须安装并启用。

要获取配置选项,请使用控制台

Apache2

bin/console corley:maintenance:dump-apache

Nginx

bin/console corley:maintenance:dump-nginx

配置

您可以根据需要配置此包以更改默认行为(所有选项都有默认值)

对于不使用 Flex 的项目

# config.yml
corley_maintenance:
    page: %kernel.root_dir%/../web/maintenance.dist.html
    hard_lock: lock.html
    symlink: false
    web: %kernel.root_dir%/../web

对于 Flex 项目

# config/packages/corley.yml
corley_maintenance:
    page: %kernel.project_dir%/templates/maintenance.dist.html
    hard_lock: lock.html
    symlink: false

选项

  • page 是原始维护页面(默认:vendor/corley/maintenance-bundle/Corley/MaintenanceBundle/Resources/views/maintenance.html
  • symlink 如果您想使用符号链接策略而不是硬拷贝策略(默认:硬拷贝)
  • hard_lock 用于锁定网站的名称(默认:hard.lock
  • web 公共文件夹。在 0.4 版本之前,此默认值为 %kernel.root_dir%/../web,自 0.4.0 版本以来,新默认值为 %kernel.project_dir%/public,因为自 Symfony 4.2 以来已弃用 %kernel.root_dir% 参数,并在 5.1 中已删除。如果您的项目公共文件夹仍然是 web(或某些其他文件夹),请在配置文件中设置此值。
  • soft_lock 用于锁定网站的名称(使用应用层)
  • whitelist 授权连接 [仅软锁定]
    • paths 跳过维护锁定的路径列表
    • ips 跳过维护锁定的 IP 列表

软锁定

软锁定策略使用 php 层来锁定网站。这意味着应用程序必须运行才能锁定网站。

软锁定在 kernel.request 上运行并停止其他事件传播。

当您想要使用软锁定策略将您的 Web 应用程序置于维护状态时

bin/console corley:maintenance:soft-lock on

恢复应用程序状态

bin/console corley:maintenance:soft-lock off