Django 应用程序的 Procfile 中应该包含哪些内容?

Vau*_*ler 5 python django heroku procfile dyno

ProcfileHeroku 上的 Django 应用程序应该包含哪些内容?

我试过:

web: python appname.py
Run Code Online (Sandbox Code Playgroud)

因为我找到了一个类似 python 应用程序的示例。

进一步的搜索并没有让事情变得更清楚,除了我可能需要使用gunicorn而不是python。我发现各种帖子建议各种格式,例如:

web gunicorn
web:gunicorn
web: gunicorn
Run Code Online (Sandbox Code Playgroud)

我不知道gunicorn之后应该有什么,有些帖子有编程语言,有些有IP地址,有些有各种其他东西。

有些建议运行:

heroku ps:scale web=1
Run Code Online (Sandbox Code Playgroud)

但这会导致错误:

Scaling dynos... !
 !    Couldn't find that process type (web).
Run Code Online (Sandbox Code Playgroud)

我只是没有线索,也不知道该向哪里求助。

自从发帖以来,我观看了一些关于此的视频并尝试过:

web: gunicorn appname.wsgi
Run Code Online (Sandbox Code Playgroud)

在我的 Procfile 中,但它仍然不起作用,仍然导致:

at=error code=H14 desc="No web processes running"
Run Code Online (Sandbox Code Playgroud)

HB2*_*B21 5

您将需要 3 个文件才能成功将 django 应用程序部署到 Heroku。

  • Procfile
  • runtime.txt
  • requirements.txt

这两个模块应该位于您的requirements.txt中

在 中Procfile,输入

release: python manage.py migrate
web: gunicorn yourprojectname.wsgi
Run Code Online (Sandbox Code Playgroud)
  • 第一行解释了部署的类型release,这意味着生产版本,接下来migrate我想您知道会做什么。

  • 第二行解释了 Gunicorn 是UNIX 的 Python WSGI HTTP 服务器

  • runtime.txt像这样输入你的Python版本

    python-3.9.6

您可以使用此终端命令查看您拥有的 python 版本python --version

  • 最后,您将需要,如果您在虚拟环境中操作,则可以在激活时requirements.txt生成它。pip freeze > requirements.txtvenv

项目启动步骤,最简单的方法:

  • 停用您的venv以防万一
  • 转到 Heroku 仪表板
  • 创建一个应用程序并选择一个有意义的名称和免费计划,这将允许您免费运行 1 个工作人员
  • 复制其 url:herokuappname.herokuapp.com然后在 中settings.py,将其粘贴到ALLOWED_HOSTS = ['herokuappname.herokuapp.com']
  • DEBUG = False生产环境不允许设置、调试
  • 然后在终端中导航到项目文件夹并一一键入以下命令
  • Heroku login# 登录您的 Heroku 帐户
  • heroku git:remote -a yourAppname# 连接到您已经创建的应用程序
  • git init# 初始化你的仓库
  • git add .# 将所有项目文件添加到初始化的存储库中
  • git commit -m "first push"# 犯罪
  • git push heroku master # 将项目文件推送到远程 Heroku 应用程序存储库

部署成功后,输入-回车

  • heroku logout# 注销

您要使用哪个存储?

因为 Heroku 不托管静态文件。

  • 您可以Azure storage免费使用。完整教程在这里

这是我的一个项目模型,部署到具有天蓝色存储的 Heroku,您将找到所有需要的详细信息。


Chr*_*ris 1

Heroku 的Procfile格式非常简单。如文档中所述

\n
\n

Procfile 在单独的行上声明其进程类型,每行都具有以下格式:

\n
<process type>: <command>\n
Run Code Online (Sandbox Code Playgroud)\n
\n

可以看到进程类型后面应该有一个冒号,所以

\n
web gunicorn\n
Run Code Online (Sandbox Code Playgroud)\n

您问题中的示例将无法正常工作。您需要以 开始该行web:

\n
\n

<command>表示该进程类型的每个dyno在启动时应执行的命令,例如rake jobs:work

\n
\n

对于 Django,在开发过程中,您通常会用来python manage.py runserver运行应用程序,因此 Django 的合理尝试是

\n
web: python manage.py runserver\n
Run Code Online (Sandbox Code Playgroud)\n

这应该可行,但不适合生产工作

\n
\n

请勿在生产环境中使用此服务器。它尚未经过安全审核或性能测试。(这就是\xe2\x80\x99s\xe2\x80\x99s 的样子。我们\xe2\x80\x99 从事的是制作 Web 框架,而不是 Web 服务器,因此改进此服务器以能够处理生产环境超出了 Django 的范围。)

\n
\n

相反,您应该在生产中使用生产级 Web 服务器。Gunicorn 是一个常见的选择,您可以使用 Gunicorn 运行 Django 应用程序,如下所示

\n
gunicorn myproject.wsgi\n
Run Code Online (Sandbox Code Playgroud)\n

将所有这些放在一起,ProcfileHeroku 上的 Django 可能看起来像

\n
web: gunicorn myproject.wsgi\n
Run Code Online (Sandbox Code Playgroud)\n

其中myproject是 Django 项目的名称。这正是Heroku 文档对 Django 应用程序的建议。

\n

请注意,您必须将 Gunicorn 添加到项目依赖项中,以便 Heroku 能够安装它。我还建议在本地安装它,以便您可以heroku local在开发计算机上以更类似于 Heroku 生产环境的方式测试应用程序。

\n

heroku ps:scale用于更改已定义的流程类型的测功机数量和类型。它与定义这些流程类型无关。这就是你的Procfile目的。

\n