私は最近、独自の Django アプリケーションを運用環境にデプロイしました。この Web サイトは videiro.com と呼ばれ、django + HTML/CSS/JS + Tailwind で開発されました。
私は debian 12 サーバーを使用しており、cloudflare トンネル経由でアプリケーションを公開します。すべての静的ファイルは nginx 経由で提供され、Django プロジェクトは gunicorn によって実行されます。
このガイドでは、これをどのように設定するかを説明します。
最初に行う必要があるのは、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 構成ファイルを作成します。
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 つのオプションがあります:
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 を指すドメインが必要です。
まずゼロトラストダッシュボードに移動します
「ネットワーク」で「トンネル」をクリックし、トンネルを作成します
作成したら、コネクタをインストールして実行し、特定のセットアップのページの指示に従ってください。
コネクタが実行されたら、[パブリック ホスト名] タブをクリックし、パブリック ホスト名を追加する必要があります。
次のようなものが表示されるはずです:
私が持っている情報を入力してください。サービス タイプは HTTP、URL は 127.0.0.1:80 または localhost:80
である必要があります。指定したドメインに移動すると、アプリが起動して実行されていることが確認できます。
おめでとうございます!
この投稿を気に入っていただき、私の (ほとんど無給の) 仕事をサポートしたい場合は、ここから寄付していただけます。
ここから参加してください
以上がDjango を本番環境にデプロイするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。