前言
上一篇树莓派也跑 Docker 和. NET Core 有对树莓派做简单的介绍. 包括系统的烧录, 基本的设置, docker 的安装,.net core 的运行等. 有人问我是不是一定要跑 docker, 答案肯定是否定的. 我之所以用 docker, 完全是因为它的便利 (带环境), 对系统无污染和方便系统资源的查看和控制. 本篇文章继续分享下我对树莓派的使用.
docker 安装
https://www.cnblogs.com/zhaopei/p/raspberrypi-docker-netcore.html#autoid-6-0
MySQL 安装
我说在树莓派上跑 MySQL 你还不信.
- docker run --restart=always \
- -p 3306:3306 \
- --name MySQL \
- -v $PWD/conf:/etc/MySQL/conf.d \
- -v $PWD/logs:/logs \
- -v $PWD/data:/var/lib/MySQL \
- -e MYSQL_ROOT_PASSWORD=mysqlpassword \
- -d hypriot/rpi-MySQL:5.5
- --restart=always #容器自启动
- 3306 #数据库端口
- -v $PWD/conf:/etc/MySQL/conf.d #配置文件挂载路径
- MYSQL_ROOT_PASSWORD=mysqlpassword #数据库密码
Redis 安装
- docker run --name Redis \
- -p 6379:6379 \
- -v $PWD/data/Redis:/data \
- -d arm32v7/Redis:3.2.10 Redis-server --appendonly yes
gogs 安装
有了. net core,MySQL 和 Redis, 如果再能跑一个 Git 服务器那不就吊炸天了. 是的, 树莓派安装 gogs 毫无压力. 有了自己的代码管理服务器, 再也不会因为 GitHub 访问慢而烦恼了, 也不会因为某 Git 的广告而不爽了.
- docker run --name=gogs -p 122:22 \
- -p 1080:3000 \
- -v /var/gogs:/data gogs/gogs-rpi
其中 1080 是浏览器访问端口, 你也可以映射到 80.122 是 SSH 提交代码的端口.
注意: gogs 需要依赖于 MySQL, 第一次启动会引导你填入数据库相关信息. 后面如果重启了树莓派, 记得先启动 MySQL, 再启动 gogs, 不然不能正常访问.
内外穿透
上面有了应用, 有了数据库, 还有了代码管理服务器, 可我们树莓派总归是在一个局域网内. 离开了这个网络上面说的那些功能好像就没什么用了. 那我们有没有办法让我们的树莓派变成真正的服务器呢, 答案是肯定的. 我相信大家刚接触编程的时候, 都幻想过自己写的网站能直接给别人访问. 那个时候应该大多折腾过花生壳什么的, 那就是个内网穿透的技术. 只是别人提供了免费的服务器中转了下, 速度也是慢得感人.
今天我们来自己利用 frp 软件实现内外穿透, 当然还是需要服务器的 (没有服务器的同学, 可以先借朋友的玩玩) .
下载地址 (各平台的都有): https://github.com/fatedier/frp/releases
因为我们是树莓派, 可以下载最新版 frp_0.29.0_linux_arm.tar.gz(装客户端) 和 frp_0.29.0_windows_amd64.zip(Windows 服务器) 或者 frp_0.29.0_linux_amd64.tar.gz(Linux 服务器)
首先把 frp_0.29.0_linux_amd64.tar.gz 上传到服务器, 解压, 跳转到目录里, 编辑 frps.INI
- [common]
- bind_addr = 0.0.0.0
- bind_port = 7000
- auto_token = token
然后运行./frps 运行, 启动服务端监听.
把 frp_0.29.0_linux_arm.tar.gz 上传到树莓派, 解压, 跳转到目录里, 编辑 frpc.INI
[common]
server_addr = 服务器 ip
- server_port = 7000
- auto_token = token
- [Git]
- type = tcp
- local_ip = 127.0.0.1
- local_port = 122
- remote_port = 8000
- [web]
- type = tcp
- local_ip = 127.0.0.1
- local_port = 1080
- remote_port = 8001
然后运行启动./frpc
然后就可以外网访问了, www. 服务器 ip:8001 就可以访问 Git 服务器了.
注意: 如果是云服务器记得把对应的 8000,7000,8001 端口加入到安全组里面, 不然会被拦截掉.
frp 的详细用法请参考: https://www.cnblogs.com/sanduzxcvbnm/category/1171545.html
其他安装
- # 安装 nginx
- docker run -d -p 80:80 --name nginx arm32v7/nginx:1.16
- #dokcer 仪表盘管理
- docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer-test portainer/portainer:ARM
- # 一些其它树莓派的 docker 应用
- https://hub.docker.com/u/arm32v7/
- https://hub.docker.com/u/hypriot?page=1
- https://cloud.docker.com/u/bennyzhao/repository/docker/bennyzhao/quartzui
树莓派还能做什么
可以做物联网数据的边缘计算啊, 如设备的数据采集, 监控预警, 数据分析等等. 再买点传感器做个简陋版 "小爱同学" 也不是很难, 甚至遥控汽车玩具什么的, 能想的到的也没什么是做不到的.
资源消耗截图
24 小时不关机, 零噪音, 一直开心的运行着.
结束
推荐一个开源物联网组件: https://github.com/zhaopeiym/IoTClient ,demo 下载
来源: https://www.cnblogs.com/zhaopei/p/11736135.html