使用Sphinx在虚拟机上为共享和专用服务器进行Web开发

使用Sphinx在虚拟机上为共享和专用服务器进行Web开发,sphinx,virtual-machine,dedicated-hosting,Sphinx,Virtual Machine,Dedicated Hosting,背景 我正在开发一个带有标准灯堆栈的web应用程序。我是web开发新手,最初计划将我的代码(完成后)通过FTP发送给我的主机提供商(目前是BlueHost,但将来可能会更改) 斯芬克斯搜索 最近,我决定将高级搜索功能添加到由Sphinx search支持的站点。显然,这意味着我必须将Sphinx安装到我的开发机器上。当站点上线时,我必须(通过ssh)在我的生产服务器上安装Sphinx。这可能需要花费大量时间调试Sphinx开发和生产安装中的细微差异(以及其他相关环境) 我还在学习 我偶然发现了虚

背景

我正在开发一个带有标准灯堆栈的web应用程序。我是web开发新手,最初计划将我的代码(完成后)通过FTP发送给我的主机提供商(目前是BlueHost,但将来可能会更改)

斯芬克斯搜索

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

我还在学习

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

问题


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

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

通常的过程是您有3个服务器/环境(理想情况下4个就好了)

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

  • 暂存服务器-理想情况下,此服务器应该是live server的相同副本。此服务器通常包含应用程序的不稳定版本,其中包含所有最新提交。让您的暂存服务器尽可能靠近生产服务器(从系统角度来看),将有助于您在生产服务器上发现并解决环境问题,以免它们对您造成影响

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

  • 此外,您还可以使用生产服务器的镜像来调试任何特定于环境/数据的问题

    如果您在共享服务器上运行,最好在web应用程序中设置两个域。在服务器上安装类似的东西,并将其用作临时服务器


    我不能评论虚拟机,我没有像你描述的那样在生产系统上使用它们,但我认为这和我想的一样

    JohnP覆盖了很多土地。我想补充一点,你可以看看。根据我的经验,它是免费的,运行得很好。它应该允许您以您选择的方式运行VM,例如,与部署主机完全相同。

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