1、前言

在本地n3540小主机上使用docker安装wordpress。主要遇到的问题有如下:

  1. 上传主题文件时提示上传文件大小限制。推荐看这篇文章
  2. frp内网穿透后公网无法访问

本期主要解决frp公网访问问题。

  • 搭建过程程略,给出关键的docker-compose.yml文件。搭建步骤
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
version: '3.0'

services:
db:
image: mysql:8.0 # 使用mysql镜像,不建议修改版本号,后续如果要升级,千万记得备份数据库
container_name: wordpress-db
restart: unless-stopped
command: --max-binlog-size=200M --expire-logs-days=2
environment:
MYSQL_ROOT_PASSWORD: aPvpUn4d29www
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: aPvpUn4d29
volumes:
- './db:/var/lib/mysql'
networks:
- default

app:
image: wordpress:6.5
container_name: wordpress-app
restart: unless-stopped
ports:
- 8989:80 # 按需修改,左边的8080可以改成服务器上没有用过的端口
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: aPvpUn4d29 # 和MYSQL_PASSWORD一致
volumes:
- './app:/var/www/html'
links:
- db:db
depends_on:
- redis
- db
networks:
- default

redis:
image: redis:alpine
container_name: wordpress-redis
restart: unless-stopped
volumes:
- ./redis-data:/data
networks:
- default

networks:
default:
name: wordpress

2、解决公网无法访问问题

2.1、wordpress主目录下修改wp-config.php文件

在 require_once ABSPATH . ‘wp-settings.php’; 之前粘贴以下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(is_numeric(substr($_SERVER['HTTP_HOST'],0,1)))
{
$http_type = 'http://';
}
else
{
$http_type = 'https://';

$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
}

define('WP_SITEURL', $http_type . $_SERVER['HTTP_HOST']);
define('WP_HOME', $http_type . $_SERVER['HTTP_HOST']);

保存修改好的文件并重启wordpress

2.2、WordPress后台配置

设置WordPress AddressSite Address为反向代理服务地址(HTTPS协议)。在设置,wordpress地址和站点地址填上反代好的地址。

网站地址修改

3、问题

以上方法可以解决使用公网域名的https协议访问,但是本地ip+端口的http协议却无法访问。

4、参考资料

内网穿透下的 wordpress 地址冲突问题与 https 下的后台登陆问题

WordPress 相对路径配置(HTTPS、反向代理)

docker中宿主机与容器(container)互相拷贝传递文件的方法

docker中修改wordpress的上传文件限制