开发web服务器和生产web服务器有多接近?

5 投票
5 回答
632 浏览
提问于 2025-04-11 09:27

大多数Python框架都会有一个开发用的网页服务器,这个服务器通常会提醒你,它不适合用作生产环境的服务器。那么,这些开发服务器和真正的生产服务器之间到底差别有多大呢?

我现在还没决定用哪个框架,更别提用什么样的生产服务器了,所以很难给出一个“开发服务器x和生产服务器y的对比”的具体答案。基于这个情况,我想把问题说得更清楚一点:在你过去使用Python框架的经验中,从开发服务器上把应用程序迁移到生产系统上,你花了多少时间?或者说,你有没有直接在一个更接近生产环境的服务器上开发你的应用,而跳过了开发服务器?

5 个回答

2

我在用django开发。我们的生产服务器是远程的,所以用它来开发真的很麻烦。最开始,我创建了一个虚拟机,尽量把它的环境和生产服务器对齐。但后来那个虚拟机出了问题(因为其他原因)。我当时想了想,发现其实没必要为了开发而使用一个定制的虚拟机。因为应用程序在开发时的资源和生产服务器不一样,所以在绝对意义上也没法用来测试查询的时间。

所以现在我在开发时使用django自带的开发服务器和sqlite,而在生产环境中用apache/wsgi和postgresql。只要在两个环境中满足python的依赖关系,它们是完全兼容的。唯一可能的问题就是直接写原始sql,而不是使用orm。

2

一般来说,运行应用程序所需的设置是差不多的,包括环境设置。
不过,客户通常在开发环境中使用的系统处理能力和其他硬件资源相对较弱。我见过他们在开发环境中使用虚拟服务器,因为他们通常会同时进行多个项目,这样可以帮助他们降低成本。

5

在搭建测试环境时,应该尽量让它和实际生产环境相似,当然这要看你手头的资源。无论是用Python开发的项目,还是其他网页项目,这条原则都是适用的。不过,实际上很多公司不愿意花那么多钱去做到这一点。在这种情况下,至少要让离生产环境最近的那个测试环境尽量接近生产环境。

在考虑这些事情时,有几个要点需要记住:

  • 生产环境通常有很多机器,比如应用服务器、数据库服务器、网页服务器、负载均衡器、防火墙等等,记得都要考虑到。

  • 操作系统

  • CPU的数量。从一个只有一个CPU的测试环境切换到一个多核的生产环境,可能会暴露出一些在测试时没有发现的多线程问题。

  • 负载均衡。很多时候,测试环境没有进行负载均衡。如果在多个生产应用服务器之间复制会话(比如用户登录信息),那么在测试环境中也应该尽量做到这一点。

  • 软件或库的版本

撰写回答