【问题标题】:Is virtualenv recommended for django production server? [closed]django 生产服务器是否推荐使用 virtualenv? [关闭]
【发布时间】:2012-03-09 09:04:28
【问题描述】:

我一直使用 virtualenv 在 localhost 中测试我的应用程序,因为我有隔离环境并且可以安全地测试新版本的软件包。

现在是我必须将我的应用程序部署到生产服务器的时候了。我想知道我是否也应该将 virtualenv 用于生产服务器,或者只是正常安装。由于它是生产服务器,因此我始终可以使用我在开发服务器中测试过的正确版本(在 virtual-env 下)

【问题讨论】:

标签: python django deployment


【解决方案1】:

如果您认为自己会在网络服务器上运行多个项目,我会这样做。一旦你有两个项目,你就冒着将来升级任何 python 包破坏另一个站点的风险。

【讨论】:

  • 这引出了一个问题,即当您知道该服务器仅用于服务单个应用程序时是否应该使用 virtualenv。
  • 你不能保证 DevOps 不会推出需要 Python 依赖项的东西。应始终分开。
【解决方案2】:

我认为当 uwsgi 使用 vhost 标志直接支持它时,它是一个完全受支持的生产解决方案:http://projects.unbit.it/uwsgi/wiki/VirtualHosting

【讨论】:

    【解决方案3】:

    是的,我认为您应该使用 virtualenv 将其部署到生产环境中。它使您的事情变得更容易和更清洁,特别是如果您计划部署多种服务,例如基于 django 的网站或其他 python 项目。你不希望他们每个人都用他们的包污染全局 python 环境。

    我认为 virtualenv 将帮助您干净地管理所有依赖项。

    要更新您的生产环境,您只需:

    pip -r name_of_your_requirements_file.txt
    

    我在生产中使用 virtualenvs,您可以使用 uWSGI 为应用程序提供服务,而 Cherokee 作为 Web 服务器。

    要在生产环境中使用您的 virtualenv,您需要将其路径添加到您的 PYTHONPATH。

    例如,如果您的环境具有路径“/home/www/my_project/env/”,则要添加的路径为:

    /home/www/env/lib/python2.7/site-packages/
    

    您可以通过多种不同的方式进行设置,但如果您通过 manage.py 生成 FCGI 或 uWSGI 接口,只需在 manage.py 的最顶部添加以下内容(在其余部分之前):

    import os
    my_virtualenv_path = "/home/www/my_project/env/lib/python2.7/site-packages/"
    # Add it to your PYTHONPATH
    os.path.append(my_virtualenv_path)
    

    您可以根据自己的设置进行调整,以防万一您还可以在 shell 中执行以下操作:

    export PYTHONPATH:$PYTHONPATH:/home/www/my_project/env/lib/python2.7/site-packages/
    

    您还需要将包含您的 settings.py 文件的目录添加到 PYTHONPATH,以便 Django 能够发现它。只需以类似的方式进行即可。

    【讨论】:

      【解决方案4】:

      django 生产服务器是否推荐使用 virtualenv?

      是的,它使您的项目不依赖于系统环境的某些方面,还使您的部署过程更加清晰和可配置。

      我使用 fabric、pip 和 virtualenv 来部署我所有的 Django 项目。

      【讨论】:

      • 我不认为“不可靠”是您想要的词(系统不能依赖您的项目?)。明确的语言。
      【解决方案5】:

      在大多数情况下,我同意最好有一个 virtualenv,即使您在第一次设置服务器时似乎不需要它。也就是说,如果您正在使用某种云服务并在短时间内为特定任务启动服务器,那么我看不出使用 virtualenv 的意义。

      【讨论】:

        【解决方案6】:

        现在使用 Docker 容器进行开发和生产部署非常流行,因此如果您正在考虑追随这一趋势,那么您将不再需要 virtualenv。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-01-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-24
          • 2010-09-09
          • 2014-07-21
          相关资源
          最近更新 更多