Назад | Перейти на главную страницу

Wordpress в кубернетах не применяет WORDPRESS_CONFIG_EXTRA к wp-config.php

Я пытаюсь запустить сайт wordpress на kubernetes, но поскольку он находится за входом nginx, ему нужна строка $_SERVER['HTTPS']='on'; в wp-config.php, как видно на Вот.

Если не заданы никакие переменные env, изображение докера использует wp-config.php предоставлено мной, чтобы я мог проверить, что эта строка решает мою проблему.

После документация, Я установил все свои переменные, как вы можете видеть ниже, однако WORDPRESS_CONFIG_EXTRA Переменная env, похоже, не применяется к файлу конфигурации. Следует отметить, что переменная установлена, и к ней можно получить доступ внутри модуля с помощью echo $WORDPRESS_CONFIG_EXTRA

Я также использую внешнюю базу данных mysql с уже заполненной базой данных, которую использует модуль wordpress.

Если этот пост не старый, сайт должен быть в сети. Вот, но ненадолго, поскольку кластер стоит дорого. Вы можете проверить, загружаются ли некоторые ресурсы с помощью http, когда следует использовать https. Эта строка исправит это.

Dockerfile для моего пользовательского образа (wp-config.php игнорируется в .dockerignore):

FROM wordpress:php7.1-apache

COPY . /usr/src/wordpress/

Вот мой deployment.yaml:

apiVersion: v1
kind: Service
metadata:
  name: black
spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: wordpress
    tier: frontend
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: black-pv-claim
  labels:
    app: wordpress
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: black
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: frontend
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: wordpress
        tier: frontend
    spec:
      containers:
      - image: setti7/asc-theme:0.1.6
        name: black
        imagePullPolicy: Always
        env:
        - name: WORDPRESS_TABLE_PREFIX
          value: wpsy_
        - name: WORDPRESS_DB_NAME
          value: black
        - name: WORDPRESS_DB_USER
          value: black_user
        - name: WORDPRESS_DB_HOST
          value: wordpress-mysql
        - name: WORDPRESS_DB_PASSWORD
          value: blackpassword
        - name: WORDPRESS_CONFIG_EXTRA
          value: |
            define('FORCE_SSL_ADMIN', true);
            if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
            $_SERVER['HTTPS']='on';
        ports:
        - containerPort: 80
          name: black
        volumeMounts:
        - name: black-persistent-storage
          mountPath: /var/www/html
      volumes:
      - name: black-persistent-storage
        persistentVolumeClaim:
          claimName: black-pv-claim

Здесь wp-config.php сгенерированный внутри модуля, который, как вы видите, не содержит строк, заданных WORDPRESS_CONFIG_EXTRA:

<?php
/**
 * As configurações básicas do WordPress
 *
 * O script de criação wp-config.php usa esse arquivo durante a instalação.
 * Você não precisa usar o site, você pode copiar este arquivo
 * para "wp-config.php" e preencher os valores.
 *
 * Este arquivo contém as seguintes configurações:
 *
 * * Configurações do MySQL
 * * Chaves secretas
 * * Prefixo do banco de dados
 * * ABSPATH
 *
 * @link https://codex.wordpress.org/pt-br:Editando_wp-config.php
 *
 * @package WordPress
 */

// ** Configurações do MySQL - Você pode pegar estas informações com o serviço de hospedagem ** //
/** O nome do banco de dados do WordPress */
define('DB_NAME', 'black');

/** Usuário do banco de dados MySQL */
define('DB_USER', 'black_user');

/** Senha do banco de dados MySQL */
define('DB_PASSWORD', 'blackpassword');

/** Nome do host do MySQL */
define('DB_HOST', 'wordpress-mysql');

/** Charset do banco de dados a ser usado na criação das tabelas. */
define('DB_CHARSET', 'utf8');

/** O tipo de Collate do banco de dados. Não altere isso se tiver dúvidas. */
define('DB_COLLATE', '');

/**#@+
 * Chaves únicas de autenticação e salts.
 *
 * Altere cada chave para um frase única!
 * Você pode gerá-las
 * usando o {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org
 * secret-key service}
 * Você pode alterá-las a qualquer momento para invalidar quaisquer
 * cookies existentes. Isto irá forçar todos os
 * usuários a fazerem login novamente.
 *
 * @since 2.6.0
 */
define('AUTH_KEY',         'coloque a sua frase única aqui');
define('SECURE_AUTH_KEY',  'coloque a sua frase única aqui');
define('LOGGED_IN_KEY',    'coloque a sua frase única aqui');
define('NONCE_KEY',        'coloque a sua frase única aqui');
define('AUTH_SALT',        'coloque a sua frase única aqui');
define('SECURE_AUTH_SALT', 'coloque a sua frase única aqui');
define('LOGGED_IN_SALT',   'coloque a sua frase única aqui');
define('NONCE_SALT',       'coloque a sua frase única aqui');

/**#@-*/

/**
 * Prefixo da tabela do banco de dados do WordPress.
 *
 * Você pode ter várias instalações em um único banco de dados se você der
 * um prefixo único para cada um. Somente números, letras e sublinhados!
 */
$table_prefix = 'wpsy_';

/**
 * Para desenvolvedores: Modo de debug do WordPress.
 *
 * Altere isto para true para ativar a exibição de avisos
 * durante o desenvolvimento. É altamente recomendável que os
 * desenvolvedores de plugins e temas usem o WP_DEBUG
 * em seus ambientes de desenvolvimento.
 *
 * Para informações sobre outras constantes que podem ser utilizadas
 * para depuração, visite o Codex.
 *
 * @link https://codex.wordpress.org/pt-br:Depura%C3%A7%C3%A3o_no_WordPress
 */
define('WP_DEBUG', false);

/* Isto é tudo, pode parar de editar! :) */

/** Caminho absoluto para o diretório WordPress. */
if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');

/** Configura as variáveis e arquivos do WordPress. */
require_once(ABSPATH . 'wp-settings.php');

Это еще не известная проблема, но она уже решена.

Важно знать, что любое изменение WORDPRESS_CONFIG_EXTRA не будет добавлен к wp-config.php после создания тома контейнера. Отметьте эту проблему Изменения в WORDPRESS_CONFIG_EXTRA игнорируются, если wp-config.php не удален.

Способ обойти это - удалить wp-config.php файл после любого обновления до WORDPRESS_CONFIG_EXTRA или удалите том и позвольте ему воссоздать его.

Также взгляните на Пример части docker-entrypoint.sh от того, как другие достигают этого.

if [ ! -e wp-config.php ]; then
    awk '
        /^\/\*.*stop editing.*\*\/$/ && c == 0 {
            c = 1
            system("cat")
            if (ENVIRON["WORDPRESS_CONFIG_EXTRA"]) {
                print "// WORDPRESS_CONFIG_EXTRA"
                print ENVIRON["WORDPRESS_CONFIG_EXTRA"] "\n"
            }
        }
        { print }
    ' wp-config-sample.php > wp-config.php <<'EOPHP'

Что еще тут добавить .. Наверное, если бы я сделал то же самое - я бы прошел WORDPRESS_CONFIG_EXTRA переменная в entrypoint script а не в развертывании. Вы можете найти множество примеров, таких как этот