仅共享Apache Tomcat的数据

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

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

将服务器A的本地数据共享到服务器B上运行的Tomcat的正确和安全的方式是什么?

我怀疑你的服务器之间的networking是不是可信的。

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

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

这些并不是真正的一步一步的指示,每一步都需要您进一步调查。 但实际上,这是主要的重大飞跃。 如果有什么不清楚的地方,我们在这里为你的下一个问题。


扩展:如您所写,A和B之间的networking可以被认为是可信的。 在这种情况下,您不需要在服务器之间进行任何encryption,尽pipe我认为需要一个小型的防火墙。 因为你使得你的mysql服务器可以连接到networking上,所以如果只有 B能连接你的数据库,那真的很有用。它可以通过将端口过滤和mysqlauthentication结合起来解决。 但是,如果你不是pipe理员,那么你不需要担心encryption技术会使你的工作变得更好。


扩展#2:虽然你没有写任何你的“本地数据”,我可以怀疑它是在文件中 。 文件可以很容易地与SMBnetworking共享共享,这个共享可以作为一个子目录或独立的驱动器挂载在服务器B上。 如果它具有某种独立于原始Web应用程序的特性,那就更好了。 例如,如果它位于...\webapps\yourappname\attachments ,那么它最好是在服务器B上的webapps文件夹之外。这可能需要一点点的Web应用程序的configuration。

扩展#3: Apache,tomcat,每个服务器都以用户身份运行,并且可以轻松configuration为哪个用户。 如果将它们安装为服务,则可以在“pipe理工具” – >“服务”中执行此操作。 然后,在Windows文件共享上,您可以设置共享的安全设置,只有该networking用户才能够读取该共享。 警告:您需要更改两个地方的设置。 首先,您必须更改networking共享的安全性,其次,要更改正在提供的文件。 但是,你可以做只需右键单击在Windows资源pipe理器中给定的目录。

扩展#4:如果您共享文件夹从Web应用程序中分离出来 ,我认为它非常有用。 这需要大概一点点的configuration。 也许你应该扩大你的问题,你的networking应用程序在哪里 ,你的服务器上的本地数据文件在哪里?