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

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

时间:2024-07-30 19:26:11浏览次数:15  
标签:20240730 -- 微信 nginx wordpress 23.05 docker bitnami 调试

调试笔记-系列文章目录

调试笔记-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

相关文章

  • 小白如何制作微信小程序的视频播放器应用
    制作微信小程序的视频播放器应用主要涉及以下几个方面:基本页面结构、视频列表展示、视频播放控制和视频源切换。下面是一个详细的代码案例,共计超过5000字。创建基本页面结构首先,我们需要在微信开发者工具中创建一个新的小程序项目,并在app.json文件中配置页面路径和窗口样式:{......
  • 微信小程序开发中的动画效果和页面过渡
    微信小程序的动画效果和页面过渡可以通过使用wx.createAnimation()方法来实现。wx.createAnimation()可以创建一个Animation对象,然后我们可以通过该对象调用不同的方法来控制动画的效果和过渡。下面我将详细介绍动画效果和页面过渡的常用方法和案例代码。在开始之前,请确保已经......
  • 微信小程序开发中的数据分享和数据传递
    微信小程序开发中的数据分享和数据传递是非常重要的,它涉及到不同页面之间的数据交换和共享。在本文中,我将为您详细介绍微信小程序中数据分享和数据传递的方法,并提供相应的代码案例。数据分享在微信小程序开发过程中,我们经常需要将数据分享给其他用户。微信小程序提供了两种主......
  • 计算机毕业设计django/flask+uniapp私人定制商品订单系统hbuiderx微信小程序
    私人订制订单发布与对应商品出售平台方面的任务繁琐,以至于每年都在私人订制订单发布与对应商品出售平台这方面投入较多的精力却效果甚微,私人订制订单发布与对应商品出售平台的目标就是为了能够缓解私人订制订单发布与对应商品出售平台管理面临的压力,让私人订制订单发布与对......
  • 微信小程序文件上传(唤起文件资源管理器)
    问题在微信小程序开发开发中,可能会遇到需要上传文件的场景,用户需要从手机文件管理器中选择文件,然后上传到服务器.但是微信小程序只支持选择回话中的文件,无法从手机中选择方案我们可以通过小程序的web-view实现.通过html的实现文件上传.代码这个代码是基于微信小程......
  • 微信私域运营工具分享
    解决微信多管理难的问题,多微信工作重复做,效率低的问题,防止飞单、删除客户,解决私域运营的难题......
  • 微信小程序批量检测是否被封禁异常接口
              ​      <?php//要检测的appid列表$appids=array('appid1','appid2','appid3');//使用实际的appid//循环调用接口检测小程序状态foreach($appidsas$appid){    $url='https://down.ychengsnsm.com/xcx/checkxcx.php?appi......
  • 轻松安装微信分身,苹果手机用户必看!
    在当前的数字时代,微信已成为我们生活中不可或缺的一部分。无论是工作沟通,还是亲朋好友间的日常交流,微信都扮演着极为重要的角色。但有时候,我们可能需要在一个设备上同时使用两个微信账号——一个用于私人生活,另一个则处理工作相关的事务。 对于安卓用户来说,微信分身并不是什......
  • 微信公众号发送模板消息java
    packagecom.cloud.module.management.message.handler.mp;importcn.hutool.core.util.ObjectUtil;importcn.hutool.core.util.StrUtil;importcom.alibaba.fastjson2.JSON;importcom.alibaba.fastjson2.JSONObject;importcom.cloud.module.management.common.const......
  • 在PC端打开微信接收的文件,会出现只读的情况,怎么办?
    如您在电脑端打开微信接收的文件,出现只读的情况,请先检查您的微信软件版本是否是3.9版本;如微信版本是3.9版本,该问题原因是由于微信升级,属于微信新特性。临时解决方案:1、建议另存为文件到其他的路径下再行打开。可以前往查看微信下载文件的目录,将文件夹目录权限中的【只读】取......