【问题标题】:Web Development with Sphinx on a Virtual Machine for Shared and Dedicated Servers在共享和专用服务器的虚拟机上使用 Sphinx 进行 Web 开发
【发布时间】:2011-06-23 00:45:34
【问题描述】:

背景

我正在开发一个带有标准 LAMP 堆栈的网络应用程序。我是网络开发的新手,最初计划将我的代码(一旦完成)简单地通过 FTP 传输到我的托管服务提供商(目前是 BlueHost,但将来可能会改变)。

狮身人面像搜索

最近,我决定将高级搜索功能添加到由 Sphinx 搜索提供支持的网站中。显然,这意味着我必须将 Sphinx 安装到我的开发机器上。当网站上线时,我将不得不在我的生产服务器上安装(通过 ssh)Sphinx。这可能需要大量时间来调试 Sphinx 的开发和生产安装(以及其他环境)中的细微差异。

我还在学习

我偶然发现了虚拟机,看起来(如果我错了,请纠正我)一些开发人员为每个项目创建虚拟机并将虚拟机加载到他们的生产服务器上。这使他们不必在将代码上传到生产服务器后对其进行调试,从而增加成功的可能性。

问题

我的问题是:在虚拟机上进行开发并在应用开发完成后尝试将其加载到我的生产服务器上是否有意义?如果是这样,这通常可以用于共享服务器还是仅用于专用服务器?如果不是,您是否介意解释一下您对解决开发服务器和生产服务器之间存在差异的潜在问题的最佳方法的看法。

【问题讨论】:

    标签: sphinx virtual-machine dedicated-hosting


    【解决方案1】:

    大多数共享服务器的权限非常有限。有些甚至可能不允许您运行 sphinx,更不用说服务器中的 VM 实例了。

    通常的过程是您有 3 个服务器/环境(最好是 4 个)。

    1. 开发服务器 - 这是您的本地工作机器,而您在这台机器上。这可以在与生产服务器完全不同的环境中。

    2. 暂存服务器 - 此服务器理想情况下应该是您的实时服务器的相同副本。该服务器通常包含应用程序的不稳定版本,其中包含所有最新提交。让您的登台服务器与您的生产服务器尽可能接近(系统方面)将帮助您识别和解决环境问题,以免它们出现在生产服务器上让您措手不及。

    3. 生产服务器 - 这是您的实时服务器。在暂存服务器上拥有稳定版本后,您只需将代码库部署到实时服务器即可。这就是让您的生产和登台服务器彼此相同的地方,因为您不必担心环境差异会搞砸事情。

    此外,您可以拥有生产服务器的镜像来调试任何环境/数据特定问题。

    如果您在共享服务器上运行,最好为您的 Web 应用程序设置两个域。在您的服务器上拥有类似http://beta.webapp.com 的内容并将其用作您的登台服务器。

    我无法评论虚拟机,我没有按照您描述的方式在生产系统上使用它们,但我认为这与我认为的相同。

    【讨论】:

    • 很好的解释,但这仍然给我留下了一些问题。如果您建议使用专用服务器部署大多数 Web 应用程序,那么为什么我会阅读所有这些财富 500 强公司使用云托管服务(如 RackSpace 和亚马逊的云)的信息?我知道这是用于按需处理/带宽/等,但是它们如何产生一致的、无错误的结果(记住你上面告诉我的)?谢谢!
    • @ServAce85 您仍然有一个专用服务器,这通常是起点。从那里您基本上将负载分配到您的 CDN 或 EC2 实例。虚拟机仍然是一个环境,所以他们只需在他们的开发机器上安装相同的环境。环境不会完全不同。这里的问题是您要复制您的托管服务提供商在您的本地计算机中提供的环境。这对其他人来说不是问题,因为他们正在运行自己的服务器并自己控制虚拟机。
    【解决方案2】:

    JohnP 涵盖了很多领域。我要补充一点,你可以看看VirtualBox。它是免费的,并且在我的经验中效果很好。它应该允许您运行一个您选择的配置的虚拟机,例如,与您的部署主机完全一样。

    【讨论】:

      猜你喜欢
      • 2019-01-18
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 2013-12-01
      • 2015-03-01
      • 2011-12-02
      相关资源
      最近更新 更多