【问题标题】:How to run django files in another virtualenv environment on another server?如何在另一台服务器上的另一个 virtualenv 环境中运行 django 文件?
【发布时间】:2020-01-06 17:23:52
【问题描述】:

我正在将在 django 中创建的站点移动到另一台服务器。我已将所有文件打包到一个 zip 包中,在第二台服务器上创建了一个新的 virtualenv 环境,并将日期转储到一个 .json 文件中。我已经拥有目标服务器上的所有文件,但不幸的是我不知道下一步该做什么。

如何在新的 virtualenv 环境中运行 django?我应该使用新的 virtualenv 将文件提取到文件夹中吗?如果是这样,我必须先激活 virtualenv 吗?

我还要补充一点,迁移是从两个不同的系统进行的。来自 ubuntu 上的窗口。

【问题讨论】:

  • 你的项目所在的位置与 virtualenv 无关。您需要激活新的 virtualenv(确保您已经安装了项目所需的所有软件包),然后只需将 cd 放入项目文件夹并运行 runserver,就像您习惯于检查一切是否正常一样。不确定您是在谈论“生产”服务器还是只是另一个开发服务器。
  • 我们谈论的是服务器开发。我安装了一个新的 virtualenv 环境,从 requirements.txt 文件上传了依赖项,但是如何将项目文件传输到新环境?我应该将整个项目文件夹复制到新的 virtualenv 中吗?
  • “将整个项目文件夹复制到新的 virtualenv”没有意义。正如我在评论中所说,您的项目文件夹可以在任何地方。我不是说“只需将cd 放入您的项目文件夹”然后您就可以执行python manage.py runserver(或任何其他manage.py 命令)。只要你激活了你的 virtualenv。
  • 没错,你写的,但是安装完所有依赖后,我没有manage.py文件的文件夹,我根本没有django文件,更何况项目文件夹...
  • 但这在你的项目中(你说你压缩它并将它复制到新服务器,我想它解压缩到某个地方)。

标签: python django server virtualenv


【解决方案1】:
  1. 使用命令pip freeze > requirements.txt 将您的环境包保存到一个文件中。 然后在您的新服务器上创建 virtualenv 并使用命令 pip install -r requirements.txt 安装所有软件包。

不要手动复制你的 virtualenv,包在另一个系统上的工作方式可能不同。

激活你的 virtualenv 并运行 python -m django —version 来检查 Django 是否安装正确。

  1. 将您的代码库复制到您喜欢的任何位置。

  2. 如果不是 SQLite,则创建您的数据库(空数据库)。 cd 进入您的项目文件夹。运行python manage.py migrate 以创建数据库表。

  3. 运行python manage.py loaddata dbdump.data 迁移数据库的所有数据。 dbdump.data 是在旧系统上使用python manage.py dumpdata 创建的文件。注意:如果之前的项目包含数据迁移,loaddata 将失败,因为 db 已经包含数据。在这种情况下,您需要先使用原始 sql 手动删除数据库中的所有数据。

  4. 如果您在以前的系统上上传了文件,请将这些文件复制到 MEDIA_ROOT 文件夹(如有必要,请创建它)。检查 settings.py 中的 MEDIA_ROOT

  5. 运行python manage.py collectstatic

现在运行manage.py runserver 并检查一切是否正常:curl -v http://127.0.0.1:8000 将显示您项目的响应。

【讨论】:

  • 在此之后,requirements.txt 应提交到开发这些文件的存储库。假设他们将运行的服务器可以访问互联网,您通常会克隆它,创建 virtualenv,然后执行 pip install -r requirement.txt 这允许您定期将新代码拉入已部署的应用程序,甚至在必要时稍后安装新需求。
  • 好的,我安装了 requirements.txt 文件中的所有依赖项,但是我在任何地方都看不到 django 文件。如果这个文件需要django 1.11版本,我理解应该是在执行命令'pip install -r requirements.txt'的时候自动安装的吧?
  • 您的 django 文件已安装到您的 env 文件夹中。您必须另外从 git/svn 中提取您的项目 - 我相信您使用某种代码存储库。你的 django 是否列在 requirements.txt 文件中?
  • 是的,它已列出。在这种情况下,我没有使用代码存储库。
  • 我建议您使用最流行的 github 或 gitlab 之一来托管您的代码。流程大致是这样的:您在本地开发应用程序,完成后将代码推送到存储库,然后转到服务器并拉取代码,运行迁移/收集静态并运行服务器。使用 scp 或 rsync 将代码移动到服务器是一个坏习惯。
猜你喜欢
  • 2021-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-20
  • 1970-01-01
  • 2017-01-23
  • 2023-04-04
  • 1970-01-01
相关资源
最近更新 更多