Djangoは、Pythonで記述されたオープンソースのWebフレームワークです。これは、人気のあるオールインワンWebフレームワークであり、多くの開発者にとって最高の選択肢の1つです。 Djangoには、MVT(モデルビューテンプレート)アーキテクチャ、自動管理パネル、強力なORM(オブジェクトリレーショナルマッピング)データベースサポートなど、多くの利点があります。また、開発者向けの優れたデバッグツールも提供します。このチュートリアルでは、Ubuntu 20.04で、デフォルトのSQLiteの代わりにPostgreSQLをデータベースストレージとして、Nginxをリバースプロキシとして、GunicornをアプリケーションサーバーとしてDjangoをインストールする方法を示します。
前提条件
- Ubuntu 20.04 VPS
- root権限でのSSHアクセス
ステップ1.サーバーにログインします
まず、rootユーザーとしてSSH経由でUbuntu20.04サーバーにログインします。
ssh root@IP_Address -p Port_number
「IP_Address」と「Port_number」をサーバーのそれぞれのIPアドレスとSSHポート番号に置き換える必要があります。さらに、必要に応じて「root」を管理者アカウントのユーザー名に置き換えます。
開始する前に、サーバーにインストールされているすべてのUbuntuOSパッケージが最新であることを確認する必要があります。これを行うには、次のコマンドを実行します。
# apt update -y # apt upgrade -y
rootとしてUbuntu20.04にログインしたら、新しいシステムユーザーを作成し、sudo権限を付与します。また、このユーザーを使用してこのインストールを完了します。このチュートリアルでは、「master」という新しいシステムユーザーを作成します。任意のユーザー名を選択できます。
# adduser master
作成したら、このコマンドを実行して、新しいユーザーをsudoグループに追加しましょう。 Ubuntuでは、sudoグループのメンバーであるユーザーはsudoコマンドを実行できます。
# usermod -aG sudo master
また、www-dataグループにユーザーマスターを追加します
# usermod -aG www-data master
これで、新しいユーザー「マスター」としてログインできます
# su - master
ステップ3.パッケージをインストールする
これを開始するには、リポジトリから必要なすべてのパッケージをインストールします。リポジトリからNginx、PostgreSQL、Pythonをインストールするには、次のコマンドを実行できます:
$ sudo apt install postgresql postgresql-contrib python3-pip python3-dev libpq-dev nginx -y
ステップ4.データベースとデータベースユーザーを追加する
PostgreSQLのインストール中に、postgresという名前のシステムユーザーがデフォルトの管理ユーザーとして作成されました。このユーザーを使用してPostgreSQLシェルにログインし、管理タスクを実行する必要があります。
$ sudo -u postgres psql
「マスター」パスワードの入力を求められ、シェルは次のようになります。
postgres=#
postgreSQLシェルで、次のコマンドを実行します。
postgres=# CREATE USER djangouser WITH PASSWORD 'm0d1fyth15';
postgres=# CREATE DATABASE djangodb;
次に、エンコーディングをUTF-8、タイムゾーンおよびdefault_transaction_isolationデータベーススキームに変更する必要もあります。
postgres=# ALTER ROLE djangouser SET client_encoding TO 'utf8';
postgres=# ALTER ROLE djangouser SET default_transaction_isolation TO 'read committed';
postgres=# ALTER ROLE djangouser SET timezone TO 'UTC';
最後の部分では、新しいデータベースに権限を付与してから、PostgreSQLシェルを終了します。
postgres=# GRANT ALL PRIVILEGES ON DATABASE djangodb TO djangouser;
postgres=# \q
ステップ5.Python仮想環境を作成する
Djangoはいくつかの方法でインストールできます。この記事では、Python仮想環境にDjangoをインストールする方法を紹介します。
$ sudo -H pip3 install --upgrade pip
$ sudo -H pip3 install virtualenv
完了したら、djangoをインストールするための新しいディレクトリを作成し、新しいディレクトリに移動します
$ mkdir django && cd $_
「django」ディレクトリに入ったら、このコマンドを実行して新しい仮想環境を作成できます。
$ virtualenv djangoenv
写真のように、新しい仮想環境はディレクトリ「djangoenv」に作成されます。 Django、Gunicorn、Psycopg2を仮想環境にインストールするには、最初にアクティブ化する必要があります。
$ source djangoenv/bin/activate
上記のコマンドを実行すると、シェルは次のようになります。
(djangoenv) master@ubuntu20:~/django$
シェルにいる間に、このコマンドを実行してdjangoをインストールします。
(djangoenv) master@ubuntu20:~/django$ pip install django gunicorn psycopg2
完了すると、次のような出力が表示されます。
Installing collected packages: sqlparse, backports.zoneinfo, asgiref, psycopg2, gunicorn, django
Successfully installed asgiref-3.4.1 backports.zoneinfo-0.2.1 django-4.0 gunicorn-20.1.0 psycopg2-2.9.2 sqlparse-0.4.2
djangoプロジェクトを開始するために必要なすべてのコンポーネントは、仮想環境にインストールする必要があります。
ステップ6.Djangoプロジェクトを作成する
前の手順で、ディレクトリ~/django
を作成しました またはこの場合は/home/master/django
。このディレクトリにdjangoプロジェクトを作成します。このコマンドを実行して、~/django
にdjangoプロジェクトをインストールできます。 。仮想環境にいるときにコマンドを実行する必要があります。
(djangoenv) master@ubuntu20:~/django$ django-admin startproject djangoproject ~/django
上記のコマンドは、djangoプロジェクトを~/django/djangoproject
にインストールします 。ディレクトリを一覧表示すると、manage.py
が表示されます。 、djangoenv
、およびdjangoproject
~/django
で 。
ここで、データベースストレージとしてPostgreSQLを使用するため、構成を変更する必要があります。
$ nano ~/django/djangoproject/settings.py
この行をsettings.pyの上部に追加します
import os
そして、既存のデータベース情報を次のものに置き換えます。
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'djangodb', 'USER': 'djangouser', 'PASSWORD': 'm0d1fyth15', 'HOST': 'localhost', 'PORT': '', } }
データベースのユーザー名とパスワードが前の手順で作成したものと一致していることを確認してください。同じsettings.pyファイルでALLOWED_HOSTSを見つけたら、サーバーのIPアドレス、ドメイン名、サブドメイン名を追加できます。エントリはコンマで区切り、引用符で囲む必要があります。
ALLOWED_HOSTS = ['123.123.123.123', 'domain.com', 'sub.domain.com']
次に、Djangoの静的ファイル構成を見つけます。変更は、nginxを介してDjango静的ファイルにアクセスできるようにし、nginxがエラー404メッセージを返さないようにするために必要です。 STATIC_URL =‘/ static /’
の後にこの行を追加しますSTATIC_ROOT = os.path.join(BASE_DIR, 'static/')
変更を保存して終了することを忘れないでください。
次に、最初のデータベーススキーマをPostgreSQLデータベースに移行します。これらのコマンドを実行してみましょう。
(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py makemigrations
(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py migrate
次に、スーパーユーザーを作成します。
(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py createsuperuser
ユーザー名を作成し、メールアドレスとユーザー名のパスワードを入力するように求められます。この管理ユーザーとパスワードはDjangoバックエンドへのログインに使用するため、これらの情報を保存することをお勧めします。
最後の1つは、以下のコマンドを実行して静的ファイルを収集します。
(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py collectstatic
「はい」と答えてアクションを確認する必要があります。確認すると、次の出力が表示されます。
128 static files copied to '/home/master/django/static'
仮想環境を非アクティブ化して終了します。
(djangoenv) master@ubuntu20:~/django$ deactivate
ステップ7.GunicornSystemdファイルを作成する
Gunicornサービスを管理するために、/ etc / systemd / system/gunicorn.serviceにsystemdユニットファイルを作成します。
$ sudo nano /etc/systemd/system/gunicorn.service
これらの行を貼り付けます
[Unit] Description=gunicorn daemon After=network.target [Service] User=master Group=www-data WorkingDirectory=/home/master/django ExecStart=/home/master/django/djangoenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/master/django/djangoproject.sock djangoproject.wsgi:application [Install] WantedBy=multi-user.target
ファイルを保存して終了します。次に、systemdをリロードし、gunicornを起動します。
$ sudo systemctl daemon-reload
$ sudo systemctl start gunicorn
gunicornが実行されているかどうかを確認するには、次のコマンドを実行します。
$ sudo systemctl status gunicorn
ステップ8.Nginxを構成する
Gunicornが実行され、Djangoプロジェクトのリバースプロキシとして機能するようにnginxを構成する準備が整いました。 Django用のnginxサーバーブロックを作成し、nginxのデフォルトサーバーブロックを削除しましょう。
$ sudo rm /etc/nginx/sites-enabled/default $ sudo nano /etc/nginx/conf.d/django.conf
これらの行を /etc/nginx/conf.d/django.conf
に貼り付けます
server { listen 80; server_name 123.123.123.123; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { alias /home/master/django/static/; } location /.well-known { alias /home/master/django/; } location / { include proxy_params; proxy_pass http://unix:/home/master/django/djangoproject.sock; } }
ファイルを保存する前に、必ず123.123.123.123
サーバーの実際のIPアドレスとソケットパスが正しい場合。次に、エラーがないか確認し、nginxを再起動して新しい構成を再読み込みします。
$ sudo nginx -t $ sudo systemctl restart nginx
この時点で、http://YOUR_SERVER_IP_ADDRESS
およびhttp://YOUR_SERVER_IP_ADDRESS/admin
お気に入りのWebブラウザを使用します。
ステップ9.SSL証明書をインストールする
この手順はオプションですが、完了することを強くお勧めします。現代では、WebサイトはHTTPではなくHTTPSで実行する必要があります。この手順では、Let’sEncryptからSSLをインストールする手順を説明します。
$ sudo apt install certbot python3-certbot-nginx -y
インストールしたら、Django Webサイトのサーバーブロックを編集し、server_nameをサーバーのIPアドレスを指す実際のドメインまたはサブドメインに置き換えます。 SSL証明書を発行する前に、ドメインまたはサブドメインのDNSレコードがサーバーを指していることを確認してください。
/etc/nginx/conf.d/django.conf
を開きます この部分を編集します
server { listen 80; server_name 123.123.123.123;
に
server { listen 80; server_name yourdomain.com;
必ずyourdomain.com
を置き換えてください 実際のドメイン名で。ファイルを保存して終了し、Nginxをリロードします。
$ sudo systemctl reload nginx
これで、SSL証明書をインストールする準備ができました。次のコマンドを実行します:
$ sudo certbot
メールアドレスを入力し、Let’s Encrypt TOSに同意し、メールアドレスをElectronicFrontierFoundationと共有するかどうかを指定する必要があります。次に、HTTPSをアクティブ化する名前を選択する必要があります。番号を入力してEnterキーを押して、DjangoWebサイトを選択します。暗号化して証明書をインストールし、HTTPからHTTPSへのリダイレクトを構成するかどうかを尋ねられます。リダイレクトを選択すると、certbotがリダイレクトを作成し、問題がなければNginxをリロードします。
これで、https://yourdomain.com
でHTTPSモードでDjangoWebサイトにアクセスできるようになります。 。
これで、PostgreSQL、Nginx、Gunicornを使用してDjangoをセットアップする方法を学びました。
もちろん、Django VPSホスティングサービスのいずれかを使用している場合は、Ubuntu 20.04でPostgreSQL、Nginx、Gunicornを使用してDjangoを設定する必要はありません。その場合は、専門のLinux管理者にPostgreSQLを使用してDjangoを設定するよう依頼するだけです。 、Nginx、およびUbuntu20.04VPS上のGunicorn。 24時間年中無休でご利用いただけます。リクエストはすぐに処理されます。
PS。 Ubuntu 20.04でPostgreSQL、Nginx、Gunicornを使用してDjangoを設定する方法に関するこの投稿が気に入った場合は、下のボタンを使用してソーシャルネットワーク上の友達と共有するか、コメントセクションに返信を残してください。ありがとう。