我正在尝试在 kubernetes 上运行一个 wordpress 网站,但由于它位于 nginx ingress 后面,因此需要行$_SERVER['HTTPS']='on';
,wp-config.php
如这里。
当不设置任何环境变量时,docker 镜像使用wp-config.php
我提供的,所以我可以测试上面这一行是否解决了我的问题。
继文档,我设置了所有变量,如下所示,但是,WORDPRESS_CONFIG_EXTRA
env 变量似乎未应用于配置文件。应该注意的是,变量已设置,可以在 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.php
pod 内部生成的,您可以看到它不包含以下内容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
而不是在部署中传递。你可以找到很多例子,比如这