Как очистить OPcache в защищенной среде BasicAuth с typo3 / surf? - PullRequest
0 голосов
/ 14 февраля 2019

В проекте TYPO3, в котором я работаю, среда Production / Staging (или Production / Dev, или любая другая) защищена HTTP BasicAuth ( базовая аутентификация доступа ).

экземпляр get развернут через typo3 / surf .

  1. В какой-то момент typo3 / surf должен создать временный файл php, к которому можно получить доступ
  2. позже: послепереключение было выполнено, и новое развертывание доступно через внешний интерфейс.

Как настроить typo3 / surf для доступа к ранее созданному сценарию очистки OPcache через внешний интерфейс назащищенная среда BasicAuth?

1 Ответ

0 голосов
/ 14 февраля 2019

Настройка 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 в официальной документации.


Сноски

1 Этот ответ основан на ветке GIT typo3 / surf для 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

});
...