将python应用程序部署到暂存和生产环境

时间:2019-12-13 10:16:52

标签: python deployment production staging

我有一个小应用程序(它是Django,但可能不相关;可以是任何python应用程序),我想将其部署到一个阶段并最终部署到生产服务器。如果重要的话,我的服务器是FreeBSD。

到目前为止,我正在工作的是一个暂存环境,该暂存环境具有正在运行的网络服务器,该服务器可以与正在为该应用程序提供服务的gunicorn进行通信。我现在正在努力的是更新应用程序。

使用virtualenvwrapper压缩包将应用程序安装到虚拟环境(使用sdist创建)中。

  1. python setup.py sdist
  2. tar.gz复制到登台服务器
  3. pip install <tarball>

虽然此工作流程实现了目标,但我对此感觉很不好。例如,它不允许我(或者我不知道如何使用)pinned packages

我正在使用pip tools创建一个不错的requirements.txt文件,但是在上述过程中未使用该文件。如果我没记错的话,pip install将查看setup.py的{​​{1}}列表。那不是我固定的依赖。

我可以想到的另一种方法是,我只是install_requires到服务器并使用git checkout或可能更喜欢的python setup.py -e来“安装”应用程序,然后运行pip install --no-deps -e . 。但这似乎也很奇怪(例如,git checkout可能会将不需要的内容复制到服务器)。

很可能可以使用仅在我想要的版本中具有软件包的本地“索引”(类似于SO上的问题How to install packages using pip according to the requirements.txt file from a local directory?),但这似乎也有些奇怪(并且费力/容易出错) )。

我认为这是一个常见的问题/疑问;但是我的Google-fu让我失望了。我尝试过

在登台>生产工作流程中部署python应用程序以允许对已安装的依赖项进行严格控制的合理选择是什么?

0 个答案:

没有答案