光谱项目借用了Github上面的一个开源项目,Github链接如下:
PySpectrometer光谱仪https://github.com/leswright1977/PySpectrometer?tab=readme-ov-file该作者的YouTube频道如下:
Les' Labhttps://www.youtube.com/leslaboratory这个项目需要用到InfluxDB数据库,所以以下问题就围绕InfluxDB数据库展开。
InfluxDB是一个功能强大的数据库系统,具有以下特点:
-
专注于时间序列数据:专门为存储和查询时间序列数据(如日志、指标和事件)设计,适用于监控、分析和物联网数据。
-
高性能:提供高效的数据写入和查询响应,特别适合处理大规模数据集。
-
灵活的查询语言:InfluxQL,一种类似SQL的查询语言,用于简化数据的读取和聚合处理。
-
数据压缩:优化存储机制,通过有效的压缩算法减少存储空间的需求。
-
易于集成:支持各种客户端库,如Python、Java等,方便集成到各种应用中。
-
可扩展性:支持水平扩展,适合从小型项目到大型企业级应用。
-
开源:社区版免费开源,有活跃的社区支持和丰富的文档资源。
InfluxDB因其对时间序列数据的高效处理和易于使用的特性,在多个行业中被广泛采用。
要使用InfluxDB我们首先需要介绍一下Docker。
Docker 是一种容器化平台和工具,它使开发、部署和运行应用程序变得更加简单和可靠。Docker 容器是一种轻量级的虚拟化技术,允许将应用程序及其所有依赖项(包括代码、运行时、库和配置)打包到一个独立的容器中。这个容器可以在不同的环境中运行,而无需担心环境之间的差异。
一句话,Docker就是为了解决“在我的机器上可以运行,但是到了你的机器上就不能运行”的问题。
而Docker和InfluxDB之间的关系如下:
-
容器化:Docker为InfluxDB提供了容器化平台。通过Docker,可以将InfluxDB及其依赖打包在一个容器中,确保在不同环境中运行的一致性。
-
简化部署:在Docker容器中部署InfluxDB简化了设置过程,避免了复杂的安装步骤和特定环境的配置。
-
可扩展性和隔离性:Docker允许轻松扩展和隔离InfluxDB,确保它在一个受控环境中运行,带来更可预测的性能。
-
开发和测试:开发者可以使用Docker创建隔离的环境来开发和测试基于InfluxDB的应用,提高了开发流程的效率。
-
微服务架构:在微服务架构中,Docker和InfluxDB可以一起高效地管理不同服务的数据,Docker负责这些服务的部署和管理。
因此我们需要安装Docker来启动InfluxDB。
2022最新Windows docker安装方法https://www.bilibili.com/video/BV1za411Q7er/?spm_id_from=333.337.top_right_bar_window_custom_collection.content.clickDocker——Windows版本Docker安装_docker windows-CSDN博客https://blog.csdn.net/weixin_51351637/article/details/128006765?spm=1001.2014.3001.5506安装好Docker以后,需要在刚刚下载Docker时顺便下载好的Ubuntu终端安装InfluxDB。
5、Centos安装InfluxDB_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1QY4y1f7UV?p=5&vd_source=2619f8f2b1a681baf38b633acca071ac虽然只给了Centos的安装,但是Ubuntu和Centos都用的Linux的指令,一样的操作。在Windows启动栏就可以找到刚刚安装好的Ubuntu,点进去就是终端,在里面输入各种命令。
安装完InfluxDB,就需要用Docker启动它了。
然后需要注意在Python代码里面的格式:
client = InfluxDBClient(url="http://localhost:8086", token="写自己在influxdb注册的", org="写自己在influxdb注册的")
write_api = client.write_api(write_options=SYNCHRONOUS)
这段代码的作用是在Python中设置与InfluxDB数据库的连接和准备数据写入操作:
-
创建客户端实例:InfluxDBClient用于建立与InfluxDB数据库的连接。它需要数据库的URL、访问令牌(token)和组织(org),这些信息用于验证和确定连接的目标数据库。
url="http://localhost:8086"
指定了InfluxDB服务的地址。这里使用localhost
和默认端口8086
,适用于本地运行的InfluxDB实例。token
和org
是访问InfluxDB时必要的认证信息,通常在InfluxDB设置或注册时获得。
-
创建写入API实例:
write_api = client.write_api(write_options=SYNCHRONOUS)
创建了一个用于数据写入的API实例。write_options=SYNCHRONOUS
表示写入操作将同步进行,即写入请求完成后才继续执行后续代码。这对于确保数据完整性和调试是有帮助的。
Docker
1.拉取镜像
docker pull influxdb
docker pull influxdb:2.7.5
2.启动容器
接下来启动Docker,这里我命名容器名字为influxdb_new(这一步是前文提供的docker启动influxdb容器的链接的内容)
hefeng@admin:~$ docker run -d --name influxdb_new -p 8087:8086 -v /opt/influxdb2:/var/lib/influxdb2 influxdb:2.7.5
3.开放端口
firewall-cmd --zone=public --add-port=8083/tcp --permanent
firewall-cmd --zone=public --add-port=8086/tcp --permanent
firewall-cmd --zone=public --add-port=8090/tcp --permanent
firewall-cmd --zone=public --add-port=8099/tcp --permanent
firewall-cmd --reload
其中docker ps命令可以检查docker是否启动 。
出现以上结果就是启动成功了 。
浏览器输入http://localhost:8086(后面8086看你具体什么端口号了),InfluxDB是全英文的,一些设置、token的获取等可以看如下链接:
一、在开放端口的命令中,可能firewall-cmd --reload会出现防火墙的报错,我这里选择直接重新安装一遍防火墙。
在基于 Debian 的系统(如 Ubuntu)上:
-
卸载 FirewallD: 打开终端,然后运行以下命令来卸载 FirewallD:
sudo apt-get remove firewalld
-
清理依赖项和配置文件(可选): 如果想彻底删除 FirewallD 及其配置文件,可以运行:
sudo apt-get purge firewalld
-
安装 FirewallD: 安装 FirewallD 的命令如下:
sudo apt-get update sudo apt-get install firewalld
二、InfluxDB http://localhost:8086/登录以后出现404的问题
记住把url、token还有org全部写对了,每次修改端口号记得修改登录的网站地址。
三、Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
解决方法:
可能需要设置docker开机自启动。