0%

之前有一个粗略的记录,重新整理

1、固件
在线生成固件 https://nodemcu-build.com
我在线生成一直提示 模块太多,尚不知原因 以后再研究。
目前暂时用的nodemcu_float_0.9.6-dev_20150704.bin
micropython的固件
http://micropython.org/download/all/
2、驱动程序
macos可以自动识别一部分串口芯片 另外CH340的驱动也可以单独安装,其他串口芯片驱动网上搜索一下,部分芯片不支持catalina有点蛋疼
驱动安装后 查看
ls /dev/tty.*
/dev/tty.AirPods-WirelessiAP /dev/tty.usbserial-FD120
/dev/tty.Bluetooth-Incoming-Port /dev/tty.wchusbserialfd120
我这里是
Serial port /dev/cu.wchusbserialfd120
3、烧录工具
安信可的工具挺好的,但是只支持win。我选择nodemuc-pyFlasher不用另外折腾Python了。
https://github.com/marcelstoer/nodemcu-pyflasher/releases
选择串口 固件 115200 DIO yes,wipe all data 就能自动烧录了 很简单。

4、开发和调试工具
Win下可以用安信可的工具,挺好用的。还有SSCOM putty等。
mac下 串口调试和上传工具 我直接选 ESPlorer 万能的vsc了。vsc只做为编辑器使用,自动添加lua文件支持扩展就ok了。
ESPlorer https://esp8266.ru/esplorer/
解压后直接运行 ESPlorer.jar 至少需要javase7 以上版本java环境 这个不多少

关于ESPlorer 的速度选择,nodemcu应该选择9600 micropython选115200 不然会乱码

所有工具我存放到百度网盘一份,或许会删除 如果不能下载 也不要联系我

下载CH34x的驱动

下载烧写工具

https://github.com/marcelstoer/nodemcu-pyflasher/releases

下载 ESPlorer

https://esp8266.ru/esplorer/#download

固件 下载

MicroPython
http://micropython.org/download/all/

http://micropython.org/resources/firmware/esp8266-ota-20200902-v1.13.bin

Nodemcu 也就是 lua方法
在线生成固件 https://nodemcu-build.com

驱动安装后 查看
ls /dev/tty.*
/dev/tty.AirPods-WirelessiAP /dev/tty.usbserial-FD120
/dev/tty.Bluetooth-Incoming-Port /dev/tty.wchusbserialfd120
我这里是
Serial port /dev/cu.wchusbserialfd120

Python的固件 在pyflasher写入的时候选 115200 Dual I/O (DIO)

在 ESPlorer查看的时候也是选择 115200 打开后显示乱码 稍后显示 就好了
MicroPython v1.13 on 2020-09-02; ESP module with ESP8266
Type “help()” for more information.

几年前就萌生了使用最广泛使用的php虚拟主机反向代理一些网站内容,并缓存到本地的想法,但是一直没有付诸行动。

关于运行环境的设想
1、兼容php5.2 - php7 优先使用php5.2开发。 以便适配廉价虚拟主机
2、缓存大小可以限制,以避免超出容量

关于缓存方案的设想
因为廉价虚拟主机 多数自带的mysql数据库很小,很多10-20M的,还有mysql的备份迁移多有不便,不太符合这里的需求。所以不打算才用mysql的方式缓存数据库。
设想过直接使用sqlite 作为索引 并做缓存使用。但是考虑到sqlite的高并发写入 经常出现文件锁死。所以暂时搁置这个方案。

折中方案
缓存保存方案
sqlite 读写分离 + 临时文件缓存 + 定时任务导入缓存到sqlite
缓存大小限制方案
1、sqlite限制 可以限制sqlite文件,文件过大不再保存数据,限制为0的话 不使用sqlite数据库。
2、临时缓存文件 总大小超过限制后 也不再保存数据。限制为0的话,不进行临时缓存。
3、临时缓存文件 文件数量 超过限制后 也不在保存,以免导致服务器io堵塞。为0 不限制文件数量。
sqlite和临时缓存总大小 都为0的情况下,不缓存 直接反代。
缓存更新方案
1、强制更新 访问地址中带正确的 lyh_key参数,即强制访问远程数据 并保存到sqlite 忽略容量限制和文件类型限制
2、自动更新 缓存时间过期后,删除数据库缓存,并请求最新远程文件到临时缓存
跳过文件方案
1、url中带指定字符的文件 只反代不保存缓存。例如 .zip .exe .jpg等 多个字符用 | 隔开
2、本地缓存已经有的
定时任务导入缓存文件方案
因为sqlite的高并发读取性能很好,但是高并发写入 容易导致文件锁死 ,所以这里采取 日常更新只保存到文件 并不会更新到数据库。定时任务触发后,批量读取本地文件 并导入到sqlite 然后清空临时缓存。
默认采取 前台输出script 调用php文件的方式,也可以另行使用Python 或其他方式加入到计划任务处理。
字符串替换方案
为方便管理 数据库和文件中 保存原始代码,不进行替换。前台输出的时候 进行替换。

加密方案

/_data 目录中保存sqlite文件
_blank_cache_list.db 空白缓存文件数据库
_site_id_cache_domain_com.db 对应的站点缓存数据
CREATE TABLE file (
md5 CHAR (32) PRIMARY KEY,
file BLOB (2147483647),
time TEXT
);

/_cache_temp 未录入缓存的数据
/site_id 对应站点id
_url(md5).file 对应的文件内容
_url(md5).txt url地址记录

定时任务
获取/_cache_temp/site_id/下所有txt文件 并读取里面的url和file内容 导入到_site_id_cache_domain_com.db
前台 script 触发

文件查询 先查询 sqlite数据库 没有的话 读取cache文件,依旧没有的话读取远程文件 并写入到cache

在MacBook Pro (13-inch, Early 2011) | macos 10.15下测试通过
镜像选择 win10 2004
cn_windows_10_consumer_editions_version_2004_updated_aug_2020_x64_dvd_0db4f0fa.iso

准备u盘一个 8G以上的

在磁盘管理工具 里面 点抹掉 把U盘格式化为主引导记录 单一的fat分区

打开启动转换助理,只勾选 从apple下载全新的windows支持
如果提示没有足够的磁盘空间,那就是没办法装了,需要增加一个硬盘 或者清理一下磁盘空间,如果有额外的磁盘这里 点好

下一步 选择u盘 等待下载驱动 如果有驱动的话 忽略这步。
驱动下载完成后,U盘多出两个文件夹 bootcamp 和 $WinPEDriver$

调整分区
打开磁盘工具,我这里是另外一个光驱位ssd上安装win10的
抹掉,选择 GUID分区

点分区,添加一个分区,命名为 bootcamp 分给他35g 格式就选 macos扩展日志

顺便新建一个分区 data 用于交换数据 ,我这里大小选择的15G 格式ExFat

最终的分区结构

把刚刚u盘里面的 两个文件夹 bootcamp 和 $WinPEDriver$ 复制到这exfat分区

准备制作u盘启动盘

我这里选用了

微PE工具箱V2.1 64位

http://www.wepe.com.cn/download.html 在pd win7下制作成启动u盘

重新启动

winpe下安装系统到

打开终端 输入
diskutil list
查看磁盘情况
找到一个
/dev/disk3 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *31.1 GB disk3
1: DOS_FAT_32 UNTITLED 31.1 GB disk3s1

就是我的32G的u盘了,记住 /dev/disk3
取消挂载
diskutil umountDisk /dev/disk3
写入

cd ~/Downloads
sudo dd bs=10m if=cn_windows_10_consumer_editions_version_2004_updated_aug_2020_x64_dvd_0db4f0fa.iso of=/dev/rdisk3

这里把disk3改为rdisk3 能加快一些烧写速度
/dev/rdisk是raw模式存取,接近kernel原生系統效率 所以会比直接用/dev/disk快很多
bs建议10m左右 一次性写入10M数据。 记得m小写

输入密码等待 usb2.0 烧一个5G镜像 需要4-6分钟的,耐心等待
弹出
diskutil eject /dev/disk3
重新拔插一下看看,没问题的话

按option 选择efi启动 ,安装win10,安装位置选择刚刚新建的bootcamp分区

安装完win10后,按照提示安装 data分区 里面的bootcamp以及驱动

ios13系统下测试。已经记住密码的情况下,如果网页内某些元素输入的时候会提示 是否登录xxxx.com?

1
2
<input type="number" onfocus="this.placeholder=''" name="number_bin" placeholder="" 
autocomplete="off">

这样是可以的,经过初步测试
单独加 autocomplete=”off” 无效
input 以及form 的name id等属性里面 以及

1
<lable></lable>

可以出现 login user 等字符
很鬼畜的是 placeholder 也可以有这类字符,中文字符用户名 密码 登录之类的字符也不可以出现

jsdeliver 几乎是最好的github加速工具了哈

打开 /themes/next-7.8.0/_config.yml

搜索 //cdn.jsdelivr.net 把对应的空配置修改为顶部的地址就可以了

最后的

1
2
3
4
5
6
7
# Assets
css: css
js: js
images: images
```
修改为,

Assets

css: //cdn.jsdelivr.net/gh/joyanhui/[email protected]/css
js: //cdn.jsdelivr.net/gh/joyanhui/[email protected]/js
images: //cdn.jsdelivr.net/gh/joyanhui/[email protected]/images

```

其中 joyanhui是我github用户名 blog.leiyanhui.com就是repositorie了

hexo g -d 一次完毕

之前试过用pd或者VM跑centos 都有各种小问题。昨天有朋友告诉我有现成的docker方案 所以重新尝试一下。

1、安装docker
官网直接下载 按照提示安装

https://www.docker.com/products/docker-desktop
阿里云镜像下载地址
http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/

2、配置docker(此步骤非必须的)

修改为国内镜像  
阿里云是专用的速度还不错  打开阿里云登录,然后打开 容器镜像服务 镜像加速器 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
可以获取到类似 的地址
https://to16q0o6.mirror.aliyuncs.com

其他还有
https://registry.docker-cn.com
http://hub-mirror.c.163.com

打开docker 按照提示 输入mac系统密码 安装帮助程序 等待状态栏
状态栏点击 小鲸鱼 Preferences 或者点小齿轮 找到 Docker Engine 修改默认的

1
2
3
4
{
"debug": true,
"experimental": false
}

修改为

1
2
3
4
5
6
7
{
"registry-mirrors": [
"https://to16q0o6.mirror.aliyuncs.com"
],
"debug": true,
"experimental": false
}

点 apply&restart

3、下载 pch18 制作的宝塔镜像
官网:https://github.com/pch18-docker/baota

1
2
3
4
5
6
pch18/baota或pch18/baota:latest等同 pch18/baota:lnmp
pch18/baota:lnmp 为最新版本的官方纯净安装的基础上安装nginx,mysql,php
pch18/baota:lnp 为官方版本纯净安装的基础上安装nginx,php(不内置mysql,用于外置数据库的环境)
pch18/baota:lamp 为官方版本纯净安装的基础上安装apache,php
pch18/baota:lap 为官方版本纯净安装的基础上安装apache,php(不内置mysql,用于外置数据库的环境)
pch18/baota:clear 为官方版本纯净安装, 不默认安装nginx,mysql,php等程序

我这里选择clear 自己安装nginx和php mysql 使用mac
打开mac 的shell 输入

1
2
docker pull pch18/pch18/baota:clear #下载
docker images #查看镜像

clear镜像也有 569MB 有点蛋疼,不过考虑到centos本身欧200M 宝塔和何种依赖库加起来也不小。希望pch18会继续优化
4、启动镜像
我映射了两个端口进去 一是8099 到80 ,第二个是面板端口改为9981,其他端口不需要所以没有添加 其他端口自行决定 给了256M内存。
映射了当前mac用户的 文稿/wwwwroot进去用于保存网站php文件
在创建之前确定要自己要用的端口 和目录,创建后再修改好像只能重新做镜像挺麻烦的。
其他参考pch18的github说明

1
2
3
4
docker run -tid --name bt -p 8099:80 -p 9981:9981  --privileged=true --shm-size=256m --restart always -v ~/Documents/wwwroot:/www/wwwroot pch18/baota:clear
docker exec -it bt /bin/sh #进入容器
echo '9981' > /www/server/panel/data/port.pl && /etc/init.d/bt restart #修改宝塔端口并重启
exit #退回mac


5、浏览器配置宝塔
Safari 打开 http://127.0.0.1:9981/
初始账号 username
初始密码 password
登录后简单配置一下,修改用户密码等
6、重启docker测试一下数据还在不在
docker restart bt
一切正常,把面板更新到最新版!(2020年8月 宝塔7.2的phpmyadmin爆出重大安全漏洞 还是更新一下)
继续安装 所需的文件

其他一些docker常用命令

1
2
3
4
5
6
7
8
9
10
docker ps #查看容器
docker images #查看本地镜像
docker restart bt #重启容器bt
docker stop bt #关闭容器bt
docker kill bt #不保存马上关闭容器bt
docker start bt #启动容器bt
docker exec -it bt /bin/sh #进入容器sh

docker rmi pch18/baota:clear #删除镜像 pch18/baota:clear
docker rm -fv bt #彻底删除容器bt