GNU/Linux >> Linux の 問題 >  >> Debian

Debian11にDjangoFrameworkをインストールする方法

Djangoは、Pythonで記述された無料のオープンソースWeb開発フレームワークです。複雑でデータベース駆動型のPythonアプリケーションの開発に使用されます。 Pythonプロジェクトを作成するためのPythonスクリプトのセットが付属しています。これは、Windows、macOS、Linux / Unix、Solarisなど、Pythonを実行できるすべてのオペレーティングシステムで実行できます。開発者がより少ないコードを記述し、短時間で新しいWebサイトを作成するのに役立ちます。

このチュートリアルでは、Debian 11のPostgreSQLデータベースを使用してPython仮想環境でDjangoをセットアップする方法を説明します。次に、NginxをDjangoのリバースプロキシとしてインストールして構成します。

前提条件
  • Debian11を実行しているサーバー。
  • サーバーIPで指定された有効なドメイン名。
  • ルートパスワードはサーバーで構成されています。
はじめに

開始する前に、システムパッケージを最新バージョンに更新することをお勧めします。次のコマンドを使用して実行できます:

apt-get update -y

すべてのパッケージが更新されたら、次のコマンドを使用して他のPythonツールとNginxパッケージをインストールします。

apt-get install python3-pip python3-dev libpq-dev curl nginx -y

必要なパッケージがすべてインストールされたら、次のステップに進むことができます。

PostgreSQLデータベースサーバーをインストールする

ここでは、PostgreSQLをデータベースバックエンドとして使用します。それでは、次のコマンドを使用してインストールしましょう:

apt-get install postgresql postgresql-contrib -y

PostgreSQLがインストールされたら、次のコマンドを使用してPostgreSQLシェルに接続します。

su - postgres
psql

次に、次のコマンドを使用してDjangoのデータベースとユーザーを作成します。

CREATE DATABASE django;
CREATE USER django WITH PASSWORD 'password';

次に、次のコマンドを使用して、いくつかの必要な役割を付与します。

ALTER ROLE django SET client_encoding TO 'utf8';
ALTER ROLE django SET default_transaction_isolation TO 'read committed';
ALTER ROLE django SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE django TO django;

次に、次のコマンドを使用してPostgreSQLシェルを終了します。

\q
exit

この時点で、PostgreSQLデータベースはDjangoの準備ができています。これで、次のステップに進むことができます。

Python仮想環境を作成する

次に、Python仮想環境を作成してDjangoプロジェクトを作成する必要があります。

まず、次のコマンドを使用して、PIPパッケージを最新バージョンにアップグレードします。

pip3 install --upgrade pip

次に、次のコマンドを使用してPIPのバージョンを確認します。

pip --version

サンプル出力:

pip 21.2.4 from /usr/local/lib/python3.9/dist-packages/pip (python 3.9)

次に、次のコマンドを使用して仮想環境パッケージをインストールします。

pip3 install virtualenv

次に、Djangoプロジェクトのディレクトリを作成し、Django仮想環境を作成します。

mkdir ~/djangoapp
cd ~/djangoapp
virtualenv djangoenv

次に、以下のコマンドを使用してDjango仮想環境をアクティブ化します。

source djangoenv/bin/activate

次に、次のコマンドを使用して、Django、Gunicorn、およびその他のパッケージをインストールします。

pip install django gunicorn psycopg2-binary

この時点で、DjangoはPython仮想環境にインストールされています。これで、次のステップに進むことができます。

Djangoのインストールと構成

Djangoはdjango-admin.pyを提供します プロジェクトを作成するためのスクリプト。次のコマンドを実行して、Djangoプロジェクトを作成できます。

django-admin.py startproject djangoapp ~/djangoapp

次に、settings.pyを編集し、データベース設定を定義する必要があります。

nano ~/djangoapp/djangoapp/settings.py

次の行をドメイン名に変更します:

ALLOWED_HOSTS = ['django.example.com', 'localhost']

デフォルトのデータベースバックエンドのコメントを解除し、PostgreSQLデータベース設定を追加します。

#DATABASES = {
#    'default': {
#        'ENGINE': 'django.db.backends.sqlite3',
#        'NAME': BASE_DIR / 'db.sqlite3',
#    }
#}

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'django',
        'USER': 'django',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '',

    }
}

ファイルの最後に次の行を追加します。

STATIC_URL = '/static/'
import os
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

ファイルを保存して閉じてから、初期データベーススキーマをPostgreSQLデータベースに移行します。

./manage.py makemigrations
./manage.py migrate

サンプル出力L:

  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying sessions.0001_initial... OK

次に、次のコマンドを使用してDjangoのスーパーユーザーアカウントを作成します。

./manage.py createsuperuser

以下に示すように、管理者のユーザー名とパスワードを設定します。

Username (leave blank to use 'root'): dadmin
Email address: [email protected]
Password: 
Password (again): 
Superuser created successfully.

次に、すべての静的コンテンツをディレクトリに収集します。

./manage.py collectstatic

Django開発サーバーを実行する

この時点で、Djangoがインストールおよび構成されています。これで、次のコマンドを使用してDjango開発サーバーを起動できます。

./manage.py runserver 0.0.0.0:8000

すべてが正常であれば、次の出力が得られるはずです:

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
August 27, 2021 - 10:02:05
Django version 3.2.6, using settings 'djangoapp.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

次に、Webブラウザーを開き、URL http://django.example.com:8000/admin/を使用してDjangoプロジェクトにアクセスします。 。 Djangoログインページにリダイレクトされます:

管理者のユーザー名とパスワードを入力し、ログインをクリックします 。次のページにDjangoダッシュボードが表示されます:

次に、ターミナルに戻り、 CTRL + Cを押します。 Django開発サーバーを停止します。

GunicornでDjangoを確認する

次に、GunicornがDjangoにサービスを提供できるかどうかもテストする必要があります。次のコマンドでGunicornサーバーを使用してDjangoを起動できます:

gunicorn --bind 0.0.0.0:8000 djangoapp.wsgi

すべてが正常であれば、次の出力が得られるはずです:

[2021-08-27 10:04:22 +0000] [47383] [INFO] Starting gunicorn 20.1.0
[2021-08-27 10:04:22 +0000] [47383] [INFO] Listening at: http://0.0.0.0:8000 (47383)
[2021-08-27 10:04:22 +0000] [47383] [INFO] Using worker: sync
[2021-08-27 10:04:22 +0000] [47384] [INFO] Booting worker with pid: 47384

CTRL+Cを押してGunicornサーバーを停止します。

次に、次のコマンドを使用してPython仮想環境から非アクティブ化します。

deactivate

GunicornのSystemdサービスファイルを作成する

次に、GunicornがDjangoアプリケーションサーバーを起動および停止するためのsystemdサービスファイルを作成する必要があります。

次のコマンドでGunicornを作成できます:

nano /etc/systemd/system/gunicorn.socket

次の行を追加します:

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

ファイルを保存して閉じてから、Gunicornのサービスファイルを作成します。

nano /etc/systemd/system/gunicorn.service

Djangoプロジェクトパスに一致する次の行を追加します:

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/root/djangoapp
ExecStart=/root/djangoapp/djangoenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock          djangoapp.wsgi:application

[Install]
WantedBy=multi-user.target

ファイルを保存して閉じてから、Djangoプロジェクトディレクトリに適切な権限を設定します:

chown -R www-data:root ~/djangoapp

次に、次のコマンドを使用してsystemdデーモンをリロードします。

systemctl daemon-reload

次に、Gunicornサービスを開始し、システムの再起動時に開始できるようにします。

systemctl start gunicorn.socket
systemctl enable gunicorn.socket

次に、以下のコマンドを使用してGunicornのステータスを確認します。

systemctl status gunicorn.socket

次の出力が得られるはずです:

? gunicorn.socket - gunicorn socket
     Loaded: loaded (/etc/systemd/system/gunicorn.socket; disabled; vendor preset: enabled)
     Active: active (listening) since Fri 2021-08-27 10:05:46 UTC; 6s ago
   Triggers: ? gunicorn.service
     Listen: /run/gunicorn.sock (Stream)
     CGroup: /system.slice/gunicorn.socket

Aug 27 10:05:46 debian11 systemd[1]: Listening on gunicorn socket.

NginxをDjangoのリバースプロキシとして構成する

次に、Djangoにサービスを提供するためにNginxをリバースプロキシとして構成する必要があります。

これを行うには、Nginx構成ファイルを作成します。

nano /etc/nginx/conf.d/django.conf

次の行を追加します:

server {
     listen 80;
     server_name django.example.com;
    location = /favicon.ico { access_log off; log_not_found off; }


    location /static/ {
         root /root/djangoapp;
     }

    location / {
         include proxy_params;
         proxy_pass http://unix:/run/gunicorn.sock;
     }
}

ファイルを保存して閉じ、Nginxに構成エラーがないか確認します:

nginx -t
Output:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

最後に、Nginxサービスを再起動して、変更を適用します。

systemctl restart nginx

Nginxのステータスを確認するには、次のコマンドを実行します:

systemctl status nginx

サンプル出力:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-08-27 10:06:59 UTC; 6s ago
       Docs: man:nginx(8)
    Process: 47494 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 47495 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 47496 (nginx)
      Tasks: 2 (limit: 2341)
     Memory: 2.5M
        CPU: 49ms
     CGroup: /system.slice/nginx.service
             ??47496 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??47497 nginx: worker process

Aug 27 10:06:59 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Aug 27 10:06:59 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Aug 27 10:06:59 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

これで、URL http://django.example.com/adminを使用してDjangoアプリケーションにアクセスできます。 。 URL http://django.example.com/を使用してDjangoアプリケーションにアクセスすることもできます 。

結論

おめでとう!リバースプロキシとしてGunicornとNginxを使用してDjangoアプリケーションを正常にインストールしました。これで、Djangoフレームワークを使用してPythonアプリケーションのデプロイを開始できます。


Debian
  1. Debian10にDjangoWebアプリケーションフレームワークをインストールする方法

  2. Debian10にosqueryをインストールする方法

  3. Debian11にWildFlyをインストールする方法

  1. Debian10にIonicFrameworkをインストールする方法

  2. PHP8をDebian11にインストールする方法

  3. Debian11にGitLabをインストールする方法

  1. Debian10にNginxを使用してSymfony5Frameworkをインストールする方法

  2. Debian11にJenkinsをインストールする方法

  3. Debian11にコックピットをインストールする方法