corley / maintenance-bundle
Corley 维护包
Requires
- php: >=8.1
- symfony/console: ^4.4|^5.4|^6.0
- symfony/dependency-injection: ^4.4|^5.4|^6.0
- symfony/framework-bundle: ^4.4|^5.4|^6.0
- symfony/security-bundle: ^4.4|^5.4|^6.0
Requires (Dev)
- mikey179/vfsstream: 1.*
- phpunit/phpunit: ^8.0
README
使用 web 服务器策略将 Web 应用程序统一置于维护状态的方法。维护模式将切断所有请求,并以静态 HTML 文件和 503 头(服务不可用)进行回复。
这些条件将确保在维护期间负载均衡器断开实例
安装
在 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