WordPress Docker Compose部署云服务器并设置Nginx代理解决HTTPS证书问题和本地服务器定时备份

NO.1
Dcoker部署WordPress

DockerHub文档

https://hub.docker.com/_/wordpress

创建docker-compose.yml

version: '3.3'
services:
   db_dsx2020:
     image: mysql:5.7
     volumes:
       - ./db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: wordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
   wordpress_dsx2020:
     depends_on:
       - db_dsx2020
     image: wordpress:php8.2
     ports:
       - "8010:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db_dsx2020:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
     volumes:
       - ./wordpress:/var/www/html
volumes:
    db_data: {}

启动

docker-compose up
NO.2
Nginx代理

本文使用的是宝塔面板

需要进行以下操作

  1. 域名DNS解析到云服务器

  2. 宝塔面板-菜单-网站,新建一个网站

  3. 宝塔申请SSL证书(设置反向代理之前)

  4. 设置反向代理(指向8010端口)

创建网站演示

此图片的alt属性为空;文件名为image-619-1024x108.png

申请SSL证书

此图片的alt属性为空;文件名为image-620.png

设置反向代理

此图片的alt属性为空;文件名为image-621.png

NO.3
设置WordPress

等反向代理设置成功后,再使用域名访问WordPress

按照WordPress官方安装步骤填写即可

这时候会出现几个问题

一.页面的样式丢失,控制台可以看到是HTTPS引用了HTTP资源报错导致的(因为是Nginx反向代理Docker导致的,非直接访问)

二.提示重定向过多,或者管理后台提示无权限访问

NO.4
解决方式

在WordPress根目录找到wp-config.php文件

此图片的alt属性为空;文件名为image-622.png

在 defined( ‘ABSPATH’ )的上面添加以下代码

xxx.com为你的域名

$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
define('WP_HOME', 'https://xxx.com');
define('WP_SITEURL', 'https://xxx.com');

此图片的alt属性为空;文件名为image-623-1024x494.png

在wp-includes文件夹下,找打functions.php

此图片的alt属性为空;文件名为image-624.png

在大约第8行 require ABSPATH . WPINC . ‘/option.php’; 下面添加代码

add_filter('script_loader_src', 'agnostic_script_loader_src', 20,2); function agnostic_script_loader_src($src, $handle) { return preg_replace('/^(http|https):/', '', $src); } 
add_filter('style_loader_src', 'agnostic_style_loader_src', 20,2); function agnostic_style_loader_src($src, $handle) { return preg_replace('/^(http|https):/', '', $src); }

此图片的alt属性为空;文件名为image-625-1024x318.png

完成后,刷新,可以看到样式和访问后台问题解决了

NO.5
备份WordPress

参考文章

Docker Cpmpose数据备份和迁移[云服务器数据备份到本地服务器]

添加定时任务

定时压缩数据卷到指定目录

此图片的alt属性为空;文件名为image-626-1024x492.png

本地拉取压缩文件

此图片的alt属性为空;文件名为image-627-1024x488.png

可以看到本地的执行结果

此图片的alt属性为空;文件名为image-628.png

NO.6
Tips

每个Docker容器都有不同的数据卷,所以频繁用到的服务,用文章做个记录

避免下一次博客没有备份,又丢失数据

END.