哪个技术堆栈可以最简单地部署客户托管的Web应用程序?

时间:2009-07-15 17:53:24

标签: php asp.net deployment web-applications

对于需要由客户在自己的服务器上安装的Web应用产品(想想FogBugz或自托管的Wordpress软件包),哪种技术堆栈可以使安装更顺畅/更容易?

我们的目标平台是众所周知的:Windows / IIS / SQLSever和Linux / Apache / MySQL。

但是要使用的技术堆栈正在围绕办公室进行辩论:没有框架的PHP,带有Codeigniter的PHP,带有C#的ASP,带有C#的ASP.Net(用于Linux安装的Mono),Rails,Java等等。 / p>

要考虑的一些事情是,运行IIS或Apache的平均“开箱即用”Web服务器是否具有安装产品所需的库(如果它是使用一种技术而不是另一种技术构建的)(例如,基于PHP的解决方案可能更容易让客户部署在Linux机器上,而不必安装单声道和在Linux机器上作为Web应用程序运行ASP.Net解决方案所需的任何其他依赖项。)< / p>

我们正在假设客户可以访问系统管理员,但可能不是全职/专用的 - 例如共享的Web主机帐户。

鉴于此,我们希望客户能够在其Web服务器上安装Web应用程序时遇到最少的摩擦,我们正在讨论用于此的正确技术堆栈。

5 个答案:

答案 0 :(得分:2)

PHP / MySql在unix堆栈上设置很简单。您可以遇到扩展和版本不兼容问题,但与大多数其他平台相比,这些问题相对较小。这有点超出了我的主要领域,但据我所知,PHP现在很好地融入了ISS。微软已经开始使用它们来使PHP与它们的堆栈更加兼容,并且在这个领域中的一些改进进入了新发布的版本5.3。

如果您使用Python或Ruby,您可以采用开箱即用的Web服务器策略。有两种语言实现的功能齐全的Web服务器。它们当然不如IIS或Apache强大,但对于低/中等流量站点,它们没问题。客户仍然可以将其主Web服务器设置为代理您的应用程序。这使得它更容易上手,因为你基本上可以拥有一个完全独立的包。

最后,我认为我不会仅根据部署的容易程度来选择技术。通过一些小工作,您可以使用任何提到的平台为您的主要平台创建安装程序包(好吧,也许mono / asp有点狡猾,但它可以工作)。

答案 1 :(得分:0)

由于您将遇到故障排除问题,我会选择提供最多在线帮助的问题。从你给出的选择和我所拥有的经验来看,我肯定会选择ASP.NET。 (我不知道在Linux上运行ASP.NET需要什么,但是Mono项目应该有一些信息。)

答案 2 :(得分:0)

你带着这个问题进入危险境地......

首先,只要您需要依赖项,就会假定它已安装在客户端计算机上。由于计算机系统的本质,大多数时候都是非标准化的,这是一个危险的假设。例如,如果您知道每次安装都将在CentOS 5全新安装上完成,则可以捆绑脚本以安装所有依赖项。实际上,如果你知道所有客户都会在机器上拥有“yum”,你可以做同样的事情,无论是什么或不在那里。然而,事实并非如此。

最重要的是,客户可能最终会做一些腿部工作,除非你不使用依赖。甚至Ruby gem也需要不同的安装,具体取决于安装的Ruby版本。你可以尝试自动化它,但总会有一些边缘情况,其中的东西不起作用,必须手工完成。

话虽如此,有一些方法可以让客户更轻松。对于无依赖的Web应用程序,我个人会选择Rails只是因为一切都在那里。和Django一样。在我看来,PHP确实需要为客户端做更多的工作,因为大多数 PHP应用程序是使用MySQL构建的,这需要导入和设置,而Rails具有“正常工作”的心态(请注意引号)。

答案 3 :(得分:0)

要记住的另一件事是,您将获得支持电话。我会选择支持人员最了解的堆栈。

答案 4 :(得分:0)

好吧,从ASP.NET的优势来看,.NET框架可以从Windows Update获得,您可以通过内置的Visual Studio Web Setup Project或第三方安装程序轻松地将您的网站包装在安装程序中InstallShield,Advanced Installer或WiX(硬核选项)。 Windows中的依赖关系可以作为“合并模块”包含在安装包中,也可以将MSI与更高级的安装创建者嵌入。

另一方面,

共享Web主机,这些都是手动的,没有基于Windows或Linux的安装程序可以帮助您。在一天结束时将FTP文件和祈祷。无论你使用什么框架,你都必须编写一个非常仔细的安装过程,该过程在第一次浏览应用程序时启动,并检查所有内容是否可用。 ASP.NET依赖项通常只是上传程序集DLL的问题。