哪一个技术堆栈会导致客户托pipe的Web应用程序最简单的部署?

鉴于一个Web应用程序需要在客户的服务器上运行,并由系统pipe理员在客户端安装,哪个技术堆栈会导致系统pipe理员完成最less量的“服务器外科手术”,从而更容易部署

我们的目标平台是Windows / IIS / SQLServer和Linux / Apache / MySQL,但是由于客户的Web服务器主机可能是从刚刚打开的Windows机器到完全修补的最新的Ubuntu机器,我们正试图find能够为系统pipe理员带来最less工作量的技术(阅读,尽量减less我们的支持需求)。

典型的select当然是PHP,Python,ASP.Net(运行Mono的Linux安装),Rails,Java等等。

需要考虑的一些事情是,如果运行IIS或Apache的平均“开箱即用”Web服务器是使用一种技术而不是另一种技术构build的,那么是否将具有所需的库来安装该产品。 例如,基于PHP的解决scheme可能会更容易在Linux机器上进行部署,而不必安装mono,而在Linux机器上运行ASP.Net解决scheme所需的任何其他依赖性都将作为Web应用程序。

除此之外,在“开箱即用”function和“易于集成”之间有一个恰当的平衡的问题,例如:一个包含的Web服务器是否有帮助? 或者当Apache已经在端口80上运行时,这会让事情变得更加混乱?

我们正在假设客户有权访问系统pipe理员,但可能不是全职/专用的 – 就像共享的Web主机帐户一样。

鉴于此,我们希望客户能够在他们的Web服务器上安装Web应用程序时有最小的麻烦,并且我们正在讨论正确的技术堆栈。

在大多数情况下,我希望答案是PHP / MySQL .NET / MSSQL。 我与很多在一个商店或另一个商店的客户(而不是IT)合作,如果他们需要安装的应用程序不在现有的基础设施上,那么他们可能会合作,但随后他们会继续 – 即使你提供了很好的文档和教程,如何在IIS上安装php支持或者其他任何(看似微不足道的)附加组件都是必需的。

如果您的目标客户只能访问兼职/系统pipe理员或谁可能使用共享主机,那么我认为您真的需要提供一些简单的安装WordPress的5分钟 。 如果你已经有了一个共享主机scheme,你不需要安装另一个networking服务器,并且你可能没有足够的权限来添加对PHP的支持(如果你在Windows主机scheme中,反之亦然)。

就我个人而言,我会看看哪个是最容易开发的平台,以及如何将其移植到另一端。

你可以在PHP中编写你的应用程序,唯一添加的IISpipe理员是fastcgi和PHP(教程在这里 )。 无论您采取何种路线,您都将在任一平台上拥有依赖关系。 从支持方面来说,窗口方面和Linux方面的variables相差很less。 如果您select定位ASP.net,您可以从.net平台上获得大量的debugging信息。 Windowsnetworking托pipe也是标准化的(只要networking主机实际上被授权进行networking托pipe – 这当然是一个警告,您可以传递给您的客户),您可以轻松地validation它所设置的服务器根据规范。

你可以使用Python。 它运行良好,跨平台,安装在大多数Linux发行版中,易于在Windows上安装(请参阅ActiveState Python )。 您可以使用几行代码来编写自己的Web服务器,这些代码可以在Linux上运行或者作为Windows服务运行。

我看到很多依靠堆栈的应用程序分发为应用程序预configuration的整个堆栈。 我熟悉的例子是Zimbra和Knowledge Tree。 从本地pipe理员的angular度来看,他们只有一个安装程序,其中包含了他们已经configuration好的所有东西并准备就绪。

另一个可以很好解决的方法是走虚拟设备路线。 基于像rpath之类的东西,或者自己推出,并将其作为Xen,VMWare和Hyper-V的图像提供。

这要看你是卖给LAMP店还是.NET店。 你最好的可移植性是PHP,但是你可以用.NET或者Rails进行更快的开发,这会把你locking在一个或者另一个堆栈上(除非我听说Mono更好,或者Rails有很好的IIS支持…)。 来自Windows世界,设置一个基本的IISconfiguration是微不足道的,即使你也需要SQL Express。 你甚至可以为他们提供servermanagercmd.exe的答案文件,并说“使用它,它会为你安装你的Web服务器”。

Java迄今为止提出的最好的一体式解决scheme(和你一样,我已经仔细考虑过了)。 在Linux / Windows / Mac / BSD上安装Java很容易,但总是可用的。 我最近一直在使用Winstone Java servlet容器:

http://winstone.sourceforge.net/

它是一个小型的,自包含的Web服务器 – 事实上,它可以将整个事件归档为一个JAR文件。 最终用户只运行Jar文件(现在大多数情况下只需双击),并且服务器正在运行。 正如你所指出的那样,如果已经在端口80上运行了某些东西,那么它会产生问题,但是由于它是一个Java servlet,所以无论如何也不需要额外的努力来让用户也可以使用这个servlet,要运行你的一体化的web服务器,他们可以用标准的方式在他们通常的servlet容器上安装servlet。