调试笔记-系列文章目录
调试笔记-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 实现微信用户在线注册登录。
标签:20240730,--,微信,nginx,wordpress,23.05,docker,bitnami,调试 From: https://blog.csdn.net/dvd37784302/article/details/140800322