0

背景

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

狮身人面像搜索

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

我还在学习

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

问题

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

4

2 回答 2

0

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

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

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

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

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

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

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

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

于 2011-06-22T06:17:04.100 回答
0

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

于 2011-06-22T16:45:34.690 回答