分类 默认分类 下的文章

重玩香蕉之一:玩M2U

今天是迷窟鞋盒运行第750天,除了期间因为整理接线或者误操作重启过两次,至今一直稳定运行,现在用uptime能查到的是连续536天了,过段时间可能会对鞋盒进行调整,难免会断电重启。
好吧,言归正传,下边是这次准备的清单

吃灰的bpi-m2u
二创专用电源线
川宇 8G TF卡
川宇读卡器
其它网线、USB插线板等

然后就是找一个比较新的镜像,百度云以慢著称,谷歌盘又在墙外,大球给了一个地址,https://dev.banana-pi.org.cn/Image/BPI-M2U/,下载了两个镜像

https://dev.banana-pi.org.cn/Image/BPI-M2U/2017-06-06-ubuntu-16.04-server-preview-bpi-m2u-sd-emmc.img.zip
https://dev.banana-pi.org.cn/Image/BPI-M2U/2017-11-13-ubuntu-16.04-mate-desktop-beta2-bpi-m2u-sd-emmc.img.zip

从命名看一个是desktop版,一个是server版吧,让人迷惑的是上百个镜像,除了preview版就是beta版,也不知道哪个是官方版,只能靠碰运气,以前比较喜欢用树莓系统控制一些外设,现在比较懒基本就是装软件玩,所以趋向于比较小巧的server版,如果能在emmc中运行还能省一块存储卡。
以前烧录镜像的工具SD Formatter & Win32DiskImager,还记得大球用来烧硬盘,听说有个新工具叫Etcher顺便也尝试一下吧,419M的镜像解压后7.28G,也服了做镜像的了,会是谁呢?烧录工具显示卡容量7.99G,镜像7.82G,应该是计量标准不同吧,怪不得很多程序员谈工资时说我要2k,不说我要两千,在他们的潜意识里1k=1024吧。
01.png

不光写完,还给校验了一遍,然后自动弹出了,怀着忐忑的心情把卡插入吃灰已久的M2U,插网线,接电源,红绿蓝三灯齐亮,如果一直这样就是死机了,还好,一会儿就闪动起来了,红灯常亮,绿灯闪烁,蓝灯熄灭了。登录路由,发现了一个叫bpi-iot-ros-ai的设备,附近bpi很多,暂时还不能确认是不是这个,ssh看一下吧,是它,应该就是它了

pi@bpi-iot-ros-ai:~$ uname -a
Linux bpi-iot-ros-ai 3.10.65-BPI-M2U-Kernel #1 SMP Thu May 25 11:46:04 CST 2017 armv7l armv7l armv7l GNU/Linux
pi@bpi-iot-ros-ai:~$

11点半了,困了,待续吧。

nodejs & tcp socket

服务端

var net = require('net');
//模块引入
var listenPort = 8080;//监听端口
var server = net.createServer(function(socket){
  // 创建socket服务端
  console.log('connect: ' +
    socket.remoteAddress + ':' + socket.remotePort);
  socket.setEncoding('binary');
  //接收到数据
  socket.on('data',function(data){
    console.log('client send:' + data);
  });
socket.write('Hello client!\r\n');
 // socket.pipe(socket);
  //数据错误事件
  socket.on('error',function(exception){
    console.log('socket error:' + exception);
    socket.end();
  });
  //客户端关闭事件
  socket.on('close',function(data){
    console.log('client closed!');
     // socket.remoteAddress + ' ' + socket.remotePort);
  });
}).listen(listenPort);
//服务器监听事件
server.on('listening',function(){
  console.log("server listening:" + server.address().port);
});
//服务器错误事件
server.on("error",function(exception){
  console.log("server error:" + exception);
});

客户端

var net = require('net');
var port = 8080;
var host = '127.0.0.1';
var client= new net.Socket();
//创建socket客户端
client.setEncoding('binary');
//连接到服务端
client.connect(port,host,function(){
  client.write('hello server');
  //向端口写入数据到达服务端
});
client.on('data',function(data){
  console.log('from server:'+ data);
  //得到服务端返回来的数据
});
client.on('error',function(error){
//错误出现之后关闭连接
  console.log('error:'+error);
  client.destory();
});
client.on('close',function(){
//正常关闭连接
  console.log('Connection closed');
});

参考地址:
https://blog.csdn.net/lockey23/article/details/76408891

node.js & express

MEAN是啥东西?查询版本

node -v

结果

v8.9.3

建立文件hello.js

console.log('1+1='+(1+1));

运行

node hello.js

创建一个package.json文件

{
  "name": "Hello",
  "description": "hello mikuq.com",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "express": "4.x"
  }
}

然后

npm install

node_modules中会下在40多个包,可以用npm list查看,建立index.js,有中文记得uft8保存,否则会有乱码

var express = require('express');
var app = express();
app.get('/', function (req, res) {
  res.send('<h1>MikuQ的站点</h1>');
});
app.listen(80);

运行node index.js然后浏览器访问http://localhost就可以了

路线2

npm init

全部回车就可以了,自动生成package.json

npm install express --save

或者

npm install express-generator -g
express myapp
cd myapp & npm install
SET DEBUG=myapp:* & npm start

有点儿乱了,http和express有啥区别呢,有没有压力测试,生产环境如何部署?

参考:
http://www.expressjs.com.cn/
http://blog.csdn.net/u012468376/article/details/53245002
https://www.cnblogs.com/stoneniqiu/p/5538109.html

nginx反向代理的dns更新(504 Gateway Time-out)

网站隔三差五的就挂掉,一直以为是球猫在搞鬼,这不,又挂掉了504 Gateway Time-out,本以为是bug已经升级了nginx的,问题依旧。
几次尝试解决,都以失败告终,只能发现后sudo nginx -s reload,总不能放到定时任务中吧,再次查看日志sudo cat /var/log/nginx/error.log。

upstream timed out (110: Connection timed out) while connecting to upstream, upstream: "http://123.123.12.3", host: "mikuq.com"

尝试浏览器中访问这个IP,访问不到,奇怪了,再次确认竟然是过期的IP,参考了几篇文章,是通病,尝试解决,查询本机的dns,写到配置文件中cat /etc/resolv.conf,重起,过几天看效果吧。

参考文献:
https://serverfault.com/questions/240476/how-to-force-nginx-to-resolve-dns-of-a-dynamic-hostname-everytime-when-doing-p
https://www.zhihu.com/question/61786355

在opiz上装docker

最近很喜欢玩docker,所以各种安装写得多一些,参考自己的《玩docker》

uname -a

得到的版本是Linux opiz 4.13.16-sunxi #20 SMP Fri Nov 24 19:50:07 CET 2017 armv7l armv7l armv7l GNU/Linux
运行安装命令

wget -qO- https://get.docker.com/ | sh

可惜报错Could not get lock /var/lib/dpkg/lock,可以用这个命令查看

ps -aux | grep apt

慢慢处理,会好的,安装成功后启动服务,然后需要重起一下

sudo service docker start
sudo usermod -aG docker pi

执行docker info查看版本是18.0.2,然后就可以学习了https://docs.docker.com/get-started/