kubernetes 中的 Wordpress 未将 WORDPRESS_CONFIG_EXTRA 应用于 wp-config.php

kubernetes 中的 Wordpress 未将 WORDPRESS_CONFIG_EXTRA 应用于 wp-config.php

我正在尝试在 kubernetes 上运行一个 wordpress 网站,但由于它位于 nginx ingress 后面,因此需要行$_SERVER['HTTPS']='on';wp-config.php这里

当不设置任何环境变量时,docker 镜像使用wp-config.php我提供的,所以我可以测试上面这一行是否解决了我的问题。

文档,我设置了所有变量,如下所示,但是,WORDPRESS_CONFIG_EXTRAenv 变量似乎未应用于配置文件。应该注意的是,变量已设置,可以在 pod 内部使用以下命令访问echo $WORDPRESS_CONFIG_EXTRA

我还在使用外部 mysql 数据库,其中已经填充了 wordpress pod 使用的 db。

如果这个帖子不是旧的,该网站应该在线这里,但不会持续太久,因为集群很昂贵。您可以检查某些资源是否正在使用 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.phppod 内部生成的,您可以看到它不包含以下内容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');

答案1

这仍然不是一个众所周知的问题,但已经解决。

需要注意的是,容器卷创建后,任何更改WORDPRESS_CONFIG_EXTRA都不会添加到。请查看此问题wp-config.php除非删除 wp-config.php,否则对 WORDPRESS_CONFIG_EXTRA 的更改将被忽略

解决此问题的方法是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而不是在部署中传递。你可以找到很多例子,比如

相关内容