【调试笔记-20240730-Linux-OpenWrt 23.05 安装 Docker 配置 bitnami/Wordpress-with-NGINX 实现微信用户在线注册登录】

调试笔记-系列文章目录

调试笔记-20240730-Linux-OpenWrt 23.05 安装 Docker 配置 bitnami/Wordpress-with-NGINX 实现微信用户在线注册登录



前言

本文记录在 Windows 的 QEMU 环境下运行 OpenWrt 安装调试 Docker 并配置 bitnami/Wordpress-with-NGINX 实现微信用户在线注册登录。

实验使用的电脑如下:

CPU:

Intel Core i5 8265U

操作系统:

Microsoft Windows 10  Professional (x64), Version 22H2, Build 19045.4412

一、调试环境


操作系统:Windows 10 专业版

操作系统详细信息如下:

Microsoft Windows 10  Professional (x64), Version 22H2, Build 19045.4412

调试环境

  • Windows 系统下安装 qkd-app 并配置 QEMU 。

在这里插入图片描述

在这里插入图片描述

参考
安装笔记-20240520-Windows-在 QEMU 中尝试运行 OpenWRT
调试笔记-20240524-Linux-扩展 OpenWrt-23.05 发行版 EXT4 镜像文件大小


调试目标

OpenWrt 23.05 安装管理 docker 镜像,解决 bitnami/wordpress docker 镜像不能使用 80/443 端口问题,并确保 Wordpress REST API 正常工作。

LuCI 界面的简单 docker 管理器:

在这里插入图片描述


二、调试步骤

参考 【Bitnami package for WordPress with NGINX

安装步骤

以OpenWrt 23.05 版本为例,系统已经安装配置 docker,在 docker 中配置容器运行 wordpress。

1、配置docker网络

OpenWrt 安装 docker 软件包时已经配置好 docker0 桥接接口,在 docker 中对应是名为 “bridge” 的网络设备,可以通过以下命令查看 docker network :

docker network ls

显示结果如下:

在这里插入图片描述

2、安装 mariadb 数据库容器


docker volume create --name mariadb_data
docker run -d --name mariadb \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env MARIADB_USER=bn_wordpress \
  --env MARIADB_PASSWORD=bitnami \
  --env MARIADB_DATABASE=bitnami_wordpress \
  --network bridge \
  --volume mariadb_data:/bitnami/mariadb \
  bitnami/mariadb:latest

3、安装 wordpress with NGINX 容器

成功安装 mariadb 后,查看容器 IP 地址,用于配置环境变量 WORDPRESS_DATABASE_HOST


docker volume create --name wordpress_data
docker run -d --name wordpress \
  -p 8080:8080 -p 8443:8443 \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env WORDPRESS_DATABASE_USER=bn_wordpress \
  --env WORDPRESS_DATABASE_PASSWORD=bitnami \
  --env WORDPRESS_DATABASE_NAME=bitnami_wordpress \
  --env WORDPRESS_DATABASE_HOST=172.17.0.2 \
  --network bridge \
  --volume wordpress_data:/bitnami/wordpress \
  bitnami/wordpress-nginx:latest

调试步骤

修改 /etc/config/dockerd

将 ‘iptables’ 项设置为 ‘0’

准备 443 端口 nginx 配置文件

默认 bitnami/wordpress-nginx 使用 UID 1001 用户运行 nginx,因此,当我们尝试监听 443 端口时,系统报错为,无法打开 443 特俗端口。因此,我们需要使用 root 用户来运行 nginx。
首先,获取 8443 端口的 nginx 配置文件,并修改为监听 443 端口,文件如下:
wordpress-root-https-server-block.conf

server {
    # Port to listen on, can also be set in IP:PORT format
    listen 443 ssl default_server;
    root /opt/bitnami/wordpress;
    # Catch-all server block
    # See: https://nginx.org/en/docs/http/server_names.html#miscellaneous_names
    server_name _;
    ssl_certificate      bitnami/certs/server.crt;
    ssl_certificate_key  bitnami/certs/server.key;
    # BEGIN Fix for WordPress plugins and themes
    # Certain WordPress plugins and themes do not properly link to PHP files because of symbolic links
    # https://github.com/bitnami/bitnami-docker-wordpress-nginx/issues/43
    rewrite ^/bitnami/wordpress(/.*) $1 last;
    # END Fix for WordPress plugins and themes
    # BEGIN WordPress
    # https://wordpress.org/support/article/nginx/#general-wordpress-rules
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
    # END WordPress
    # BEGIN Disable WordPress XML-RPC endpoint
    # Disable the outdated WordPress XML-RPC endpoint to prevent security vulnerabilities.
    # https://github.com/bitnami/containers/pull/51077
    location = /xmlrpc.php {
        deny all;
    }
    # END Disable WordPress XML-RPC endpoint
    include  "/opt/bitnami/nginx/conf/bitnami/*.conf";
}

准备 /certs 目录

wordpress 容器中使用自签名的 example.com 证书,后续我们将使用 acme 自动更新网址证书,因此,需要引入外部证书目录。
测试环境,将使用 OpenWrt LAN 端网址使用的自签名 OpenWrt 证书进行测试。
在 /myvolumes 目录中创建 /myvolumes/certs 目录,并在其中放入 OpenWrt 自签名证书。

暴露容器的 443 端口

通过 docker run --expose 443 来实现

重新生成 wordpress 容器

根据前述的设定,我们重新生成支持 443 端口的 wordpress 容器,命令如下:

docker run -d --name wordpress \
  -u root:daemon \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env WORDPRESS_DATABASE_USER=bn_wordpress \
  --env WORDPRESS_DATABASE_PASSWORD=bitnami \
  --env WORDPRESS_DATABASE_NAME=bitnami_wordpress \
  --env WORDPRESS_DATABASE_HOST=172.17.0.2\
  --network bridge \
  --expose 443 \
  -p 172.16.0.1:443:443 \
  -p 172.16.0.1:8443:8443 \
  -p 172.16.0.1:8080:8080 \
  --volume /opt/docker/myvolumes/certs:/certs \
  --volume /opt/docker/myvolumes/wordpress-root-https-server-block.conf:/opt/bitnami/nginx/conf/server_blocks/wordpress-root-https-server-block.conf:ro \
  --volume wordpress_data:/bitnami/wordpress \
bitnami/wordpress-nginx:latest

此处需要注意 user 需要指定为 root:daemon ,即在 daemon 组中的 root 用户,这样设定是为了配合 bitnami/wordpress-nginx 的所有权设定。
其中,nginx 默认使用 daemon:daemon 用户启动,php-fpm 则直接使用 user 的所有权设定启动,生成的 /opt/bitnami/php/var/run/www.sock 可以被同组用户访问,因此需要设定 user 为 root:daemon。否则将导致 php-fpm socket 无法访问,出现 502 gateway error 的错误。

wordpress 网址健康检查

bitnami/wordpress-nginx 的默认管理员用户为: user:bitnami
访问 https://localhost/wp-admin/site-health.php 根据提示进行调整

1、WP_AUTO_UPDATE_CORE 问题
在这里插入图片描述

修改 /opt/docker/volumes/wordpress_data/_data/wp-config.php,将

define( 'WP_AUTO_UPDATE_CORE', false );

修改为:

define( 'WP_AUTO_UPDATE_CORE', true );

2、HTTPS 设定问题

修改 /opt/docker/volumes/wordpress_data/_data/wp-config.php,将

define( 'WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/' );           
define( 'WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/' );

修改为:

define( 'WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/' );           
define( 'WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/' );

在这里插入图片描述


三、应用场景

使用 docker 镜像快速搭建 WordPress 运行环境


四、参考资料

1、OpenWrt as Docker container host

2、安装笔记-20240520-Windows-在 QEMU 中尝试运行 OpenWRT

3、调试笔记-20240524-Linux-扩展 OpenWrt-23.05 发行版 EXT4 镜像文件大小

4、Bitnami package for WordPress with NGINX

5、Assign Static IP to Docker Container and Docker-Compose


总结

本文记录在 Windows 的 QEMU 环境下运行 OpenWrt 安装调试 Docker 并配置 bitnami/Wordpress-with-NGINX 实现微信用户在线注册登录。

  • 18
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值