AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 47121
Accepted
user14102
user14102
Asked: 2009-07-29 09:51:41 +0800 CST2009-07-29 09:51:41 +0800 CST 2009-07-29 09:51:41 +0800 CST

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

  • 772

假设一个 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 机器上将 ASP.Net 解决方案作为 Web 应用程序运行所需的任何其他依赖项.

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

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

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

php deployment installation mono
  • 6 6 个回答
  • 389 Views

6 个回答

  • Voted
  1. Jim B
    2009-07-29T10:39:50+08:002009-07-29T10:39:50+08:00

    您可以用 PHP 编写您的应用程序,IIS 管理员的唯一添加是 fastcgi 和 PHP。(此处为教程)。无论您采取何种路线,您都将依赖于需要解决的任何一个平台。从支持方面来看,windows 方面的变量比 linux 方面要少得多。如果您选择以 ASP.net 为目标,您可以从 .net 平台获得大量开箱即用的调试信息。Windows 虚拟主机也是标准化的(只要虚拟主机实际上获得了进行虚拟主机的许可——这当然是您可以传递给您的客户的一个警告),您可以轻松地验证它根据规范设置的服务器。

    • 1
  2. David Hicks
    2009-07-29T14:45:41+08:002009-07-29T14:45:41+08:00

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

    • 1
  3. 3dinfluence
    2009-07-29T10:19:07+08:002009-07-29T10:19:07+08:00

    我见过很多依赖堆栈来分发为其应用程序预先配置的整个堆栈的应用程序。我熟悉的例子是 Zimbra 和 Knowledge Tree。从本地管理员的角度来看,他们只有一个安装程序,其中包含他们需要的一切已经配置并准备就绪。

    另一个可行的选择是走虚拟设备路线。基于诸如 rpath 之类的东西,或者自己动手制作,并将其作为 Xen、VMWare 和 Hyper-V 的映像提供。

    • 0
  4. user2278
    2009-07-29T11:31:09+08:002009-07-29T11:31:09+08:00

    这实际上取决于您是卖给 LAMP 商店还是 .NET 商店。可移植性的最佳选择是 PHP,但您可以使用 .NET 或 Rails 进行更快的开发,这会将您锁定在一个或另一个堆栈中(除非 Mono 比我听说的更好或 Rails 具有良好的 IIS 支持...)。来自 Windows 世界,设置一个基本的 IIS 配置完全是微不足道的,即使您也需要 SQL Express。您甚至可以为他们提供 servermanagercmd.exe 的应答文件并说“使用它,它将为您安装 Web 服务器。”。

    • 0
  5. Best Answer
    Dan
    2009-07-29T12:22:24+08:002009-07-29T12:22:24+08:00

    在大多数情况下,我希望答案是 PHP/MySQL或.NET/MSSQL。我与许多在一家商店或另一家商店的客户(不是 IT 部门)一起工作 - 如果他们需要安装的应用程序不在他们现有的基础设施上,那么他们可能会对此感到满意,但随后他们会继续前进- 即使您提供了良好的文档和教程,如何在 IIS 上安装 php 支持或需要任何(看似微不足道的)附加组件。

    如果您的目标客户是只能访问兼职/临时系统管理员或可能正在使用共享主机的客户,那么我认为您确实需要提供像Wordpress 5 分钟安装一样简单的东西。如果您已经有一个共享主机计划,您将不希望安装另一个网络服务器,并且您可能没有足够的访问权限来添加对 PHP 的支持(如果您使用的是 Windows 主机计划,反之亦然)。

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

    • 0
  6. David Hicks
    2009-07-29T14:42:02+08:002009-07-29T14:42:02+08:00

    到目前为止,我提出的最好的一体式解决方案(和你一样,我也考虑过)是 Java。在 Linux/Windows/Mac/BSD 或其他任何设备上安装 Java 很容易,它几乎总是可用的。我最近一直在使用 Winstone Java servlet 容器:

    http://winstone.sourceforge.net/

    它是一个小型的、自包含的 Web 服务器 - 事实上,它是如此自包含,以至于您可以将整个内容归档为单个 JAR 文件。最终用户只需运行 Jar 文件(现在大多数情况下只需双击),您的服务器就会运行。正如您所指出的,如果端口 80 上已经运行了某些东西,这确实会导致问题,但是由于它是一个 Java servlet,因此您无论如何都在创建它,因此无需额外的努力就可以使该 servlet 也可供用户使用 - 如果他们不这样做'不想运行您的一体化 Web 服务器,他们可以在通常的 servlet 容器上以标准方式安装 servlet。

    • 0

相关问题

  • 自动化服务器部署

  • 如何配置 Ubuntu 的无人值守安装?

  • 如何说服我的 IT 经理将企业从 IE6 升级到更新的浏览器?

  • mod_rewrite 不转发 GET 参数

  • 更改 PHP 的默认配置设置?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve