在 heroku 上部署的 django rest 框架应用程序的应用程序错误
Application error on deployed django rest framework app on heroku
我正在尝试在 Heroku 上部署我的 django rest 框架应用程序。我读了许多其他类似的问题,但我很困惑。我的应用程序结构不正确或者我遗漏了一些东西。
这是我在 git 上的结构:
.gitignore
requirements.txt
src
|
--authorization
--core
--static
--staticfiles
--Procfile
--manage.py
--suacm
|
---asgi.py
---settings.py
---urls.py
---wsgi.py
authorization和core是我的django项目下的apps。在 heroku 部署之前没有静态或静态文件。但它会自动创建静态文件。然后我还创建了 static 并按照说明通过 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,您会收到这些错误。
我正在尝试在 Heroku 上部署我的 django rest 框架应用程序。我读了许多其他类似的问题,但我很困惑。我的应用程序结构不正确或者我遗漏了一些东西。
这是我在 git 上的结构:
.gitignore
requirements.txt
src
|
--authorization
--core
--static
--staticfiles
--Procfile
--manage.py
--suacm
|
---asgi.py
---settings.py
---urls.py
---wsgi.py
authorization和core是我的django项目下的apps。在 heroku 部署之前没有静态或静态文件。但它会自动创建静态文件。然后我还创建了 static 并按照说明通过 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,您会收到这些错误。