如何使用typo3 / surf在BasicAuth保护的环境中清除OPcache?

时间:2019-02-14 09:50:01

标签: typo3 basic-authentication typo3-surf

在TYPO3项目上,我正在使用HTTP BasicAuth(basic access authentication)保护Production / Staging(或Production / Dev或任何其他)环境。

实例get通过typo3/surf进行部署。

  1. 在某些时候,typo3 / surf必须创建一个临时的php文件,该文件可以访问
  2. 稍后:切换完成后,可以通过前端访问新部署。

如何配置typo3/surf以便通过BasicAuth受保护环境上的前端访问以前生成的OPcache清除脚本?

1 个答案:

答案 0 :(得分:0)

配置typo3 / surf以重置PHP OPcache 1

配置OPcache清除/重置脚本基本上需要四个步骤:

  1. 设置\TYPO3\Surf\Task\Php\WebOpcacheResetCreateScriptTask的任务选项
  2. 尽早添加任务\TYPO3\Surf\Task\Php\WebOpcacheResetCreateScriptTask(例如package,但肯定要在transfer之前)
  3. 设置\TYPO3\Surf\Task\Php\WebOpcacheResetExecuteTask的任务选项
  4. 在阶段\TYPO3\Surf\Task\Php\WebOpcacheResetExecuteTask之后添加任务switch

以下是部署配置脚本中onInitialize函数 2 的必要摘要:

设置“创建脚本任务”的任务选项:

  

自从“ Respect WebDirectory” patch起,脚本的路径就不能手动配置,因为它会自动使用正确的WebDirectory路径(通过之前的选项设置)。

如果您使用的是typo3 / surf旧版本,或者有任何特殊要求,可以设置选项scriptBasePath来设置生成文件的绝对路径:

# In this example, I have to set the absolute path for the resulting php file.
# Since the deployment run in GitLab CI I get the path to the root of the project's GIT
# repository via the environment variable `CI_PROJECT_DIR`. Since the path to the webDirectory
# inside the GIT repository is `<GitRepoRootFOlder>/app/web` I add it manually and concatenate
# it as final string for the option `scriptBasePath`:
$workflow->setTaskOptions(\TYPO3\Surf\Task\Php\WebOpcacheResetCreateScriptTask::class, [
    'scriptBasePath' => \TYPO3\Flow\Utility\Files::concatenatePaths([getenv('CI_PROJECT_DIR'), '/app/web']),
]);

设置“执行任务”的任务选项:

  

目前,我们提供用户名和密码

$workflow->setTaskOptions('TYPO3\\Surf\\Task\\Php\\WebOpcacheResetExecuteTask', [
    'baseUrl' => $application->getOption('baseUrl'),
    'stream_context' => [
        'http' => [
            'header' => 'Authorization: Basic '.base64_encode("username:password"),
        ],
    ],
]);

激活两个任务:

$workflow->beforeStage('transfer', \TYPO3\Surf\Task\Php\WebOpcacheResetCreateScriptTask::class, $application)
    ->afterStage('switch', \TYPO3\Surf\Task\Php\WebOpcacheResetExecuteTask::class, $application);

此答案仅显示了OPcache重置过程的必要部分!

请同时检查官方文档中的TYPO3 CMS deployment configuration example


脚注

1 此答案基于typo3 / surf GIT分支dev-master,版本2.x

2 放置提到的代码片段的示例:

$deployment->onInitialize(function () use ($deployment, $application) {
    /** @var SimpleWorkflow $workflow */
    $workflow = $deployment->getWorkflow();

    # the mentioned snippets have to be placed next to your existing configuration

});