我不完全确定这是否真的可行,但本质上我正在寻找有关如何执行以下操作的建议:
我运行一个服务器监控服务,目前它采用推送机制运行 - 每个服务器每分钟左右运行一个 cronjob,将相关数据发布到我们的 API 服务器,然后服务器处理这些数据。
我想要实现的是一个小型的独立应用程序,它将在每个服务器上运行并监听某个端口(例如 8282)。理想情况下,我希望在文档根目录中有一个带有 PHP 的 Apache 实例以及一些自定义 PHP 脚本。
有没有办法通过这种方式将应用程序打包在一起,而无需单独安装库和应用程序。我不介意为不同版本的 Linux 创建单独的软件包。
谢谢,
李。
编辑:澄清一下,我可能把这个问题搞得太复杂了。本质上我想问的是,是否有一个独立的 http 服务器内置了 PHP 支持。抱歉造成混淆。
答案1
听起来你正在尝试重新发明 Nagios 和 NRPE。也许你会发现扩展 Nagios 比从头开始更容易?Nagios 使编写自定义插件和使用 NRPE 通过网络查询这些测试的结果变得非常容易。
答案2
我坦然承认我不完全确定这是否是一个严肃的问题。
包是一组单独文件的集合,它们共同执行一个共同的功能。正如您所注意到的,apache 通常以包的形式分发,并且包含大量文件(我的机器上有 369 个);PHP 也是如此。
是的,您可以解压所需的软件包及其依赖的软件包,然后将它们重新打包成一个包含您要分发的所有内容的自定义软件包。是的,您需要对要支持的每个发行版执行此操作。
这样做可能不太明智,因为许多软件包(例如 apache)依赖于许多其他软件包;有些人可能已经安装了其中一些软件包,如果您以一种“一次搞定,否则就一无所获”的方式将应用程序所需的所有内容打包在一起,您将不得不覆盖一些已安装的文件。这很糟糕。
请注意,尽管自由软件通常都允许重新分发,但如果您像这样重新分发 GPL 软件,则您必须履行向任何要求的人提供源代码的要求;请确保您已准备好履行此义务。
答案3
你能做到吗?当然。
我遇到过的每个 Linux 发行版都支持某种软件包系统(每分钟转数和易于最常见的是)。
有关为给定发行版创建软件包的说明,可在该发行版的文档中找到。
如果您想避免库依赖,则必须静态链接软件包的内容,这意味着软件包将巨大的。
你应该这么做吗?绝对不。
首先,在每个系统上运行一个完整的 Web 服务器只是为了监控,这是很疯狂的:你增加了资源利用率和潜在的安全漏洞。
此外,正如 Bart B 指出的那样,已经有一个工具可以做到这一点(并且纳吉奥斯并不是唯一的一个。还有很多工具也使用 SNMP 来实现这种功能。
我建议你在 SF 上搜索监控工具,或者问问 Google。我相信你会找到满足你需求的东西。