へのDjangoアプリの配備:フルガイド
導入
あなたはdjangoとアプリを作った.すごい!そして、あなたは地球上の誰にそれを示すために興奮している.そのためには、他の人がそれにアクセスできるようにどこかにオンラインで置く必要があります.
さて、あなたはいくつかの研究を行い、Herokuを選択しました.大選択!👍
今、あなたはあなたのアプリを展開し、研究をオンラインで行った今、あなたはそれを行うには何百万もの方法を提案に従うように多くの異なるリソースを持っている.
それで、あなたは混乱して、挫折して、立ち往生して、どうにか、それをホストに入れるために管理しました、しかし、その後、あなたの驚きに、あなたはあなたのCSSファイルが現れなかったとわかりました.🤦♂️
を、今あなたの問題を解決しましょう.この記事はあなたが必要とするほとんどすべてをカバーします.
ロードマップ
インストールツール
Herokuに配備するには、Heroku CLI(Command Line Interface)をインストールする必要があります.
あなたは、ここに行くことによって、これをすることができます:https://devcenter.heroku.com/articles/heroku-cli
CLIは、ログインやランマイグレーションなどの機能を利用できるようにするために必要です.
Herokuで必要なファイルの作成
CLIをインストールした後、Herokuが必要とするすべてのファイルを作成しましょう.
ファイルは
CLIをインストールした後、Herokuが必要とするすべてのファイルを作成しましょう.
ファイルは
要件txt
要件TXTは最も簡単です.ちょっとコマンドを実行する
pip freeze > requirements.txt
このコマンドを実行します.現在のDjangoアプリケーションで必要とされるすべてのパッケージを含むtxtファイル.注意:パッケージを追加すると、再度このコマンドを実行します.このようにして、ファイルは新しいパッケージで更新されます
何が要件の使用です.txt
あなたはそれがあなたのアプリケーションが必要とするすべての依存関係が含まれていることがわかります.あなたがHerokuにあなたのアプリを置くとき、Herokuにインストールするパッケージを教えます.
procfile
この後、新しいファイル名procfileを作り、拡張子を入れません.Herokuで必要なファイルです
地獄によれば
Heroku Appsは、起動時にアプリケーションによって実行されるコマンドを指定するprocfileを含みます.procfileを使用して、さまざまな種類のプロセスを宣言できます.
web: gunicorn name_of_your_app.wsgi —log-file -
あなたのアプリケーション名について混乱している場合は、ちょうどWSGIに移動します.プロジェクトのPyファイルとそこにアプリケーション名があります.このためには、gunicornをインストールする必要がありますし、要件に追加されます.txtファイル
インストールは超簡単です.あなたはそれを推測している必要があります!
pip install gunicorn
実行時txt
この後、ランタイムと呼ばれる新しいテキストファイルを作成します.txtと内部では、次の形式で使用しているPythonのバージョンを書く
python-3.8.1
それが必要なファイルです.ここで設定を編集しなければなりません.Pyファイル.新しいリリースが配備される前に
Herokuアプリの作成
これは単純なステップであり、コマンドラインまたはHerokuウェブサイトを介して2つの方法で行うことができます.
現在Herokuウェブサイトを使いましょう.
Herokuアカウントを作成した後、
キーはSecret Secretキーで、そして、値で、設定ファイルから秘密キーをペーストして、このキーだけが使われるので、あなたはそれを変えることができます.
設定を編集します。パイ
このファイルではいくつかの変更が必要です.
レッツスタート
ファーストチェンジ
DEBUG = False
許可されたホストであなたのHerokuアプリのドメインを入力してください
エ.
ALLOWED_HOSTS = ["your_app_name.herokuapp.com", "127.0.0.1"]
SecretRadiusキー変数を次のように置き換えます(前のステップからHerokuの秘密キーを設定したとします).
SECRET_KEY = os.environ.get('SECRET_KEY')
これは、環境からSecretRenキーを取得します.我々の場合、我々はHerokuでSecretRenキーをセットすることができます、そして、それは環境変数を通してここでキーを提供します.
静的ファイルの設定
設定ファイルでは
STATIC_URL = '/static/'
これを次のコードに置き換えます
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
基本的には、CSSファイルなどの静的ファイルを保持する静的なフォルダを作成します.
あなたのアプリケーションがそれに格納されている画像が含まれている場合、またはユーザーが次の行を追加する機能を格納している
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
これは上記とほとんど同じです
あなたがする必要があるもう一つのことがあります.
あなたがメディアファイルを持っているならば、あなたがあなたのURLに線を加える必要があるサーバーへのdjangoを許すために.プロジェクトのPOPファイル(トップレベルのURLファイル)
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
私は非常にこのドキュメントを見てお勧めします.
プロダクションで静的ファイルを提供する必要がある最後のものは
With a couple of lines of config WhiteNoise allows your web app to serve its own static files, making it a self-contained unit that can be deployed anywhere without relying on nginx, Amazon S3 or any other external service. (Especially useful on Heroku, OpenShift and other PaaS providers.) -WhiteNoise Documentation
ホワイトノイズ
pip install whitenoise
設定でミドルウェアに追加します.Pyファイル
MIDDLEWARE = [
# 'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
# ...
]
この後、要件を作成するコマンドを実行することを忘れないでください.txtファイル.覚えてる?
ドキュメントを見てください
https://docs.djangoproject.com/en/3.1/howto/static-files/
それで、最終的に、我々は展開のために2つの最も重要なステップを完了しました
http://whitenoise.evans.io/en/stable/
Githubへのコードの追加
新しいgithubレポを作成し、すべてのコードを追加します.
その後、Herokuに行くと展開タブの下には、Githubを接続するオプションが表示されます.
あなたのレポを接続し、アプリケーションを展開するには、展開ボタンを押すことができます.
Heroku Postgresの使用
何が必要か私はSQLiteを既に使用しています!
問題は
The Heroku filesystem is ephemeral - that means that any changes to the filesystem whilst the dyno is running only last until that dyno is shut down or restarted. Each dyno boots with a clean copy of the filesystem from the most recent deploy. This is similar to how many container-based systems, such as Docker, operate.
In addition, under normal operations, dynos will restart every day in a process known as "Cycling".
基本的にすべてのデータを保存するごとに24時間の削除を取得します.
HerokuはAWSかPostgresのどちらかを使うことを提案します.HerokuはPostgresを使うのがとても簡単になりました.
これをしましょう
あなたのアプリケーションダッシュボードとPostgresのリソースセクションの検索に移動します.それを選択し、このような何かを取得します
https://help.heroku.com/K1PPS2WM/why-are-my-file-uploads-missing-deleted
今設定タブに移動し、設定のVarsを明らかに
データベースキーURLキーが表示されます.それはHerokuがデータベースを追加したことを意味し、今我々は、このデータベースを使用するように我々のアプリを教えてください.
これについては、djchen database asatus urlと呼ばれる別のパッケージを必要とします.PIPを介してインストールし、設定の上部にインポートします.Pyファイル
設定ファイル内のデータベースの下に次のコードを貼り付けます
db_from_env = dj_database_url.config(conn_max_age=600)
DATABASES['default'].update(db_from_env)
それは今あなたのデータベースのセットアップです
現在、あなたのデータベースは空です、そして、あなたはそれをいっぱいにしたいかもしれません.
DEBUG = False
ALLOWED_HOSTS = ["your_app_name.herokuapp.com", "127.0.0.1"]
SECRET_KEY = os.environ.get('SECRET_KEY')
設定ファイルでは
STATIC_URL = '/static/'
これを次のコードに置き換えますSTATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
基本的には、CSSファイルなどの静的ファイルを保持する静的なフォルダを作成します.あなたのアプリケーションがそれに格納されている画像が含まれている場合、またはユーザーが次の行を追加する機能を格納している
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
これは上記とほとんど同じですあなたがする必要があるもう一つのことがあります.
あなたがメディアファイルを持っているならば、あなたがあなたのURLに線を加える必要があるサーバーへのdjangoを許すために.プロジェクトのPOPファイル(トップレベルのURLファイル)
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
私は非常にこのドキュメントを見てお勧めします.プロダクションで静的ファイルを提供する必要がある最後のものは
With a couple of lines of config WhiteNoise allows your web app to serve its own static files, making it a self-contained unit that can be deployed anywhere without relying on nginx, Amazon S3 or any other external service. (Especially useful on Heroku, OpenShift and other PaaS providers.) -WhiteNoise Documentation
ホワイトノイズ
pip install whitenoise
設定でミドルウェアに追加します.PyファイルMIDDLEWARE = [
# 'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
# ...
]
この後、要件を作成するコマンドを実行することを忘れないでください.txtファイル.覚えてる?ドキュメントを見てください
https://docs.djangoproject.com/en/3.1/howto/static-files/
それで、最終的に、我々は展開のために2つの最も重要なステップを完了しました
http://whitenoise.evans.io/en/stable/
Githubへのコードの追加
新しいgithubレポを作成し、すべてのコードを追加します.
その後、Herokuに行くと展開タブの下には、Githubを接続するオプションが表示されます.
あなたのレポを接続し、アプリケーションを展開するには、展開ボタンを押すことができます.
Heroku Postgresの使用
何が必要か私はSQLiteを既に使用しています!
問題は
The Heroku filesystem is ephemeral - that means that any changes to the filesystem whilst the dyno is running only last until that dyno is shut down or restarted. Each dyno boots with a clean copy of the filesystem from the most recent deploy. This is similar to how many container-based systems, such as Docker, operate.
In addition, under normal operations, dynos will restart every day in a process known as "Cycling".
基本的にすべてのデータを保存するごとに24時間の削除を取得します.
HerokuはAWSかPostgresのどちらかを使うことを提案します.HerokuはPostgresを使うのがとても簡単になりました.
これをしましょう
あなたのアプリケーションダッシュボードとPostgresのリソースセクションの検索に移動します.それを選択し、このような何かを取得します
https://help.heroku.com/K1PPS2WM/why-are-my-file-uploads-missing-deleted
今設定タブに移動し、設定のVarsを明らかに
データベースキーURLキーが表示されます.それはHerokuがデータベースを追加したことを意味し、今我々は、このデータベースを使用するように我々のアプリを教えてください.
これについては、djchen database asatus urlと呼ばれる別のパッケージを必要とします.PIPを介してインストールし、設定の上部にインポートします.Pyファイル
設定ファイル内のデータベースの下に次のコードを貼り付けます
db_from_env = dj_database_url.config(conn_max_age=600)
DATABASES['default'].update(db_from_env)
それは今あなたのデータベースのセットアップです
現在、あなたのデータベースは空です、そして、あなたはそれをいっぱいにしたいかもしれません.
何が必要か私はSQLiteを既に使用しています!
問題は
The Heroku filesystem is ephemeral - that means that any changes to the filesystem whilst the dyno is running only last until that dyno is shut down or restarted. Each dyno boots with a clean copy of the filesystem from the most recent deploy. This is similar to how many container-based systems, such as Docker, operate.
In addition, under normal operations, dynos will restart every day in a process known as "Cycling".
基本的にすべてのデータを保存するごとに24時間の削除を取得します.
HerokuはAWSかPostgresのどちらかを使うことを提案します.HerokuはPostgresを使うのがとても簡単になりました.
これをしましょう
あなたのアプリケーションダッシュボードとPostgresのリソースセクションの検索に移動します.それを選択し、このような何かを取得します
https://help.heroku.com/K1PPS2WM/why-are-my-file-uploads-missing-deleted
今設定タブに移動し、設定のVarsを明らかに
データベースキーURLキーが表示されます.それはHerokuがデータベースを追加したことを意味し、今我々は、このデータベースを使用するように我々のアプリを教えてください.
これについては、djchen database asatus urlと呼ばれる別のパッケージを必要とします.PIPを介してインストールし、設定の上部にインポートします.Pyファイル
設定ファイル内のデータベースの下に次のコードを貼り付けます
db_from_env = dj_database_url.config(conn_max_age=600)
DATABASES['default'].update(db_from_env)
それは今あなたのデータベースのセットアップです現在、あなたのデータベースは空です、そして、あなたはそれをいっぱいにしたいかもしれません.
heroku login
heroku run python manage.py makemigrations
heroku run python manage.py migrate
heroku run python manage.py createsuperuser
今すぐあなたのアプリケーションを展開する準備が整いましたいずれの使用
git push heroku master
(変更をコミットした後)またはGitHubを押してください.ので、最終的に完了です.それは少し長いですが、非常に簡単ですので、いくつかのマイナーな変更だけを行う必要がありますが、あまりにも大きい.
どんな種類の改善があるならば、コメントで私に教えてください.
他の記事をチェック
ブログ一覧にもどる
https://theshubhagrwl.hashnode.dev/ 私のウェブサイトを訪問し、ブログやソーシャルプラットフォームで私に従ってください
Reference
この問題について(へのDjangoアプリの配備:フルガイド), 我々は、より多くの情報をここで見つけました https://dev.to/theshubhagrwl/deploying-django-app-to-heroku-full-guide-4ce0テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol