ThingSpeak本地部署

来源:互联网 发布:万界淘宝商 编辑:程序博客网 时间:2024/06/05 13:33

1、ThingSpeak是什么

ThingSpeak是MathWorks公司(没错,就是Matlab那个公司)开发的一个开源的物联网云端平台,用于管理各种接入的物联网设备,实现数据管理,数据存储,数据可视化,数据分析等功能,这一云平台是开源的,参考:https://github.com/iobridge/thingspeak#installation-on-clean-install-of-ubuntu-1204-lts。你可以在ThingSpeak这个平台上免费(channel和速度是有限制的)或付费来管理自己的物联网设备和数据,也可以自己在服务器上部署它的开源代码。但需要注意的是,虽然ThingSpeak平台相对于其他物联网平台来说,社区会大一些,但是开源代码已经很久没有更新过了,不知道是不是已经被抛弃。当然啦,我认为它对于搭建自己的物联网平台还是有帮助的。

2、ThingSpeak部署参考资料

笔者找了很久关于ThingSpeak的资料,用的人不多,可以参考的主要就是GitHub上官方的开源代码里的Guide和这篇文章:https://www.cnx-software.com/2016/12/07/how-to-install-thingspeak-in-ubuntu-16-04/ (已经写的很详细,非常感谢)。我在自己的电脑上部署了一下(Ubuntu 16.06),折腾了三天才搞定,遇到了很多奇葩的问题,记录下来。打算之后再部署到阿里云上,后续会更新教程。

3、遇到的问题及解决办法

1 Ubuntu 14.04安装rubygems时报错
E: Package ‘rubygems’ has no installation candidate
解决方案:

sudo apt-get install rubygems-integration

2 执行 gem install bundler时报错
Error:
Could not find a valid gem 'bundler' (>=0) in any repository
原因:默认是从https://rubygems.org获取安装源,不知道是不是这个原因就被阻止访问,改成http://rubygems.org就可以获取安装包了。

gem install bundler -p http://rubygems.org

3 执行 bundle install报错:运行主体错误

 Warning: Don't run bundle as a root ……

这个警告从字面意义上来看是指不能够以root超级管理员的身份来bundle install,这样其他用户是无法使用的,虽然这是一个警告,不会影响程序的执行,但是会发现命令行就卡在这里,不在继续运行。最后试了好久发现把Thingspeak文件夹下的Gemfile里的http://rubygems.org 改为https://rubygems.org 后虽然warning还在,但是是可以成功bundle install的。

4 执行 bundle install报错:tzinfo-data版本问题
在执行bundle install时会安装许多包,其中tzinfo-data报错
Error:Downloading tzinfo-data-1.2013.8 revealed dependencies not in the API or the lockfile (tzinfo(>=1.0.0))
字面意思上看,问题似乎出在版本依赖性兼容性方面,开始我以为是对tzinfo-data这个包有特殊的版本要求,后来才发现原来是因为thingspeak自身对该包的版本有一个要求,而我的bundler版本是1.16.0,太新了所以不在支持安装旧版本的tzinfo-data.我想修改源代码升级包的版本也是可以的,不过为了更加可靠,我还是卸载了原来的bundler,重新安装了更低版本的bundler(看到了帖子说需要安装v1.12.5~v1.15.4)
卸载和安装代码如下:

gem uninstall bundlergem install bundler --version=1.14.1bundle install#这下安装成功,显示bundle complete!

5 MySQL报错
不知道是由于安装步骤出错还是自己瞎弄把MySQL玩坏了,输入mysql -u root -p无法进入mysql命令行,报错:

 Error: The program 'mysql' can be found in the following packages: *. mysql-client-core 5.7 *. mariadb-client-core 5.7 Try : apt-get install <selected package>

网上查了一下应该是Mysql没安装好或环境变量没有设置好,按网上说的设置了环境变量没有用,可能我不是这个原因,于是卸载了mysql又重新装了一遍(就是这么简单粗暴)
怎样彻底删除mysql:

sudo apt purge mysql_*sudo rm -rf /etc/mysql/ /var/lib/mysqlsudo apt autoremovesudo apt autoreclean

重新安装mysql:

sudo apt-get install mysql-serversudo apt install mysql-clientsudo apt install libmysqlclient-dev  #这步一定要有,否则后面还是会出问题

测试mysql是否安装成功

sudo netstat -tap | grep mysql