【问题标题】:Best practice for package install on django server在 django 服务器上安装包的最佳实践
【发布时间】:2018-03-24 15:16:19
【问题描述】:

所以我自己设置了一个服务器。现在我遇到了很多不同的安装包的方法。 我在想nginx、gunicorn、python3、postgresql等核心包。

我了解到设置 VENV(虚拟环境)是一件好事,这样我就可以在包上运行多个使用不同版本的项目。

但有点令人困惑,它们不会在 VENV 中。

有些在 VENV 之外安装 postgreSQL,但在里面安装 psycopg2。一些VENV里面的gunicorn。等等。

是否有更安全的最佳做法或规则?

信息。我正在使用 Nginx、gunicorn 设置 Ubuntu 服务器 16.04。 PostgreSQL、psycopg2、python3

【问题讨论】:

  • postgreSQL 不是 python 包,所以不能在虚拟环境中安装。通常你会使用你的包管理器(即 Ubuntu 中的 apt)来安装它。
  • 啊。所以虚拟环境只是python包的虚拟环境。我被困在我的脑海里,就像一个虚拟机一样。知道了。 VENV 内部的所有 python 包以及外部的所有内容。谢谢!我对这一切都不熟悉。

标签: python django nginx server


【解决方案1】:

这是我用于我的应用程序的东西,它正在工作,但也许有更好的选择。

  • Nginx、PostgreSQL、python3、supervisor 安装为系统包
  • 对我在一台服务器中运行的每个应用程序使用 virtualenv 我在那里安装:gunicorn、psycopg2 和所有其他要求 对于 Django 项目(大部分时间它都列在里面 requirements.txt文件)
  • 使用 supervisor 运行 gunicorn 和 Celery(需要时)

如果你想实现一些服务器安装自动化,你可以使用Ansible,它并没有那么复杂,并且可以与 Python/Django 很好地交互,并提供大量代码示例。但最好先自己开始做事,以了解和了解自己在做什么。

祝你好运

【讨论】:

    【解决方案2】:

    @Mounir 的回答非常可靠——但我想提出另一条建议——使用 Ansible Galaxy 的剧本也是另一种选择。现有的剧本已经存在许多用例(包括 Django),它们考虑了许多这些最佳实践。我并不是说 Galaxy 上的所有剧本都很好——但有些剧本很好,而且由于是开源的,它们经常被打补丁和更新。

    【讨论】:

      猜你喜欢
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      • 2011-08-04
      • 2010-12-21
      • 1970-01-01
      相关资源
      最近更新 更多