致力于重建一些 AWS Linux 服务器。我看到我公司的服务器在我们的 Apache Web 服务器实例和 Tomcat 中下载了 Apache Portable Runtime (APR)。
配置安装到多个不同位置/软件(例如 APR 到 Tomcat 和 Apache Web 服务器)有何影响?
如果我运行./configure --prefix=/opt/tomcat/
然后再运行一次,./configure --prefix=/opt/apache2/
我会看到它在这些地方下载了软件包。
这可以吗?这样做有问题吗?
我看到这是在旧服务器上完成的,其中 openSSL 也在 apache 和 tomcat 中下载,并且我假设它是用相同的方法完成的。但只是想得到一个很好的解释,解释为什么这种做法可以或不好。
答案1
你可以做到这一点,是的。这就是前缀的要点!但是,当运行这些服务器时,您需要确保相应地调整PATH
、LD_LIBRARY_PATH
和其他环境变量,以便库和可执行文件实际上取自不同的前缀。
另外,安装相同的二进制文件放在两个地方没有什么意义(除了存储和管理问题之外,它不需要花费任何费用):您可以只运行具有不同配置的一台服务器。具体如何运作取决于个别服务。
但说实话,自己编译这样的标准软件有点奇怪,除非你知道为什么你需要这样做。特别是在服务器/云世界中,您通常只拥有一个服务,并尽可能简单地安装,如果您出于某种原因需要同一服务的两个实例,您可以将它们都放在容器中,仅共享与主机系统相关的数据目录。
所以,这个问题感觉你应该弄清楚以下几点
- 这些服务实际上在做什么?
- 为什么它们是从源代码构建的,为什么需要两个单独的安装?
- 两个实例必须共享哪些资源——例如,两个 Web 服务器不能同时响应同一 IP 地址上的 TCP 端口 80,因此这行不通。两个不同的 Tomcat 应用程序可能仍希望共享一个数据库;这没问题。但如果它们都尝试写入同一个日志文件,情况很快就会变糟
- 在 AWS 上的任何内容中,为什么两个服务实例不在每个容器中相互隔离?