へのDjangoアプリの配備:フルガイド


導入


あなたはdjangoとアプリを作った.すごい!そして、あなたは地球上の誰にそれを示すために興奮している.そのためには、他の人がそれにアクセスできるようにどこかにオンラインで置く必要があります.
さて、あなたはいくつかの研究を行い、Herokuを選択しました.大選択!👍
今、あなたはあなたのアプリを展開し、研究をオンラインで行った今、あなたはそれを行うには何百万もの方法を提案に従うように多くの異なるリソースを持っている.
それで、あなたは混乱して、挫折して、立ち往生して、どうにか、それをホストに入れるために管理しました、しかし、その後、あなたの驚きに、あなたはあなたのCSSファイルが現れなかったとわかりました.🤦‍♂️
を、今あなたの問題を解決しましょう.この記事はあなたが必要とするほとんどすべてをカバーします.

ロードマップ

  • インストールツール
  • 作成ファイルが必要です
  • Herokuアプリ
  • を作成します
  • 設定を編集します.PY
  • スタティックファイルの変更を行う

    インストールツール


    Herokuに配備するには、Heroku CLI(Command Line Interface)をインストールする必要があります.
    あなたは、ここに行くことによって、これをすることができます:https://devcenter.heroku.com/articles/heroku-cli
    CLIは、ログインやランマイグレーションなどの機能を利用できるようにするために必要です.

    Herokuで必要なファイルの作成


    CLIをインストールした後、Herokuが必要とするすべてのファイルを作成しましょう.
    ファイルは

  • 要件txt
    要件TXTは最も簡単です.ちょっとコマンドを実行する
    pip freeze > requirements.txt 
    
    このコマンドを実行します.現在のDjangoアプリケーションで必要とされるすべてのパッケージを含むtxtファイル.
    注意:パッケージを追加すると、再度このコマンドを実行します.このようにして、ファイルは新しいパッケージで更新されます
    何が要件の使用です.txt
    あなたはそれがあなたのアプリケーションが必要とするすべての依存関係が含まれていることがわかります.あなたがHerokuにあなたのアプリを置くとき、Herokuにインストールするパッケージを教えます.

  • procfile
    この後、新しいファイル名procfileを作り、拡張子を入れません.Herokuで必要なファイルです
    地獄によれば
    Heroku Appsは、起動時にアプリケーションによって実行されるコマンドを指定するprocfileを含みます.procfileを使用して、さまざまな種類のプロセスを宣言できます.
  • あなたのアプリのウェブサーバ
  • 労働者プロセスの複数のタイプ
  • などのシングルトンプロセス
  • clockを走らせる
  • タスク
  • 我々のアプリケーションの場合は、次のコマンドを書くことができます
    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)
    
    それは今あなたのデータベースのセットアップです
    現在、あなたのデータベースは空です、そして、あなたはそれをいっぱいにしたいかもしれません.
  • オープンターミナル
  • タイプ→ 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/ 私のウェブサイトを訪問し、ブログやソーシャルプラットフォームで私に従ってください