正在将 python 站点部署到生产服务器

Deploying python site to production server

我在测试服务器中有 django 网站,我对部署过程应该如何进行感到困惑。

本地我有这些文件夹

code
virtualenv
static
static/app/bower_components
node_modules

目前在 git 我那里只有代码文件夹。

我最初的想法是在生产服务器上执行此操作

git clone repo
pip install
npm install 
bower install
colectstatic

但我遇到了这个问题,有时 pip or npm or bowel 中的某些组件无法安装,然后生产 deployemnet 失败。

我想把所有东西都放在 static、bower、npm 等里面 git 这样我就可以在生产中获取所有东西。

这是正确的做法吗?我想知道解决这个问题的正确方法

But i had this problem that sometimes some components in pip or npm or bowel fail to install and then production deployment fails.

除了找出生产中出现故障的原因外,没有其他解决方案(或者解决方法是不在生产中安装任何东西,只需将内容复制过来)。

我会警告不要选择第二个选项,因为 Python 虚拟环境并非设计为可移植的。如果您有 PIL/Pillow 或数据库驱动程序等组件,则需要在构建时安装和编译系统库。

这是我推荐的,与文档中的 deployment section 一致:

  1. 创建更新的需求文件 (pip freeze > requirements.txt)
  2. 运行 在您的测试环境中收集静态信息。
  3. 将静态目录移动到您的 frontend/proxy 计算机,并将其映射到 STATIC_URL。通过浏览静态 URL(例如:http://example.com/static/images/logo.png
  4. 来确认这是否有效
  5. Clone/copy 您的代码库到生产服务器。
  6. 创建一个空白的虚拟环境。
  7. 使用 pip install -r requirements.txt
  8. 安装依赖项
  9. 确保 run through the deployment checklist,其中包括您需要为生产启用的安全提示和设置。

在此之后,您可以使用您喜欢的方法启动您的 django 服务器。

关于部署 django 有 many, many guides,许多是针对特定环境定制的(例如,AWS 自动化、Heroku 部署技巧、Digital Ocean 等)。您可以浏览那些想法(我通常选择任何自动化技巧),但要小心采用一种策略,而不要确保它适用于您的特定 environment/requirements.

另外 this 可能对一些部署指南有所帮助。