【问题标题】:Which technology stack would result in easiest deployment for a customer-hosted web app? [closed]哪种技术堆栈可以最简单地部署客户托管的 Web 应用程序? [关闭]
【发布时间】:2009-07-15 17:53:24
【问题描述】:

对于需要由客户在自己的服务器上安装的网络应用产品(想想 FogBugz 或自托管的 Wordpress 软件包),哪种技术堆栈会导致安装更顺畅/更轻松?

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

但要使用的技术堆栈正在办公室内争论不休:没有框架的 PHP、带 Codeigniter 的 PHP、Python、带 C# 的 ASP.Net(为 Linux 安装运行 Mono)、Rails、Java 等。

需要考虑的一些事情是,如果运行 IIS 或 Apache 的普通“开箱即用”Web 服务器是使用一种技术而不是另一种技术构建的(例如,对于客户而言,基于 PHP 的解决方案可能更容易部署在 Linux 机器上,而不是必须安装 mono 以及在 Linux 机器上作为 Web 应用程序运行 ASP.Net 解决方案所需的任何其他依赖项。

我们正在假设客户可以访问系统管理员,但可能不是全职/专职管理员 - 类似于共享网络主机帐户。

鉴于此,我们希望客户能够在他们的网络服务器上安装网络应用程序时尽可能减少摩擦,我们正在讨论用于此目的的正确技术堆栈。

【问题讨论】:

    标签: php asp.net deployment web-applications


    【解决方案1】:

    在 unix 堆栈上设置 PHP/MySql 非常简单。您可能会遇到扩展和版本不兼容的问题,但与大多数其他平台相比,这些问题相对较小。这有点超出了我的主要领域,但据我所知,这些天 PHP 已经很好地集成到了 ISS 中。 Microsoft 已着手使 PHP 与他们的堆栈更加兼容,并且在新发布的 5.3 版中对该领域进行了相当多的改进。

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

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

    【讨论】:

    • 使用 PHP,最大的障碍是创建一个直观的安装程序(特别是如果您希望它重新配置您的 Apache 主机)。请务必研究任何更复杂代码的跨平台依赖关系,并在安装时进行适当的扩展需求检查。
    • 对于 PHP,请使用现成的跨平台安装程序,如 zend 服务器 (zend.com/en/products/server-ce/index),不要使用任何非标准扩展,以免陷入困境。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      你已经进入了这个问题的危险领域......

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

      最重要的是,除非您不使用任何依赖项,否则客户端可能最终会做一些跑腿工作。甚至 Ruby gems 也需要根据安装的 Ruby 版本进行不同的安装。您可以尝试将其自动化,但总会出现一些边缘情况,即无法正常工作,必须手动完成。

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          好吧,对于 ASP.NET 而言,Windows Update 提供了 .NET 框架,您可以通过内置的 Visual Studio Web Setup Project 或第三方安装程序(如 InstallShield)轻松地将您的站点包装在安装程序中,高级安装程序或 WiX(硬核选项)。 Windows 中的依赖项可以作为“合并模块”包含在安装包中,或者您可以将 MSI 嵌入到更高级的安装创建器中。

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

          【讨论】:

            猜你喜欢
            • 2011-11-13
            • 2016-11-11
            • 1970-01-01
            • 1970-01-01
            • 2021-08-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多