从Windows堆栈迁移到LAMP

我的公司即将收购另一家公司; 我们运行LAMP堆栈,他们运行Microsoft堆栈。 我们不会永远运行重复的基础设施,我们很可能将他们的东西移到LAMP。 我们正在努力确定最佳的行动scheme。 这些都是相当成熟和高stream量同位网站,我们的团队没有经验的微软的东西,他们的团队没有经验的。 为了争论起见,我们不是试图开始一场技术更好的火焰战争,而是说我们将要迁移到LAMP。

有没有人有经验将基于Microsoft的大型服务器基础架构(MS Server,IIS,MSSQL,ASP.NET)迁移到LAMP(Linux,Apache,MySQL,PHP)?

它是怎么回事? 有什么陷阱? 任何信息都会有帮助。

这将花费你绝对的财富将你的应用程序从Windows迁移到Linux,并且(在我看来)你可能会更好地把所有的东西都运行在当前正在运行的东西上。

应用

如果你正在从ASP.net迁移到PHP,你需要一个开发人员,他们都可以编码,或者你需要一个ASP.net开发人员试图向PHP开发人员解释每行代码在做什么。 你最好希望ASP.net系统能够很好的logging下来,因为你必须在PHP中模拟代码才能正常工作(这也包括了ASP.net代码中的任何错误或怪异现象)。
如果Windows平台将处理数据(例如SOAP调用),那么您将不得不对此进行testing – 如果ASP.net与常规标记一起返回一些怪异标记,则必须编写PHP以返回怪人标签 – 你不知道什么远程服务器正在做的信息。

数据库

如果ASP.net代码使用的是特定于SQL Server的东西,那么如果您无法使MySQL模仿SQL Server的function,则可能会遇到很大的问题。 在这种情况下,您总是可以重新构build代码,但这与我上面提到的关于精确移植代码的做法背道而驰,并且引入了发生微妙错误的可能性。
直到最近,MySQL对触发器和存储过程等事物的支持都很差。 如果SQL Server利用这些东西,那么当你在MySQL上运行时,你可能会得到意想不到的结果。

您还需要考虑如何备份MySQL – 它的备份function远不如SQL Server备份那么好。 我相信你已经有备份当前的MySQL数据库的经验,这可能涉及备份数据库的从属实例。 记住这一点,以防万一你需要购买更多的从属MySQL服务器。

成本

您需要投入大量的开发时间,以及testing和通过质量保证所需的时间。

另外,你没有提到目前的Windows团队发生了什么事情。 如果他们被冗余,你现在的Linux员工突然有更多的服务器和基础设施需要pipe理,你可能需要更多的Linuxpipe理员或PHP程序员。
如果你留着Windows的人,他们都需要在各个领域进行再培训。 您需要Linux服务器pipe理员培训,PHP培训和MySQL培训。 我几乎可以保证他们中的至less一个人不会很高兴地转向Linux,所以他们要么抱怨就像疯了一样,让你的生活变得不幸,或者离开。 同情的工作人员从来没有乐趣处理,但不幸的是你的问题:)如果他们离开了,那么你就必须雇用一些具备必要技能的人。

不要为用户打破东西!

考虑你的用户,而你这样做。 如果他们有http://www.acme-widgets.com/Products.asp书签,然后更改为http://www.acme-widgets.com/Products.php你已经打破了他们的书签(扩展已经改变) 。
有任何RSS提要? 他们现在也可能被破坏,因为扩展已经改变。
你需要一些描述的mod_rewrite规则来将所有的.asp页面重写为.php页面。

当Windows服务器迁移到Linux服务器时,将不可避免地出现停机时间 – 这将给用户带来不便,而基于Windows的网站则切换到Linux服务器。

既然你收购了这家公司,你可能会(最终,如果不是立即的话)把他们的网站合并到你的网站上。 这也将打破用户无法控制的embedded在互联网上的书签和链接。 再次确保你有适当的mod_rewrite规则。

我们迁移两个,从; 所有的时间跨平台,从客户angular度来看,最大的障碍是确保一切正常运行,因为一旦关键任务应用程序发生中断,即火灾发生时。

为了避免这一步,我要做的第一件事就是确定硬件体系结构,将使用什么以及它包含在哪里。 从这里可以看出,如果在虚拟机中运行并行处理的东西,在p2v迁移方面是否有一些东西可以利用,以便系统可以在有时间进行产品testing时运行。

如果你的数据库pipe理员对这个过渡最简单的部分感到满意​​,那么数据库迁移应该是一个无缝的操作。