假设有一个 Web 应用程序需要在客户的服务器上运行,并由客户端的系统管理员安装,哪种技术堆栈可以更轻松地进行部署,并且系统管理员进行的“服务器操作”量最少?
我们的目标平台是 Windows/IIS/SQLServer 和 Linux/Apache/MySQL,但由于客户的 Web 服务器主机可能是任何东西,从刚打开的 Windows 机器到完全修补和最新的 Ubuntu 机器,我们正在尝试寻找可以减少系统管理员工作量的技术(即,尽量减少我们的支持要求)。
当然,典型的选项是 PHP、Python、ASP.Net(在 Linux 安装中运行 Mono)、Rails、Java 等。
需要考虑的一些问题是,如果使用一种技术而不是另一种技术构建,运行 IIS 或 Apache 的普通“开箱即用”Web 服务器是否具有安装产品所需的库。例如,对于客户来说,基于 PHP 的解决方案可能更容易在 Linux 机器上部署,而不必安装 mono 以及在 Linux 机器上作为 Web 应用程序运行 ASP.Net 解决方案所需的任何其他依赖项。
除此之外,还存在如何在“开箱即用”功能和“易于集成”之间取得适当平衡的问题,例如:内置的 Web 服务器是否有帮助?或者,当 Apache 已经在端口 80 上运行时,这是否会让事情变得更加混乱?
我们假设客户可以接触到系统管理员,但可能不是全职/专职的系统管理员——类似于共享的网络主机帐户。
鉴于此,我们希望客户能够在其 Web 服务器上安装 Web 应用程序时遇到最少的阻力,并且我们正在讨论为此使用的正确技术堆栈。
答案1
在大多数情况下,我希望答案是 PHP/MySQL或者.NET/MSSQL。我与很多客户(非 IT 行业)合作过,他们来自不同的公司 - 如果他们需要安装的应用程序不在他们现有的基础设施上,那么他们可能会对此不以为然,但随后他们会继续使用其他软件 - 即使您提供了良好的文档和教程,教他们如何在 IIS 上安装 php 支持或任何(看似微不足道的)附加组件。
如果你的目标客户是只能使用兼职/受雇的系统管理员或可能使用共享主机的客户,那么我认为你确实需要提供一些简单的服务,例如Wordpress 5 分钟安装。如果您已经有共享托管计划,那么您将不想安装另一个网络服务器,并且您可能没有足够的访问权限来添加对 PHP 的支持(如果您使用的是 Windows 托管计划,反之亦然)。
我个人会考虑哪个平台最容易开发,以及如何将其移植到其他边。
答案2
您可以用 PHP 编写应用程序,并且 IIS 管理员唯一需要添加的是 fastcgi 和 PHP。(教程这里)。无论采用哪种方式,您都需要解决对任一平台的依赖关系。从支持方面来看,Windows 端的变量比 Linux 端少得多。如果您选择以 ASP.net 为目标,则可以从 .net 平台获得大量现成的调试信息。Windows 网络托管也是标准化的(只要网络托管商确实获得了网络托管许可 - 这当然是您可以传递给客户的警告),并且您可以轻松验证它是否根据规范设置了服务器。
答案3
你可以使用 Python。它跨平台运行良好,大多数 Linux 发行版都已安装,在 Windows 上也易于安装(请参阅活动状态 Python)。您只需几行代码即可编写自己的 Web 服务器,该服务器可在 Linux 上运行或作为 Windows 服务运行。
答案4
这实际上取决于您是向 LAMP 商店还是 .NET 商店销售。对于可移植性来说,最好的选择是 PHP,但您可能能够使用 .NET 或 Rails 进行更快的开发,这会将您锁定在其中一个堆栈上(除非我听说 Mono 更好,或者 Rails 具有良好的 IIS 支持……)。对于来自 Windows 世界的人来说,设置基本的 IIS 配置完全是小菜一碟,即使您还需要 SQL Express。您甚至可以向他们提供 servermanagercmd.exe 的应答文件,并说“使用这个,它会为您安装 Web 服务器。”。