【调试笔记-20240525-Windows-配置 QEMU/x86_64 运行 OpenWrt-23.05 发行版并搭建 WordPress 博客网站】

调试笔记-系列文章目录

调试笔记-20240525-Windows-配置 QEMU/x86_64 运行 OpenWrt-23.05 发行版并搭建 WordPress 博客网站


文章目录

  • 调试笔记-系列文章目录
    • 调试笔记-20240525-Windows-配置 QEMU/x86_64 运行 OpenWrt-23.05 发行版并搭建 WordPress 博客网站
  • 前言
  • 一、调试环境
    • 操作系统:Windows 10 专业版
    • 调试环境
    • 调试目标
  • 二、调试步骤
    • 开启 Windows 虚拟化功能 WHPX
    • 配置上网功能
      • 网络拓扑结构
      • 配置 OpenWrt 远程连接
      • 配置 LuCI 管理界面
      • 安装 nginx Web 服务器
      • 安装 PHP8 FPM 服务
      • 安装 MariaDB/MySQL 数据库服务
      • 安装 WordPress 博客 CMS
  • 三、应用场景
    • 个人博客站点
  • 四、参考资料
  • 总结


前言

本文记录在 Windows 环境下使用 QEMU 运行 OpenWrt-23.05 发行版本的方法。

实验使用的电脑如下:

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 系统开启 WSL 支持,并已安装 Ubuntu 20.04 发行版本

参考【安装笔记-20240520-Windows-自定义 WSL2 安装位置】


调试目标

在 Windows/QEMU 中运行 OpenWrt-23.05 发行版本。

说明:按照【调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件】编译好 OpenWrt 固件后,我们尝试配置好 QEMU ,使其完整运行 OpenWrt 各项功能,包括:

1、能上网
2、可以访问 OpenWrt 配置界面
3、开启对外的 Web 服务功能
4、提供个人博客功能
5、更多……


二、调试步骤

开启 Windows 虚拟化功能 WHPX

  • 在 “启用或关闭 Windows 功能” 中勾选 “Windows 虚拟机监控程序平台"

在这里插入图片描述

配置上网功能

网络拓扑结构

  • OpenWrt eth0: LAN
  • OpenWrt 主机配置为客户设备模式,挂在 QEMU 的 SLIRP 网络中
  • OpenWrt 主机 LAN 网卡开启 DHCP-client 模式,自动获取 IP 地址
  • QEMU 网络设备的设置中增加 Windows 主机端口转发,将 Windows 主机的 50022 端口转发到 QEMU 访客系统(即 OpenWrt 主机)的 22 端口,从而实现从 Windows 主机通过 SSH 连接访问 OpenWrt 主机系统的功能

在这里插入图片描述

接下来我们一步一步实现前述功能需求。

配置 OpenWrt 远程连接

1、设置 QEMU 启动选项,输入以下命令:

..\qemu\8.2.0\qemu-system-x86_64.exe -L "D:\qkd-app\vmos\data" -cpu "Penryn,vendor=GenuineIntel,+ssse3,+sse4.2" -M  "q35,accel=whpx,kernel-irqchip=off" 	-m 4G -bios "data\ovmf.fd" -netdev "user,id=hn0,hostfwd=tcp::50022-:22" -device "e1000,netdev=hn0,id=nic1" -debugcon "file:debug.log" -global "isa-debugcon.iobase=0x402" -hda openwrt-23.05.3-x86-64-generic-ext4-combined-efi.img

在这里插入图片描述

2、配置 OpenWrt 主机为客户设备模式,并开启 DHCP-client 功能

在 OpenWrt 主机终端输入以下命令:

uci set network.lan.proto="dhcp"
uci commit network
service network restart

然后,输入以下命令检查 OpenWrt 主机是否正确获取到 QEMU SiLRP 网络 DHCP 服务器分配的 IP 地址

ip addr

在这里插入图片描述

从上图可见,OpenWrt 主机已经成功获得 10.0.2.15 的 IP 地址

3、从 Windows 主机通过 SSH 连接 OpenWrt 访客主机

主机:localhost
端口:50022

在这里插入图片描述

成功登录 OpenWrt 主机后,界面如下:

在这里插入图片描述

4、测试网络联通性

在 PuTTY 窗口输入以下命令:

ping www.baidu.com

在这里插入图片描述

上图可见,OpenWrt 访客主机能访问到 www.baidu.com ,网络通畅。

配置 LuCI 管理界面

5、修改管理页面 uhttpd 服务器的监听端口,输入以下命令:

uci set uhttpd.main.listen_http='0.0.0.0:50080'
uci add_list uhttpd.main.listen_http='[::]:50080'
uci set uhttpd.main.listen_https='0.0.0.0:50443'
uci add_list uhttpd.main.listen_https='[::]:50443'
uci commit uhttpd
/etc/init.d/uhttpd restart

完成后,使用 netstat 命令确认是否修改成功

netstat -a -n -t

在这里插入图片描述

上图可见,已经将 uhttpd 的监听端口修改到 50080 和 50443 了。

6、删除 dnsmasq 包

观察到 OpenWrt 主机的 53 端口有 dnsmasq 进程在监听,此进程提供 DHCP 和 DNS 服务,本例中我们不需要提供这两项服务,执行以下命令删除 dnsmasq 包:

opkg remove dnsmasq

重启 OpenWrt 主机后,输入以下命令确认是否删除并停止了 DHCP 和 DNS 服务:

netstat -p -a -n -t

在这里插入图片描述

安装 nginx Web 服务器

7、安装 nginx HTTP 服务器,执行以下命令:

opkg update
opkg install nginx-full

默认 nginx 配置给 OpenWrt 的 LuCI 使用。
因此,我们需要关闭此设置,并设置新的站点,执行以下命令:

uci set nginx.global.uci_enable=false
uci commit

接下来我们为 nginx 创建一个 example.com 的网站,执行以下命令:

uci add nginx server
uci rename nginx.@server[-1]=example_com
uci add_list nginx.example_com.listen='80'
uci add_list nginx.example_com.listen='[::]:80'
uci set nginx.example_com.server_name='example.com'
uci set nginx.example_com.client_header_timeout='10s'
uci add_list nginx.example_com.include='conf.d/example.com.locations'

先设置此站点不可用,执行以下命令:

uci set nginx.example_com=disable
uci commit nginx

创建站点配置文件 /etc/nginx/conf.d/example.com.locations ,内容如下:

location /srv/www {
	access_log off; # default: not logging accesses.
	# access_log /proc/self/fd/1 openwrt; # use logd (init forwards stdout).
	# error_log stderr; # default: logging to logd (init forwards stderr).
	error_log /dev/null; # disable error logging after config file is read.
	# (state path of a file for access_log/error_log to the file instead.)
	index index.html;
}

将配置给 LuCI 的站点设置为不可用,执行以下命令:

uci set nginx._lan=disable
uci set nginx._redirect2ssl=disable
uci commit nginx

修改 nginx 的 uci 模板文件 /etc/nginx/uci.conf.template ,将 root 设置为 /srv/www ,文件内容如下:

# Consider using UCI or creating files in /etc/nginx/conf.d/ for configuration.
# Parsing UCI configuration is skipped if uci set nginx.global.uci_enable=false
# For details see: https://openwrt.org/docs/guide-user/services/webserver/nginx
# UCI_CONF_VERSION=1.2

worker_processes auto;

user root;

include module.d/*.module;

events {}

http {
        access_log off;
        log_format openwrt
                '$request_method $scheme://$host$request_uri => $status'
                ' (${body_bytes_sent}B in ${request_time}s) <- $http_referer';

        include mime.types;
        default_type application/octet-stream;
        sendfile on;

        client_max_body_size 128M;
        large_client_header_buffers 2 1k;

        gzip on;
        gzip_vary on;
        gzip_proxied any;

        root /srv/www;

        #UCI_HTTP_CONFIG
        include conf.d/*.conf;
}

在这里插入图片描述

创建 HTTP 服务器测试文件,输入以下命令:

mkdir -p /srv/www
echo "<html><head><title>test</title></head><body>Hello, nginx!</body></html>" | tee /srv/www/index.html

设置 example.com 站点为可用,执行以下命令:

uci set nginx.example_com=server
uci commit nginx

重启 nginx 服务,执行以下命令:

service nginx restart

通过 Windows 主机的浏览器访问目标地址 localhost:60080 ,此处需注意,在 QEMU 启动参数中需要添加端口转发设置,将 Windows 主机的 60080 端口转发到 OpenWrt 访客机器的 80 端口,设置如下:

-netdev "user,id=hn0,hostfwd=tcp::50022-:22,hostfwd=tcp::50080-:50080,hostfwd=tcp::50443-:50443,hostfwd=tcp::60080-:80,hostfwd=tcp::60443-:443"

在这里插入图片描述

为 example.com 站点配置 SSL,执行以下命令:

uci del_list nginx.example_com.listen='80'
uci del_list nginx.example_com.listen='[::]:80'
uci add_list nginx.example_com.listen='443 ssl'
uci add_list nginx.example_com.listen='[::]:443 ssl'
uci set nginx.example_com.ssl_certificate='/etc/nginx/conf.d/example.com.crt'
uci set nginx.example_com.ssl_certificate_key='/etc/nginx/conf.d/example.com.key'
uci set nginx.example_com.ssl_session_cache='shared:SSL:32k'
uci set nginx.example_com.ssl_session_timeout='64m'
uci commit nginx

添加自签名证书,执行以下命令:

nginx-util add_ssl example.com

重启 nginx 服务,执行以下命令:

service nginx restart

通过 Windows 主机的浏览器访问目标地址 localhost:60443 ,此处需注意,在 QEMU 启动参数中需要添加端口转发设置,将 Windows 主机的 60443 端口转发到 OpenWrt 访客机器的 443 端口,设置如下:

-netdev "user,id=hn0,hostfwd=tcp::50022-:22,hostfwd=tcp::50080-:50080,hostfwd=tcp::50443-:50443,hostfwd=tcp::60080-:80,hostfwd=tcp::60443-:443"

在这里插入图片描述

至此,nginx HTTP 服务器配置完成。

安装 PHP8 FPM 服务

8、安装 PHP8 FPM,执行以下命令:

opkg update
opkg install php8-fpm

在 nginx 配置目录中添加配置文件 /etc/nginx/conf.d/php8.locations ,内容如下:

location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    if (!-f $document_root$fastcgi_script_name) {
        return 404;
    }
    # Mitigate https://httpoxy.org/ vulnerabilities
    fastcgi_param HTTP_PROXY "";
    #error_log /dev/null;
    fastcgi_connect_timeout 300s;
    fastcgi_read_timeout 300s;
    fastcgi_send_timeout 300s;
    fastcgi_buffer_size 32k;
    fastcgi_buffers 4 32k;
    fastcgi_busy_buffers_size 32k;
    fastcgi_temp_file_write_size 32k;
    client_body_timeout 10s;
    send_timeout 60s; # default, increase if experiencing a lot of timeouts.
    output_buffers 1 32k;
    fastcgi_index index.php;
    fastcgi_pass unix:/var/run/php8-fpm.sock;
    # include the fastcgi_param setting
    include fastcgi_params;

    # SCRIPT_FILENAME parameter is used for PHP FPM determining
    #  the script name. If it is not set in fastcgi_params file,
    # i.e. /etc/nginx/fastcgi_params or in the parent contexts,
    # please comment off following line:
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

    fastcgi_param  PATH_INFO          $fastcgi_path_info;
    fastcgi_param  PATH_TRANSLATED    $document_root$fastcgi_path_info;
}

同步修改 /etc/php.ini 文件中的以下配置项:

doc_root = "/srv/www"
cgi.force_redirect = 1
cgi.redirect_status_env = "yes"

创建 PHP 测试文件,输入以下命令:

echo "<?php phpinfo(); ?>" | tee /srv/www/index.php

配置成功,显示如下界面:

在这里插入图片描述

安装 MariaDB/MySQL 数据库服务

9、安装 MariaDB/MySQL 服务器

opkg install mariadb-server mariadb-server-extra mariadb-client
opkg install coreutils-stty

修改配置文件 /etc/mysql/conf.d/50-server.conf ,确认以下设置:

datadir         = /srv/mysql
tmpdir          = /tmp

创建数据目录,执行以下命令:

mkdir -p /srv/mysql
mysql_install_db --force
chown mariadb.mariadb -R /srv/mysql/

启动 MariaDB,执行以下命令:

uci set mysqld.general.enabled='1'
uci commit

service mysqld restart

检查 MariaDB 的运行状态,执行以下命令:

/etc/init.d/mysqld status

创建 MariaDB 数据库,执行以下命令,并按要求回答:

/usr/bin/mysql_secure_installation -u root

测试数据库连接,执行一下命令:

mysql -u root

在 mysql 客户端输入:

SHOW DATABASES;

在这里插入图片描述

支持 MariaDB 数据库服务器安装配置好了。

安装 WordPress 博客 CMS

10、安装 WordPress 博客 CMS,当前版本为 6.5.3

下载最新版本 WordPress,下载地址:

https://cn.wordpress.org/latest-zh_CN.zip

在 OpenWrt 的控制台执行以下命令:

wget https://cn.wordpress.org/latest-zh_CN.zip

WP 6.5.3 的安装要求如下:

在这里插入图片描述

解压安装文件,并放到 Web 服务器工作目录中,执行以下命令:

unzip latest-zh_CN.zip
mv wordpress /srv/www/blog

安装 PHP MySQL Improved Extension 模块

opkg update
opkg install php8-mod-mysqli

创建 WP 需要的数据库

mysql -u root

创建 WP 专用数据库,在 MariaDB 的客户终端输入以下命令:

create database wordpress;

创建 WP 专用数据库用户,在 MariaDB 的客户终端输入以下命令:

create user wordpress;

给 WP 数据库用户的赋予该数据库的所有权限,在 MariaDB 的客户终端输入以下命令:

grant all privileges on wordpress.* to 'wordpress' identified by 'wordpress123';

配置好后,在 Windows 主机浏览器中输入网址:

https://localhost/blog/index.php

出现 WP 的安装页面,根据前边的数据库配置填入相应信息:

数据库:wordpress
用户:wordpress
密码:wordpress123
主机:127.0.0.1

需要注意,主机用 “127.0.0.1” 而不是 “localhost”,因为默认 MariaDB 监听端口在 “127.0.0.1:3306”,由于 OpenWrt 主机配置了 IPv4 和 IPv6 地址,当解析 localhost 时,首先解析到 ::1 的 IPv6 地址,这样导致如果主机输入 localhost ,WordPress 首先到 “::1” 的 IPv6 地址端口 “3306” 访问。

站点健康检查,如下图:

在这里插入图片描述

安装需要的模块,执行以下命令:

opkg update
opkg install php8-mod-gd
opkg install php8-mod-curl
opkg install php8-mod-exif
opkg install php8-mod-fileinfo
opkg install php8-mod-mbstring
opkg install php8-mod-zip
opkg install php8-mod-filter
opkg install php8-mod-iconv
opkg install php8-mod-intl
opkg install php8-pecl-imagick
service php8-fpm restart

解决读写权限问题,执行以下命令:

chown nobody.nogroup /srv/www/blog/ -R

解决 “XML or PCRE extensions not loaded!” 的问题,执行以下命令:

opkg update
opkg install php8-mod-xml
opkg install php8-mod-xmlreader
opkg install php8-mod-xmlwriter

修改 example.com.locations , 解决 REST API 和 伪静态页面问题

location / {
        access_log off; # default: not logging accesses.
        # access_log /var/run/nginx_access_log;
        # access_log /proc/self/fd/1 openwrt; # use logd (init forwards stdout).
        # error_log stderr; # default: logging to logd (init forwards stderr).
        error_log /dev/null; # disable error logging after config file is read.
        # error_log /var/run/nginx_error_log;
        # (state path of a file for access_log/error_log to the file instead.)
        index index.html index.htm index.php;
        try_files $uri $uri/ /index.php$is_args$args;
        location /blog/ {
                try_files $uri $uri/ /blog/index.php?$args;
                rewrite /wp-admin$ $scheme://$host$uri/ permanent;
        }
}

安装 WP Fastest Cache 插件,解决没有缓存问题。

检查站点健康状态:

在这里插入图片描述

至此,用 WordPress 搭建的个人博客网站已经准备就绪。


三、应用场景

个人博客站点

在这里插入图片描述


四、参考资料

1、WSL 的基本命令
2、旧版 WSL 的手动安装步骤
3、Windows 虚拟机监控程序平台
4、Windows Hypervisor Platform API Definitions
5、Windows Hypervisor Platform Instruction Emulator API Definitions and Support DLLs
6、QEMU Documentation/Networking
7、OpenWrt on x86 hardware (PC / VM / server)
8、The UCI system
9、Set up a LAMP webserver stack
10、ownCloud or NextCloud


总结

本文记录在 Windows 环境下用 QEMU 运行 OpenWrt 并安装配置 LNMP 服务器和 WordPress 博客 CMS 的方法,并指出过程中遇到的问题及解决方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/639980.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【EXCEL_VBA_基础知识】15 使用ADO操作外部数据

课程来源&#xff1a;王佩丰老师的《王佩丰学VBA视频教程》&#xff0c;如有侵权&#xff0c;请联系删除&#xff01; 目录 1. 使用ADO链接外部数据源 2. 常用SQL语句&#xff08;Execute(SQL语句)&#xff09; 2.1 查询数据、查询某几个字段、带条件查询、合并两表数据、插…

OpenWrt 23.05 安装中文语言包 教程 软路由实测 系列三

1 web 登录 #更改阿里云下载源&#xff0c;可参考第一篇文章:OpenWrt U盘安装使用 详细教程 x86/64平台 软路由实测 系列一-CSDN博客

【Linux】icmp_seq=1 Destination Host Unreachable

执行ping 命令提示&#xff1a;From 192.168.XX.XX icmp_seq1 Destination Host Unreachable 这个错误消息通常表示以下几种情况之一&#xff1a; 网络连接问题&#xff1a;目标主机可能没有连接到网络&#xff0c;或者网络中的某个路由器无法将数据包转发到目标主机。 目标主…

Vue从入门到实战Day11

一、为什么要学Vue3 Vue3官网&#xff1a;简介 | Vue.js 1. Vue3的优势 2. Vue2选项式API vs Vue3组合式API 示例&#xff1a; 二、create-vue搭建Vue3项目 1. 认识create-vue create-vue是Vue官方新的脚手架工具&#xff0c;底层切换到了vite(下一代构建工具)&#xff0c;为…

【OpenGL实践-09】用图元作图笔记

文章目录 一、说明二、下列程序使用库三、OpenGL图元盘点四、图元解析4.1 线段4.2 表面surface4.3 三角形表面surface 五、图元作图示例5.1 三角链和圆环GL_TRIANGLE_STRIP5.2 三角链和圆环 六、三维物体渲染6.1 直纹面6.2 旋转面 七、GLSL程序优化代码7.1 顶点着色器7.2 几何着…

AI视频教程下载:全面掌握ChatGPT和LangChain开发AI应用(附源代码)

这是一门深入的课程&#xff0c;涉及ChatGPT、LangChain和Python。打造专注于现实世界AI集成的AI应用&#xff0c;课件附有每一节涉及到的源代码。 **你将学到什么&#xff1a;** - 将ChatGPT集成到LangChain的生产风格应用中 - 使用LangChain组件构建复杂的文本生成管道 - …

AI助力农田作物智能化激光除草,基于轻量级YOLOv8n开发构建农田作物场景下常见20种杂草检测识别分析系统

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;技术在各个领域的应用愈发广泛&#xff0c;其中农业领域也不例外。近年来&#xff0c;AI助力农田作物场景下智能激光除草的技术成为了农业领域的一大亮点&#xff0c;它代表着农业智能化、自动化的新趋势。智…

【小tips】当机器里面有多个版本的gcc时,该如何切换当前的gcc版本?

背景切换gcc版本 背景 有时候因为项目需求&#xff0c;可能不同的项目需要不同的gcc版本&#xff0c;所以机器上会安装多个版本的gcc&#xff0c;那我们如何切换到想要使用的版本&#xff1f; 切换gcc版本 比如我的机器上有两个版本的gcc&#xff1a; 我当前的版本是gcc-4…

node版本管理nvm详细教程

安装 nvm 之前先清理node相关的所有配置&#xff0c;如环境变量、.npmrc文件、node_cache、node_global 等 一、下载nvm 任选一处下载即可 官网&#xff1a;Releases coreybutler/nvm-windows (github.com) 码云&#xff1a;nvm下载仓库: nvm下载仓库 百度网盘&#xff1…

strcpy函数及其模拟实现

1. 前言 在本文中&#xff0c;我将带着各位读者从了解strcpy函数&#xff0c;到会用strcpy函数去实现我们编程时的需求&#xff0c;最后再来自己模拟实现一个strcpy函数。 “毕竟只有自己做的&#xff0c;自己才敢放心食用“&#x1f602;&#x1f602;&#x1f602; 2. strc…

开源网页视频会议,WebRTC音视频功能比较

1. 概述 OpenAI 发布了新一代旗舰生成模型 GPT-4o,这是一款真正的多模态大模型,可以「实时对音频、视觉和文本进行推理」。 支持与 AI 实时语音对话,且响应时间达到毫秒级;交互中可识别人类情绪并以相应的情感做出回应;多语言能力的提升,WebRTC 成为大模型关键能力。 视频会议…

系统架构师-考试-基础题-错题集锦2

108.总线-全双工、半双工&#xff1a; 109.软件配置管理-产品配置&#xff1a; 产品配置&#xff1a;指一个产品在其生命周期各个阶段所产生的各种形式和各种版本的文档、计算机程序、部件及数据的集合。 注意&#xff1a;选项中的需求规格说明、设计说明等均可归属于文档。 …

远动通讯屏柜的组成及各装置的作用

远动通讯屏柜的组成及各装置的作用 远动通讯屏是基于公共电网安全而投入的远方监控遥控设备&#xff1b;主要由远动装置、通讯管理机、交换机、调制解调器、GPS对时装置、数字通道防雷器、模拟通道防雷器、插线板、空气开关、屏柜及附件等设备组成、标配尺寸2260*800*600&…

软考之信息系统管理知识点(3)

流水线&#xff1a;是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的&#xff0c;它们可同时为多条指令的不同部分进行工作&#xff0c;以提高各部件的利用率和指令的平均执行速度。 编译得过程 关系数据库是表的集合 …

初步学习pygame,使用pygame搭建简单的窗口效果

在VSCode上使用pygame 第一步&#xff1a;创建 Python 虚拟环境 打开 VSCode 中的 Terminal&#xff08;在菜单栏中选择 View > Terminal&#xff09;使用 cd 命令切换到你的项目文件夹输入以下命令来创建一个新的虚拟环境&#xff1a; python3 -m venv env这将在你的项目…

计算机毕业设计hadoop+spark微博舆情大数据分析 微博爬虫可视化 微博数据分析 微博采集分析平台 机器学习(大屏+LSTM情感分析+爬虫)

电商数据建模 一、分析背景与目的 1.1 背景介绍 电商平台数据分析是最为典型的一个数据分析赛道&#xff0c;且电商数据分析有着比较成熟的数据分析模型&#xff0c;比如&#xff1a;人货场模型。此文中我将通过分析国内最大的电商平台——淘宝的用户行为&#xff0c;来巩固数…

element ui 的密码输入框点击显示隐藏密码时,图标随之改变

场景图&#xff1a; 原理&#xff1a; 通过修改el-input框的type属性&#xff0c;来设置显示或者隐藏。从而改变图标地址。 <el-input class"passwordinput" :type"pwdObj.pwdType" ref"pwdInput" placeholder"密码"v-model"…

Unity LayerMask避坑笔记

今天使用Physics2D.OverlapAreaNonAlloc进行物理检测时候&#xff0c;通过LayerMask.NameToLayer传入了int值的LayerMask&#xff0c;结果一直识别不到&#xff0c;经过Debug才找到问题&#xff0c;竟是LayerMask的“值”传输有问题&#xff0c;记录一下。 直接贴代码输出结果&…

蓝桥杯Web开发【模拟题三】15届

1.创意广告牌 在"绮幻山谷"的历史和"梦幻海湾"的繁华交汇之处&#xff0c;一块创意广告牌傲然矗立。它以木质纹理的背景勾勒出古朴氛围&#xff0c;上方倾斜的牌子写着"绮幻山谷的风吹到了梦幻海湾"&#xff0c;瞬间串联了过去与现在&#xff0…

AI爆文写作:关注热点,提前埋伏好关键词,吃系统的热点推荐,吃搜索流量,让你的文章直接爆了!

做内容&#xff0c;要对热点敏感。 小米汽车的发布会时间&#xff0c;我们是不是提前就知道&#xff0c;发布会前&#xff0c;大家最关注的就是价格。 你看这个相关关键词搜索&#xff0c;10W太多了。 我看到有博主在发布会前&#xff0c;埋伏了一篇&#xff0c;公众号也有推…