GNU/Linux >> Linux の 問題 >  >> Panels >> Panels

Ubuntu 20.04でPostgres、Nginx、Gunicornを使用してDjangoをセットアップする方法

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
ステップ2.システムユーザーを作成します

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で 。

ここで、データベースストレージとしてP​​ostgreSQLを使用するため、構成を変更する必要があります。

$ 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を設定する方法に関するこの投稿が気に入った場合は、下のボタンを使用してソーシャルネットワーク上の友達と共有するか、コメントセクションに返信を残してください。ありがとう。


Panels
  1. Ubuntu 14.04 VPSにHHVM、Nginx、MariaDBを使用してphpMyAdminをインストールする方法

  2. Ubuntu16.04でユーザーを作成および削除する方法

  3. Ubuntu20.04にNginxとGunicornを使用してFlaskアプリケーションをデプロイする方法

  1. MariaDB、Gunicorn、Nginxを使用してUbuntu12.04にDjangoCMSをインストールします

  2. Ubuntu12.04にRedisとNginxを使用してNodeBBをインストールしてセットアップする

  3. Ubuntu 22.04 に NVM と Nginx を使用して Node.js をインストールする方法

  1. Ubuntu20.04にNginxを使用してPHP7.4をインストールする方法

  2. ubuntuサーバーでnginxとpm2を使用して単純なnodejsアプリをセットアップする方法

  3. Ubuntu 20.04 で Nginx を使用して MERN スタックをインストールおよびセットアップする方法