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)
您将需要 3 个文件才能成功将 django 应用程序部署到 Heroku。
Procfileruntime.txtrequirements.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以防万一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,您将找到所有需要的详细信息。
Heroku 的Procfile格式非常简单。如文档中所述:
\n\nProcfile 在单独的行上声明其进程类型,每行都具有以下格式:
\nRun Code Online (Sandbox Code Playgroud)\n<process type>: <command>\n
可以看到进程类型后面应该有一个冒号,所以
\nweb gunicorn\nRun Code Online (Sandbox Code Playgroud)\n您问题中的示例将无法正常工作。您需要以 开始该行web:。
\n\n\n
<command>表示该进程类型的每个dyno在启动时应执行的命令,例如rake jobs:work
对于 Django,在开发过程中,您通常会用来python manage.py runserver运行应用程序,因此 Django 的合理尝试是
web: python manage.py runserver\nRun Code Online (Sandbox Code Playgroud)\n这应该可行,但不适合生产工作:
\n\n\n请勿在生产环境中使用此服务器。它尚未经过安全审核或性能测试。(这就是\xe2\x80\x99s\xe2\x80\x99s 的样子。我们\xe2\x80\x99 从事的是制作 Web 框架,而不是 Web 服务器,因此改进此服务器以能够处理生产环境超出了 Django 的范围。)
\n
相反,您应该在生产中使用生产级 Web 服务器。Gunicorn 是一个常见的选择,您可以使用 Gunicorn 运行 Django 应用程序,如下所示:
\ngunicorn myproject.wsgi\nRun Code Online (Sandbox Code Playgroud)\n将所有这些放在一起,ProcfileHeroku 上的 Django 可能看起来像
web: gunicorn myproject.wsgi\nRun Code Online (Sandbox Code Playgroud)\n其中myproject是 Django 项目的名称。这正是Heroku 文档对 Django 应用程序的建议。
请注意,您必须将 Gunicorn 添加到项目依赖项中,以便 Heroku 能够安装它。我还建议在本地安装它,以便您可以heroku local在开发计算机上以更类似于 Heroku 生产环境的方式测试应用程序。
heroku ps:scale用于更改已定义的流程类型的测功机数量和类型。它与定义这些流程类型无关。这就是你的Procfile目的。
| 归档时间: |
|
| 查看次数: |
6316 次 |
| 最近记录: |