[英]What should go in my Procfile for a Django application?
我的Procfile
應該為 Heroku 上的 Django 應用程序添加什么內容?
我試過:
web: python appname.py
因為我為 python 應用程序找到了一個這樣的例子。
進一步搜索並沒有讓事情變得更清楚,只是我可能需要使用 gunicorn 而不是 python。 我發現了各種建議各種格式的帖子,例如:
web gunicorn
web:gunicorn
web: gunicorn
我不知道在 gunicorn 之后應該是什么,有些帖子有編程語言,有些有 IP 地址,有些有其他各種東西。
有人建議運行:
heroku ps:scale web=1
但這會導致錯誤:
Scaling dynos... !
! Couldn't find that process type (web).
我只是沒有線索,不知道該轉向哪里。
自從發布后,我觀看了一些關於此的視頻並嘗試過:
web: gunicorn appname.wsgi
在我的 Procfile 中,但它仍然不起作用,仍然導致:
at=error code=H14 desc="No web processes running"
Heroku 的Procfile
格式非常簡單。 如文檔中所述:
Procfile 在單獨的行上聲明其進程類型,每行都具有以下格式:
<process type>: <command>
可以看到進程類型后面應該有一個冒號,所以
web gunicorn
您問題中的示例無法正常工作。 您需要以web:
開頭。
<command>
表示進程類型的每個dyno在啟動時應該執行的命令,例如rake jobs:work
對於 Django,在開發中您通常會使用python manage.py runserver
來運行應用程序,因此對 Django 的合理嘗試是
web: python manage.py runserver
這應該有效,但不適用於生產工作:
請勿在生產環境中使用此服務器。 它沒有經過安全審計或性能測試。 (這就是它的保留方式。我們的工作是制作 Web 框架,而不是 Web 服務器,因此改進此服務器以處理生產環境超出了 Django 的范圍。)
相反,您應該在生產中使用生產級 Web 服務器。 Gunicorn 是一個常見的選擇, 你可以像這樣使用 Gunicorn 運行你的 Django 應用程序:
gunicorn myproject.wsgi
Procfile
,Heroku 上 Django 的Procfile
可能看起來像
web: gunicorn myproject.wsgi
其中myproject
是您的 Django 項目的名稱。 這 正是 Heroku 文檔對 Django 應用程序 的建議。
請注意,您必須將 Gunicorn 添加到您的項目依賴項中,以便 Heroku 安裝它。 我還建議在本地安裝它,以便您可以使用heroku local
以更類似於 Heroku 生產環境的方式在您的開發機器上測試您的應用程序。
heroku ps:scale
用於更改您已經定義的進程類型的 dynos 的數量和類型。 它與定義這些流程類型無關。 這就是您的Procfile
的用途。
在Procfile
,輸入
release: python manage.py migrate
web: gunicorn yourprojectname.wsgi
在runtime.txt
像這樣輸入你的 python 版本
python-3.9.6
最后你需要requirements.txt
ALLOWED_HOSTS = ['herokuappname.herokuapp.com']
DEBUG = False
Heroku login
heroku git:remote -a yourAppname
git init
git add .
git commit -m "first push"
git push heroku master
部署成功后
heroku logout
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.