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

Barbara Streisand
リリース: 2024-09-25 06:15:37
オリジナル
1100 人が閲覧しました

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

設定

私は debian 12 サーバーを使用しており、cloudflare トンネル経由でアプリケーションを公開します。すべての静的ファイルは 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 user@server.ip

ログイン後にコピー

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

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 を、これがホストされるドメインに変更するだけです。

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

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

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

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

次に、Web サイトを一般公開します。

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

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

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

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

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

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

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

である必要があります。

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

おめでとうございます!

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

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

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

以上がDjango を本番環境にデプロイするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート