用树莓派,其实就是一个 折腾。看了一下资料,其实现在NUC比树莓大不了多少。但NUC可以直接SSD硬盘啊。而树莓没有。
当然,树莓也有自己的好处,比如,我可以折腾几个SD卡,装上不同的工具。想用哪个的时候插哪个就行了,除了卡一点。
为什么用VNC,就是因为create_ap失败。想看看图形下怎么搞,结果vnc报这个错。
OK,运行:sudo raspi-config,进入Advanced Options,然后选择Resolutions,选择一个你想要的分辨率的。默认的分辨率是300x200,所以不能显示。想想树莓都能 支持4K了。还是选个最大的吧。
点击OK后,提示重启。
然后VNC就可以连接了。
网上很多类似的教程,我刚买了个树莓派4,没有micro hdmi线,没有USB线。没有键盘鼠标。开始很纠结。怎么办呢?
因为,插了有线也搜不到网络。后来google了一下,有一堆文章在说这个:
按照上面的试了一下,但死活连接不上。我以为是用的lite的img文件,开始以为是img的问题。换了full的也这样。
因为开始遇到点小问题,比如。我明明建了空ssh文件和wpa_supplicant.conf,但每次发现wifi打不开的时候。把卡拿出来放到读卡器,这两个文件就不见了。开始以为是卡只读的,后来才知道。。。只是被系统移走罢了
OK,那究竟为什么呢?我就在猜,是不是因为5G的原因?我连接的都是5G的网络。于是换成2.4G的,结果。。。。。通了。
崩溃啊。就因为连接了5G的网络,浪费了我2小时。
在nginx下配置Websocket的proxy_pass还是很方便的。几乎和默认的proxy_pass一致,只要加两行代码:
XML/HTML代码
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection $connection_upgrade;
如果对http_upgrade和$connection_upgrade的变量有自定义,可以这样写:
XML/HTML代码
- map $http_upgrade $connection_upgrade {
- default upgrade;
- '' close;
- }
如果不熟悉map的用法,这里有一篇中文的说明:https://blog.51cto.com/tchuairen/2175525,
至此,一个websocket 就配置好了,但偶尔你可能还是会发现ws会断开,所以最好设置一下超时时间。比如5分钟?
XML/HTML代码
- proxy_read_timeout 300s;
- proxy_send_timeout 300s;
毕竟网络不好的时候。。30s或者60s是真有可能会数据发出去收不到的。干脆延长一点吧。
参考:
1、https://www.xncoding.com/2018/03/12/fullstack/nginx-websocket.html
2、https://blog.51cto.com/tchuairen/2175525
前几天发的:用pm2管理frpc ,里面直接讲的是用pm2 start -x 来启动的。如果用yaml来启动的话,会有部分不同
原来我的配置文件是这样的:
XML/HTML代码
- apps:
- - name: frp #配置
- cwd: /Users/gouki/frp
- script: ./frpc
- exec_mode: fork
- # interpreter: php
- instances: 1
- args:
- - -c /Users/gouki/frp/frpc.ini
看起来好象一点问题没有。毕竟 frpc的启动本来也就是frpc -c xxxx.ini,但如果真是这样,你会发现一直报错:
XML/HTML代码
- 3|frp | open /Users/gouki/frp/frpc.ini: no such file or directory
嗯,这种中间有空格的参数在这里好象是不能用的。改成 -c=/Users/gouki/frp/frpc.ini ,一切恢复
OK,于是最终的代码是这样的:
XML/HTML代码
- apps:
- - name: frp #配置
- cwd: /Users/gouki/frp
- script: ./frpc
- exec_mode: fork
- # interpreter: php
- instances: 1
- args:
- - -c=/Users/gouki/frp/frpc.ini
就是这样简单。但真的浪费了我不少时间。
jq是linux命令行下读取和解析JSON的好工具。只是好象不能jq xxx.json这样的用法,但没事,可以通过管道符,cat xxx.json|jq 就OK了
在这里:https://www.tuicool.com/articles/vieMN3Q有详细的教程,写的非常完整,但如果简单的使用,并不需要完整的看完,只要记得几个用法就行
来个简单的数据:{"code":1,"msg":"ok","data":{"fields":["a","b","c"],"items":[{1,2,3},{11,22,33}],"other":[{"x":1,"y":1},{"x":2,"y":2}]}}
1、获取items节点: cat xxx.json|jq ".data.items"
2、获取items下第二条数据的第二个,即22. cat xxx.json|jq ".data.items[1][1]"
3、获取other下的所有x节点: cat xxx.json|jq ".data.other[].x"
是不是很方便?如果要自定义格式输出,还可以这样
1、将所有x节点用{"items":[]}格式输出: cat xxx.json| jq "{items: [ .data.other[].x ]}" ,
如果要看更多的用法,还是上面的网址里更详细一点。我这只是简单的用一下。。或者说是临时在服务器上测试数据,让自己看起来会比较方便一点。还有一个原因是我在服务器上用这个的最大理由。有时候JSON拿到的时候中文都是转义过的。用jq,可以直接看中文。这点比较爽