「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Django を本番環境にデプロイする

Django を本番環境にデプロイする

2024 年 11 月 7 日に公開
ブラウズ:995

私は最近、独自の Django アプリケーションを運用環境にデプロイしました。この Web サイトは videiro.com と呼ばれ、django HTML/CSS/JS Tailwind で開発されました。

設定

私は Cloudflare トンネル経由でアプリケーションを公開する Debian 12 サーバーを使用しています。すべての静的ファイルは nginx 経由で提供され、Django プロジェクトは gunicorn によって実行されます。

このガイドでは、これをどのように設定するかを説明します。

Django プロジェクトの準備

最初に行う必要があるのは、settings.py を開いて次の内容を変更することです

Debug = False
ALLOWED_HOSTS = ['yourdomain.tld']
CSRF_COOKIE_SECURE = True
CSRF_TRUSTED_ORIGINS = [
    'yourdomain.tld',
]

また、SECRET_KEY を長いランダムな文字列に変更する必要があります。これは誰とも共有しないでください。

その後、.gitignore という名前の新しいファイルを作成し、次の内容を貼り付けます:

db.sqlite3
*.pyc

これにより、データベースがサーバーにアップロードされず、pyc ファイルもアップロードされなくなります。

これで、プロジェクトを新しい github リポジトリ (または gitea リポジトリ) にアップロードできるようになりました。誰もがソース コードにアクセスできるようにしたくない場合は、リポジトリをプライベートとして設定してください。

ソース コードをプライベートな状態に保ちたい場合は、セルフホスト型 gitea インスタンスをセットアップすることをお勧めします。その方法については、「独自の gitea インスタンスをセルフホストする - セルフホスト型で軽量な github の代替」を参照してください。

git init
git branch -M main
git add .
git commit -m "initial commit"
git remote add origin https://...
git push -u origin main

これでサーバーにログインできるようになりました

サーバーのセットアップ

何かを設定する前に、パスワードを使用した SSH ログインを許可していないことを確認してください。このような種類の攻撃からサーバーを保護するには、「キーベースの認証による ssh の保護」に従ってください。

サーバーにログイン

ssh [email protected]

パッケージがデータに準拠していることを確認してください

sudo apt update && sudo apt upgrade

次に、Python、pip、git、nginx をインストールします

sudo apt install python3 python3-pip git nginx

次に、プロジェクトのクローンをホーム ディレクトリに作成します。

git clone https://...
cd my-project

開始したら、以下をインストールします:

pip install django django-crispy-forms whitenoise

次にプロジェクトを実行してみます:

python3 manage.py runserver

パッケージが見つからないというエラーが表示された場合は、パッケージをインストールして再実行します。

ガニコーンの構成

これからガニコーンをセットアップします

まずインストールしてください

pip install gunicorn

次に、お気に入りのテキスト エディターを使用して、gunicorn.service という名前の新しいファイルを作成します。

sudo vim /etc/systemd/system/gunicorn.service

次を貼り付けます:

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=YOURUSER
Group=www-data
WorkingDirectory=/home/YOURUSER/PROJECT
ExecStart=/path/to/gunicorn --access-logfile - --workers 3 --bind 127.0.0.1:8000 PROJECTNAME.wsgi:application

[Install]
WantedBy=multi-user.target

YOURUSER を自分のユーザーに変更します。

gunicorn へのパスを見つけるには次のコマンドを実行します:

which gunicorn

プロジェクト名は、settings.py ファイルが含まれるプロジェクト内のフォルダーの名前です。

次のコマンドを実行して、gunicorn を起動して有効にします (起動時に開始)

sudo systemctl daemon-reload
sudo systemctl start gunicorn.service
sudo systemctl enable gunicorn.service

ここで 127.0.0.1:8000 に移動すると、プロジェクトが実行されているのが確認できるはずです。

しかしまだ終わっていません

nginxのセットアップ

次に、静的コンテンツを nginx 経由で提供する必要があります。

まず、お気に入りのテキスト エディターで新しいファイル nginx 構成ファイルを作成します:

sudo vim /etc/nginx/sites-available/PROJECT

PROJECT を任意のものに変更します

次の内容を貼り付けます:

server {
    listen 80;
    server_name YOURDOMAIN;

    location /static/ {
    alias /var/www/staticfiles/;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

YOURDOMAIN を、これがホストされるドメインに変更するだけです。

ウェブサイトを有効にするシンボリック リンクを作成します:

sudo ln -s /etc/nginx/sites-available/PROJECT /etc/nginx/sites-enabled/

nginx を起動して有効にする:

sudo systemctl start nginx
sudo systemctl enable nginx

静的ファイルのセットアップ

最初に行う必要があるのは、(django) プロジェクトに cd することです

cd project

次のコマンドを実行します:

python3 manage.py collectstatic

これにより、staticfiles という名前の新しいフォルダーが作成されます

静的ファイルを設定するには、2 つのオプションがあります:

  1. /etc/nginx/nginx.conf のユーザーを自分のユーザーに変更します (安全性は低くなります)
  2. 静的ファイルを /var/www/ にコピーします (より安全です)

2 番目のオプションを実行します:

まず、/var/www
に staticfiles という名前の新しいファイルを作成します。

sudo mkdir -p /var/www/staticfiles

次に、プロジェクトからすべての静的ファイルをそこにコピーします:

sudo cp staticfiles/* /var/www/staticfiles

次に /var/www に cd します

cd /var/www

すべてのファイルの所有権を変更します

sudo chown www-data:www-data staticfiles
sudo chown www-data:www-data staticfiles/*

nginx サービスを再起動します:

sudo systemctl restart nginx

今、次の場所に向かう場合:

127.0.0.1

すべての静的ファイルが提供された状態でウェブサイトが実行されていることがわかります!

クラウドフレアトンネル経由で公開する

次に、ウェブサイトを一般公開します。

これを行うには、cloudflare アカウントと、cloudflare を指すドメインが必要です。

まずゼロトラスト ダッシュボードに移動します

[ネットワーク] で [トンネル] をクリックし、トンネルを作成します

作成したら、コネクタをインストールして実行し、特定のセットアップのページの指示に従ってください。

コネクタが実行されたら、[パブリック ホスト名] タブをクリックしてパブリック ホスト名を追加する必要があります。

次のような内容が表示されるはずです: Deploy django to production

私が持っている情報を入力してください。サービス タイプは HTTP、URL は 127.0.0.1:80 または localhost:80

である必要があります。

指定したドメインに移動すると、アプリが起動して実行されていることが確認できます。

おめでとう!

この投稿を気に入っていただき、私の (ほとんど無給の) 仕事をサポートしたい場合は、ここから寄付していただけます。

無料のニュースレターに参加してください!

ここから参加してください

リリースステートメント この記事は次の場所に転載されています: https://dev.to/4rkal/deploy-django-to-production-4bn0?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3