私は最近、独自の Django アプリケーションを運用環境にデプロイしました。この Web サイトは videiro.com と呼ばれ、django HTML/CSS/JS Tailwind で開発されました。
私は Cloudflare トンネル経由でアプリケーションを公開する Debian 12 サーバーを使用しています。すべての静的ファイルは 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 [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 構成ファイルを作成します:
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 つのオプションがあります:
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 を指すドメインが必要です。
まずゼロトラスト ダッシュボードに移動します
[ネットワーク] で [トンネル] をクリックし、トンネルを作成します
作成したら、コネクタをインストールして実行し、特定のセットアップのページの指示に従ってください。
コネクタが実行されたら、[パブリック ホスト名] タブをクリックしてパブリック ホスト名を追加する必要があります。
次のような内容が表示されるはずです:
私が持っている情報を入力してください。サービス タイプは HTTP、URL は 127.0.0.1:80 または localhost:80
である必要があります。指定したドメインに移動すると、アプリが起動して実行されていることが確認できます。
おめでとう!
この投稿を気に入っていただき、私の (ほとんど無給の) 仕事をサポートしたい場合は、ここから寄付していただけます。
ここから参加してください
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3