Djangoインストール · 3 min read · Dec 22, 2025

Debian 11にDjangoフレームワークをインストールする方法

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

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

前提条件

  • Debian 11を実行しているサーバー。
  • サーバー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仮想環境の作成

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

まず、次のコマンドを使用して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

サンプル出力:

  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ログイン

管理者のユーザー名とパスワードを入力し、ログインをクリックします。次のページに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サービスファイルを作成する

次に、Djangoアプリケーションサーバーを開始および停止するためのGunicornの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の構成エラーを確認します:

ginx -t
出力:
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アプリケーションにアクセスすることもできます。

Djangoアプリ

結論

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

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。