django - 在heroku上部署的django rest框架应用程序上的应用程序错误
问题描述
我正在尝试在 Heroku 上部署我的 django rest 框架应用程序。我读了许多其他类似的问题,但我很困惑。我的应用程序结构不正确,或者我遗漏了一些东西。
这是我在 git 上的结构:
.gitignore
requirements.txt
src
|
--authorization
--core
--static
--staticfiles
--Procfile
--manage.py
--suacm
|
---asgi.py
---settings.py
---urls.py
---wsgi.py
授权和核心是我的 django 项目下的应用程序。在 heroku 部署之前没有静态或静态文件。但它会自动创建静态文件。然后我还创建了静态并按照说明通过更改 settings.py 使其工作。如果有人帮我找出我在heroku上的问题以及为什么它不起作用,那就太棒了。
这是Procfile:
web: gunicorn suacm.wsgi
web: gunicorn suacm:app
当我使用此命令运行应用程序时,我的应用程序可以正常工作并在本地运行:
gunicorn suacm.wsgi:application
但我无法解决已部署应用程序中的错误。
和
heroku logs --tail
我收到的错误开始如下:
2021-05-21T14:32:20.000000+00:00 app[api]: Build succeeded
2021-05-21T14:32:26.505788+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=suacm.herokuapp.com request_id=dfeba2ff-fa7d-4dfb-9337-706f50d286dc fwd="82.222.237.15" dyno= connect= service= status=503 bytes= protocol=https
2021-05-21T14:32:26.882608+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=suacm.herokuapp.com request_id=292525ae-bc4e-49c7-b979-e455bbfd6b95 fwd="82.222.237.15" dyno= connect= service= status=503 bytes= protocol=https
当我运行这个
heroku ps:scale web=1 --app suacm
我明白了:
Scaling dynos... !
▸ Couldn't find that process type (web).
最后,当我尝试使用此命令在 src 文件夹下本地运行 heroku
src % heroku local web
我得到这个回应:
[INFO] Starting gunicorn 20.1.0
[INFO] Listening at: http://0.0.0.0:5000 (35246)
[INFO] Using worker: sync
[INFO] Booting worker with pid: 35247
Failed to find attribute 'app' in 'suacm'.
[INFO] Worker exiting (pid: 35247)
.
.
如果需要,这是我的 requirements.txt 文件:
django_environ==0.4.5
djangorestframework_simplejwt==4.6.0
django_filter==2.4.0
Django==3.1.3
djangorestframework==3.12.4
environ==1.0
PyJWT==2.1.0
gunicorn==20.1.0
django-on-heroku==1.1.2
whitenoise==5.2.0
这是我第一次部署 django 应用程序。我希望我提供了足够的信息。只是询问是否需要更多信息。
解决方案
将您的 Procfile 放在根目录中,而不是 src 和
改变这个
web: gunicorn suacm.wsgi
至
web: gunicorn src.suacm.wsgi
那为什么它在本地服务器上工作?
在您的本地设置中,您从src
不是根目录的目录启动服务器!
但是在生产中 Heroku 从根目录启动应用程序,因为根目录中没有 Procfile,您会收到这些错误。
推荐阅读
- codenameone - 可以支持 CN1 的 StickyHeaders 吗?
- python - C# 中的 pandas .rolling().mean() 模拟
- visual-studio-code - vscode自动括号在某些情况下不起作用,我可以通过键盘快捷键写一些单词吗?
- python - 创建将输入 csv 文件加载到应用程序的模块 - dijkstra 算法
- javascript - 使用 Axios 解析包装类型数组
- swift - 如何使用 Timer 在 GameViewController 中从一个场景过渡到另一个场景?
- c# - 动态 DataGrid 未显示表错误
- python - 如何创建可以使用作为子进程运行的终端修改的 PyQt5 UI
- rust - 当对 None 值调用 unwrap 时,try 块中的代码仍然会出现恐慌
- java - 非法 base64url 字符:“”从令牌 Java JWT Spring Boot 获取声明/解码时