Access-Control-Allow-Origin」と入力します。*を「600」に設定して、作成したばかりのヘッダーが10分ごとに期限切れになるようにします。[オプションを保存]をクリックします。Access-Control-Allow-Origin」応答ヘッダーが含まれ、最新の安全なWebブラウザーがこれらのファイルをドメイン間で取得できるようになります。Spaceから静的ファイルを正しく提供していることをテストします。Djangoアプリディレクトリに移動します。Spaceにアップロードします。collectstatic次のような出力が表示されるはずです。ENTER」を押して確認します。次のような出力が表示されます。`アプリの静的ファイルをSpaceに正常にアップロードしたことを確認します。+`ディレクトリ内のファイルを検査できます。次に、Djangoが適切なURLを書き換えていることを確認します。Gunicornサーバーを起動します。http://:8000/adminPollsアプリの管理者認証ウィンドウが表示されるはずです。今回は正しいスタイルが設定されています。次に、ブラウザの開発者ツールを使用してページのコンテンツを調べ、ソースファイルの保存場所を明らかにします。次のウィンドウが表示されます。[Chrome開発ツールウィンドウ]ここから、ツールバーの*ソース*をクリックします。+`ディレクトリの両方が表示されるはずです。これにより、CSSスタイルシートとフォントがSpaceのCDNから正しく提供されていることが確認されます。+」を押してGunicornを停止します。+`を入力すると、アクティブなPython仮想環境を無効にできます。deactivateプロンプトは通常に戻ります。この時点で、Djangoサーバーから静的ファイルを正常にオフロードし、オブジェクトストレージから静的ファイルを提供しています。これで、Gunicornをシステムサービスとして自動的に開始するように構成できます。GunicornがDjangoアプリケーションとやり取りできることをテストしましたが、アプリケーションサーバーを起動および停止するより堅牢な方法を実装する必要があります。これを実現するために、systemdサービスとソケットファイルを作成します。Gunicornソケットは起動時に作成され、接続をリッスンします。接続が発生すると、systemdはGunicornプロセスを自動的に開始して接続を処理します。+`権限を持つGunicornのsystemdソケットファイルを作成して開くことから始めます。+`セクションを作成します。適切なタイミングで作成されました。ファイルに次のコードを追加します。socket[Socket]ListenStream=/run/gunicorn.sock[Install]WantedBy=sockets.target完了したら、ファイルを保存して閉じます。サービスファイル名は、拡張子を除き、ソケットファイル名と一致する必要があります。`セクションから始めます。ここにサービスの説明を入力し、ネットワーキングターゲットに到達した後にのみ開始するようにinitシステムに指示します。+`ディレクティブを含める必要があります。`セクションを開きます。実行するために処理するユーザーとグループを指定します。関連するすべてのファイルを所有しているため、通常のユーザーアカウントにプロセスの所有権を付与します。www-data」グループに付与します。次に、作業ディレクトリをマップし、サービスを開始するために使用するコマンドを指定します。この場合、仮想環境内にインストールされているGunicorn実行可能ファイルへのフルパスを指定する必要があります。`ディレクトリ内に作成したUnixソケットにバインドします。+`プロセスがGunicornログを収集できるように、すべてのデータを標準出力に記録します。ここで、ワーカープロセスの数など、オプションのGunicorn調整を指定することもできます。ここでは、3つのワーカープロセスでGunicornを実行します。次のサービスセクションをファイルに追加します。+`セクションを追加します。これにより、ブート時に起動できるようにした場合、このサービスをリンクする対象がsystemdに指示されます。通常のマルチユーザーシステムが稼働しているときにこのサービスを開始する必要があります。mysite.wsgi:application[Install]WantedBy=multi-user.targetこれで、systemdサービスファイルが完成しました。今すぐ保存して閉じます。これで、Gunicornソケットを開始して有効にすることができます。`にソケットファイルが作成されます。gunicorn.socketソケットファイルを確認することで、操作が成功したことを確認できます。Gunicornソケットファイルの確認プロセスのステータスをチェックして、正常に開始したかどうかを確認します。gunicorn.socket次のような出力が表示されるはずです。+`ファイルの存在を確認します。+`ファイルが見つからない場合、Gunicornソケットが正しく作成されなかったことを示しています。次を入力して、Gunicornソケットのログを確認します。+`ファイルをもう一度見て問題を修正してください。ie`はアクティブになりません。これを確認するには、次のように入力します。+`を介してソケットへの接続を送信できます。localhost端末にアプリケーションからのHTML出力が表示されるはずです。これは、Gunicornが開始され、Djangoアプリケーションを提供できることを示しています。次のように入力して、Gunicornサービスが実行されていることを確認できます。status`の出力が問題の発生を示している場合は、ログで詳細を確認してください。+`ファイルに問題がないか確認することもできます。このファイルに変更を加えた場合は、デーモンをリロードしてサービス定義を再読み込みし、Gunicornプロセスを再起動してください。gunicornNginxサーバーの構成に進む前に、問題をトラブルシューティングしてください。HTTPSおよびGunicornプロキシの受け渡しの構成Gunicornがより堅牢な方法で設定されたので、接続を暗号化し、トラフィックをGunicornプロセスに渡すようにNginxを構成する必要があります。+」ディレクトリで利用可能になっているはずです。18.04]そしてこのステップに戻ります。+`サーバーブロックファイルを削除します。`+`サーバーブロックファイルを変更します。エディターでドメインに対応するサーバーブロックファイルを開きます。/etc/nginx/sites-available/次のようなものが表示されるはずです。Certbot}これは、https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-18-04#step-5-setting-up-で作成されたデフォルトのサーバーブロックファイルの組み合わせです。Encryptによって自動的に追加される追加。このファイルの内容を削除し、HTTPトラフィックをHTTPSにリダイレクトし、前の手順で作成したGunicornソケットに着信要求を転送する新しい構成を作成します。」を使用してこのファイルのバックアップを作成できます。+`というバックアップを作成します。/etc/nginx/sites-available/.old次に、ファイルを再度開き、その内容を削除します。ブロックごとに新しい構成を作成します。+`のHTTPリクエストをHTTPSにリダイレクトする次のブロックに貼り付けます。+`にリダイレクトします。これにより、直接HTTPリクエストがサーバーのIPアドレスにリダイレクトされます。+`ドメインのHTTPSリクエストを処理する次の設定コードのブロックを追加します。+」ドメインにヒットするリクエストをリッスンします。Encrypt構成を提供します。これは、SSL証明書と秘密キーの場所、および追加のセキュリティパラメーターを指定します。+`行は、ファビコンを見つける際の問題を無視するようにNginxに指示します。ヘッダーを追加して、リクエストが転送されたことをアップストリームのDjangoサーバーに通知し、さまざまなリクエストプロパティを提供します。これら2つの構成ブロックを貼り付けた後、最終ファイルは次のようになります。}}完了したら、ファイルを保存して閉じます。次のように入力して、構文エラーのNginx設定をテストします。-t設定にエラーがない場合は、次を入力してNginxを再起動します。nginxこれで、サーバーのドメインまたはIPアドレスにアクセスして、アプリケーションを表示できるようになります。ブラウザは安全なHTTPS接続を使用してDjangoバックエンドに接続する必要があります。+`ファイルに追加する必要があります。エディターでこのファイルを再度開きます。~/django-polls/mysite/settings.pyファイルの一番下までスクロールし、次のパラメーターを追加します。Trueこれらの設定は、サーバーでHTTPSを有効にしたことをDjangoに伝え、「安全な」Cookieを使用するよう指示します。これらの設定の詳細については、https://docs.djangoproject.com/en/のhttps://docs.djangoproject.com/en/2.1/topics/security/#ssl-https[SSL/HTTPSセクション]をご覧ください。[Djangoのセキュリティ]。完了したら、ファイルを保存して閉じます。最後に、Gunicornを再起動します。gunicornこの時点で、HTTP要求をリダイレクトし、これらの要求をGunicornに渡すようにNginxを構成しました。これで、DjangoプロジェクトとアプリでHTTPSが完全に有効になります。エラーが発生した場合は、https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-18でこのディスカッションを行ってください。[NginxとGunicornのトラブルシューティング]が役立つ場合があります。18.04サーバーで実行されるスケーラブルなDjangoアプリケーションをセットアップおよび構成しました。このセットアップを複数のサーバーに複製して、可用性の高いアーキテクチャを作成できます。[Docker]または別のコンテナーランタイムを使用してコンテナー化して、展開とスケーリングを容易にすることができます。[Kubernetes]のようなコンテナークラスターに展開できます。+`アプリをKubernetesクラスターで実行できるようにコンテナー化およびモダナイズする方法を検討します。Mediaファイルをオブジェクトストレージにオフロードすることもできます。S3を使用してDjangoサイトの静的ファイルとメディアファイルを保存する]。静的ファイルを圧縮して、エンドユーザーへの配信をさらに最適化することも検討してください。compresser]のようなDjangoプラグインを使用できます。