仅为 Apache Tomcat 共享数据

仅为 Apache Tomcat 共享数据

现在,服务器 A(Windows Server 2012)上运行着:
- Apache Tomcat 7(由 CRM 系统使用)
- MySQL 数据库
- Tomcat 的本地数据(来自该 CRM 的电子邮件附件等)

我想将 Apache Tomcat 移动到服务器 B(同一域中的 Windows Server 2012),但将数据库和本地数据保留在服务器 A 上。

从服务器 A 共享本地数据的正确且安全的方法是什么仅有的到服务器 B 上运行的 Tomcat?

答案1

我怀疑你们服务器之间的网络是否不可信。

如果你想要一种安全的方式,你需要

  1. 在 mysql 中启用网络访问(在基于主机的身份验证中以及在用户表中)
  2. 让 mysql 服务器在您的my.cnf.
  3. 3306在 mysql 机器的防火墙中启用端口,仅适用于您的服务器 B。
  4. 在服务器 A 上的 mysql 服务器中启用 ssl 支持。
  5. 如果有任何中间防火墙/路由器/数据包过滤,请启用B->A:3306TCP 连接,但只能启用它们。
  6. 为您的 tomcat 用户生成一个长而安全的密码,例如使用pwgen命令。在您的 mysql 中设置此密码。
  7. 更改服务器 B 上的 tomcat web 应用程序的配置,以便A:3306在 mysql 配置中使用您的密码。这需要一点 Java 经验,可能需要更改 META-INF 目录的 WEB-INF 下的某些 xml 文件。
  8. 在服务器 B 上部署 Web 应用程序。
  9. 在服务器B上用命令测试TCP级别的可能性telnet A 3306。如果可以,则继续。
  10. 使用命令将服务器 B 上的 Mysql 连接到服务器 A。mysql --host=A --port=3306 --user=... --pass=...如果有效,则继续。
  11. 启动 Web 应用程序并测试它是否也可以连接。

这些并不是真正的分步说明,每一步都可能需要您进一步调查。但实际上,这些是主要的大飞跃。如果有什么不清楚的地方,我们会随时为您解答下一个问题。


扩大:正如您所写,A 和 B 之间的网络可以被视为可信的。在这种情况下,您不需要在服务器之间进行任何加密,尽管我认为需要进行少量防火墙。因为您使 mysql 服务器可从网络连接,所以如果仅有的B 能够连接 A 上的数据库。可以通过结合端口过滤和 mysql 身份验证来解决。但是,如果您不是管理员,则无需担心加密,这会让事情变得更好。


扩展 #2:虽然你没有写任何东西,你的“本地数据”在哪里,但我怀疑它在文件。使用 SMB 网络共享可以非常轻松地共享文件,并且此共享可以作为子目录或单独的驱动器安装在服务器 B 上。如果它与原始 Web 应用程序具有某种独立性,那就更好了。例如,如果它在 中...\webapps\yourappname\attachments,最好将它放在webapps服务器 B 上的文件夹之外。这可能需要对 Web 应用程序进行一些配置。

扩展 #3:Apache、tomcat 等所有服务器都以用户身份运行,您可以轻松配置以哪个用户身份运行。如果它们是作为服务安装的,您可以在管理工具 -> 服务中执行此操作。然后,在 Windows 文件共享上,您可以设置共享的安全设置,以便只有此网络用户才能读取该共享。警告:您需要在两个地方更改设置。首先,您必须更改网络共享的安全性,其次,更改正在提供服务的文件的安全性。但您只需在 Windows 资源管理器中右键单击给定目录即可完成这两项操作。

扩展 #4:我认为如果你分离来自您的 Web 应用的共享文件夹。这可能需要进行一些配置。也许你应该扩展你的问题,在哪里是你的网络应用程序,在哪里是您服务器 A 上的本地数据文件吗?

相关内容