【问题标题】:Securely send data from Raspberry Pi to Apache Server将数据从 Raspberry Pi 安全地发送到 Apache 服务器
【发布时间】:2018-08-20 14:59:17
【问题描述】:

Raspberry Pi - 收集温度数据并存储在文件中

服务器 - Apache,在 VM 上,托管网站(HTML、PHP + JavaScript)和一些数据图表

我需要将数据文件从 Pi 安全地发送到服务器,服务器将使用该数据文件来填充网站上的图表。

实现这一点最好最简单的方法是什么?

我对与此相关的所有内容都比较陌生,并且已经做了很多阅读和测试,但似乎无法弄清楚如何正确地做到这一点。

我有两组图形代码,一组使用 SQLite 数据库(理想),另一组使用 JSON 文件(有效但不是最理想的)。两者都只是使用当前存储在本地的文件。

【问题讨论】:

  • 发送数据是指哪个协议?休息,http...
  • 任何东西,即使它不需要 Pi 上的服务器。只需将 Pi 上不断创建的数据重复发送到服务器,然后它就可以使用它来填充图表。
  • 我建议使用csync 使用cron 定期传输文件。
  • P.S. If the best method is to not e的最后一段好像没写完?
  • 嗨 chivs890。我看到你今天登录了。我对这个问题投了反对票,因为我的改进请求被忽略了。请愿意让问题保持良好状态。

标签: javascript php html json apache


【解决方案1】:

在服务器 B 上运行 HTTPS 网络服务,这需要服务器 A 发送用户名/密码以及数据。

【讨论】:

  • 您有什么可以让我作为初学者来实现的吗?你所说的听起来可能是我需要的,但我不知道如何实现它。
  • 选择一个网络服务器。阅读其文档以了解如何为其配置 HTTPS。选择一种编程语言。编写服务器端代码来处理包含数据的请求。这两个主题都过于广泛,无法在 SO 问题中涵盖。
  • 我已经启动并运行了一个 HTTPS Apache 服务器(服务器 B)。目前托管一个由 HTML、PHP 和 JavaScript 代码组成的 PHP 文件。在其中使用 AJAX 重复运行存储在本地的单独 PHP 文件。我唯一坚持的一点是“编写服务器端代码来处理包含数据的请求”。因为我不知道在树莓派端或服务器端写什么来发送和接收数据。
  • 要使用 HTTPS,您需要 SSL 证书。如果您与某些托管服务提供商进行共享托管,通常他们会为您的网站提供免费 SSL
【解决方案2】:

让 PI 将温度数据保存到一个简单的本地文件中。 (最好在内存托管分区中,因为 SD 卡确实会磨损。)

在 PI 上配置 sftp 服务器。

然后在网络服务器上从 PHP 中提取文件

file_get_contents("ssh2.sftp://{$user}:{$pass}@{$pi_ip}:22{$pi_path}"))

并相应地处理它。

【讨论】:

    【解决方案3】:

    正如许多其他人所讨论的那样,HTTPS 服务器将是一个良好的开端,如果您为服务器注册了域名,则可以使用 https://letsencrypt.org/,它提供了一个方便的脚本 certbot,可让您将现有设置转换为 https。

    如果您没有注册域,您可以自行签署 SSL 证书(简单的 Google 会为您指出所需的资源)并使用该证书在您的 Apache 服务器上启用 HTTPS。

    【讨论】:

    • 服务器实际上已经完全配备了 HTTPS,并使用我自己的个人域,一切正常。只需要将数据从 Pi 发送到服务器,我的项目目标就完成了。
    • 您可以在服务器端运行任何设置,例如:Apache+PHP/Tomcat 等,您可以在其中进行 POST 调用 (restfulapi.net/http-methods/#post) 并以 JSON 或其他格式发送数据格式。然后可以在服务器端处理数据。
    【解决方案4】:

    如果可能,您可以在两台机器之间创建 VPN。

    取决于数据敏感度,HTTPS 可能就足够了 + 某种具有额外授权的 API。


    非常基本的实现

    Apache 服务器端

    保存.php:

    <?php
        $temperature = $_GET['temperature'];
        $timestamp = $_GET['timestamp'];
        // INSERT into database
        // or
        // save in the file
    

    Pi 侧

    我不知道您在 Pi 端使用什么语言,但您可以执行 HTTP GET 请求,例如:https://your.server.ip.or.domain/save.php?temperature=N&amp;timestamp=999999999

    如果可能(Pi 有固定 IP),您可以根据它过滤请求。这样会更安全。

    【讨论】:

    • 数据不是超级敏感,只是希望它不是完全不安全的。在这个阶段,如果我以后能够使其安全的话,我很乐意让它发送数据的功能正常工作。 HTTPS 会很好。在此基础上,您能否详细说明我能做什么?
    • @chivs890 多久测量一次温度并将其保存在文件中?您希望多久从 raspberry 设备向服务器发送一次数据?
    • 目前每10秒收集一次数据,非常频繁。
    • @chivs890 基于所有其他 cmets,我知道您的主要期望是制作具有基本安全性的东西。我更新了答案,所以希望它是你想要的。
    猜你喜欢
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 2020-05-08
    • 2013-11-13
    相关资源
    最近更新 更多