从 Windows 堆栈迁移到 LAMP

从 Windows 堆栈迁移到 LAMP

我的公司即将收购另一家公司;我们运行 LAMP 堆栈,他们运行 Microsoft 堆栈。我们不会永远运行重复的基础设施,我们很可能会将他们的内容迁移到 LAMP。我们正在尝试确定最佳行动方案。这些都是相当成熟且流量很大的共置站点,我们的团队没有使用 MS 的经验,他们的团队也没有使用 LAMP 的经验。我们不想就哪种技术更好展开激烈争论,因此为了便于讨论,我们假设我们将迁移到 LAMP。

是否有人有将大型基于 Microsoft 的服务器基础设施(MS Server、IIS、MSSQL、ASP.NET)迁移到 LAMP(Linux、Apache、MySQL、PHP)的经验?

进展如何?有哪些陷阱?任何信息都会有帮助。

答案1

将您的应用程序从 Windows 迁移到 Linux 会花费您一大笔钱,并且(在我看来)您最好让所有东西都继续在当前运行的版本上运行。

应用

如果您要从 ASP.net 迁移到 PHP,则需要一名能够熟练使用这两种语言编写代码的开发人员,或者需要一名 ASP.net 开发人员向 PHP 开发人员解释每行代码的作用。您最好希望 ASP.net 系统有良好的文档记录,因为您必须模仿 PHP 中的代码确切地才能正常工作(这包括 ASP.net 代码中的任何错误或异常)。
如果 Windows 平台将处理数据(例如 SOAP 调用),您将不得不对其进行彻底的测试 - 如果 ASP.net 除了返回常规标签外还返回了一些奇怪的标签,您将不得不编写 PHP 代码以返回这些奇怪的标签 - 您不知道远程服务器如何处理这些信息。

数据库

如果 ASP.net 代码使用的是 SQL Server 特有的功能,那么如果无法让 MySQL 模仿 SQL Server 的功能,那么您可能会遇到大问题。在这种情况下,您可以随时重新构建代码,但这与我上面提到的完全迁移代码背道而驰,并且可能会出现细微错误。
直到最近,MySQL 对触发器和存储过程等的支持都很差。如果 SQL Server 使用这些东西,那么在 MySQL 上运行它时可能会得到意外的结果。

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

成本

你需要投入很多开发人员投入的时间以及测试和通过 QA 所需的时间。

此外,您没有提到当前 Windows 团队的情况。如果他们被裁员,您当前的 Linux 员工将突然面临更多服务器和基础设施需要管理,您可能需要更多 Linux 管理员或 PHP 程序员。
如果您要保留 Windows 员工,他们都需要接受各自领域的再培训。您需要接受 Linux 服务器管理员培训、PHP 培训和 MySQL 培训。我几乎可以保证,他们中至少有一个人不会乐意转到 Linux,所以他们要么会疯狂抱怨,让您的生活苦不堪言,要么会离开。抱怨的员工从来都不是好相处的,但不幸的是,这正是您的问题 :) 如果他们离开,您就必须聘请具有必要技能的人。

不要破坏用户的东西!

在执行此操作时请考虑您的用户。如果他们已添加书签http://www.acme-widgets.com/Products.asp,然后这种情况发生变化,则表示http://www.acme-widgets.com/Products.php您已破坏了他们的书签(扩展名已更改)。
有任何 RSS 源吗?它们现在也都可能被破坏,因为扩展名已更改。
您需要某种描述的 mod_rewrite 规则来将所有.asp页面重写为.php页面。

在将内容从 Windows 服务器迁移到 Linux 服务器时,不可避免地会出现一些停机时间 - 这会给用户带来不便,因为 Windows 网站会切换到 Linux 网站。

由于您要收购这家公司,您可能会(最终,如果不是立即)将他们的网站合并到您的网站中。这还会破坏您无法控制的互联网上嵌入的用户书签和链接。再次确保您已制定适当的 mod_rewrite 规则。

答案2

我们一直在跨平台迁移,从客户的角度来看,最大的障碍是确保一切正常运行,因为一旦关键任务应用程序出现中断,火灾就会开始爆发。

为了避免这一步,我要做的第一件事就是确定硬件架构、将使用什么以及它包含在哪里。从那里看看在 p2v 迁移方面是否有一些可以利用的东西,如果它在 VM 中运行并在开发到生产中并行运行,以便系统可以在您有时间进行产品测试时运行。

如果您的 DBA 对此感到满意,那么数据库迁移应该是一个无缝的操作,这将是过渡过程中最简单的部分。

相关内容