Nginx + uWSGI + Djangoのwebアプリケーション環境を作る (その1)

Django

第1回 Djangoプロジェクトとアプリケーションの作成

これから何回かに分けてNginx + uWSGI + Djangoのwebアプリケーション環境を構築する方法を紹介していきます。
今回は、Pythonのvenv環境を作成してその中にDjangoをインストールし、Djangoプロジェクトとアプリケーションを作成するまでの内容です。

前提条件

CentOS 8にNginxとPython 3が既にインストールされている状態から説明します。CentOS 7でも同様に動作するはずです。まだの方は、当サイトのCentOS 8に最新のNginxをインストールCentOS 8にPythonをインストールを見てください。

venvの作成とロード

適当なディレクトリを作成し、その中に入ってPythonのvenv環境を作成する。ここでは、demoディレクトリの中で.venvという名前のvenv環境を作成している。
その後、sourceコマンドでvenv環境をロードする。

$ mkdir demo
$ cd demo
$ python3 -m venv .venv
$ source .venv/bin/activate
(.venv)$

なお、venv環境から抜けたい場合はdeactivateコマンドを実行する。

pipの更新

Pythonのパッケージ管理ツールであるpipを使用してDjangoをインストールする前に、pipそのものやsetuptoolsが古いバージョンの場合があるため、併せてこれらも更新しておく。

(.venv)$ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
pip (9.0.3)
setuptools (39.2.0)
You are using pip version 9.0.3, however version 20.2.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(.venv)$ pip install -U pip
(.venv)$ pip install -U setuptools
(.venv)$ pip list
Package    Version
---------- -------
pip        20.2.1
setuptools 49.2.1

Djangoのインストール

pipでDjangoをインストールする。とても簡単。

(.venv)$ pip install django

Djangoプロジェクトを作成

Djangoをインストールするとdjango-adminコマンドが使用可能になるので、現在のディレクトリ内にプロジェクトを作成する。プロジェクトを作成すると、指定した名前のコンフィグディレクトリが作成される。ここでは、demoという名前で作成している。

(.venv)$ django-admin startproject demo
(.venv)$ ls -la
合計 4
drwxr-xr-x. 4 hiyoko www-users  48  8月  9 01:51 .
drwx------. 4 hiyoko www-users  88  8月  9 01:49 ..
drwxr-xr-x. 5 hiyoko www-users 100  8月  9 01:49 .venv
drwxr-xr-x. 2 hiyoko www-users  89  8月  9 01:51 demo
-rwxr-xr-x. 1 hiyoko www-users 660  8月  9 01:51 manage.py

Djangoアプリケーションを作成

Djangoプロジェクトを作成すると、プロジェクトディレクトリ内にmanage.pyが作成される。これを使用して、Djangoアプリケーション (プロジェクト内のパッケージに相当) を作成する。ここでは、sampleという名前のアプリケーションを作成している。

(.venv)$ ./manage.py startpapp sample
(.venv)$ ls -la
合計 4
drwxr-xr-x. 5 hiyoko www-users  62  8月  9 01:51 .
drwx------. 4 hiyoko www-users  88  8月  9 01:49 ..
drwxr-xr-x. 5 hiyoko www-users 100  8月  9 01:49 .venv
drwxr-xr-x. 3 hiyoko www-users 108  8月  9 01:51 demo
-rwxr-xr-x. 1 hiyoko www-users 660  8月  9 01:51 manage.py
drwxr-xr-x. 3 hiyoko www-users 123  8月  9 01:51 sample

Djangoアプリケーションの初期設定

ここでは今後動作確認を行うにあたって最低限の初期設定を行う。

DBテーブルの作成

DjangoアプリケーションはデフォルトでSQLiteでのDBを使用するようになっており、簡単な動作確認程度の目的であれば別途DBを構築する必要はない。また、Djangoはユーザ管理とログイン機能を提供しており、デフォルトで管理ページを持つ。このため、初期設定としてDBにユーザ管理等用のテーブルを作成する必要がある。といってもDBに対して手動でSQL文を打つわけではなく、ORM (ORマッパー) 機能によりPythonで書かれたクラス定義がDBテーブルに変換されて作成される。
Djangoの初期設定としてDBテーブルを作成するには、manage.py コマンドでクラス定義からテーブルデータへのマイグレーションを実行する。

(.venv)$ ./manage.py makemigrations
No changes detected
(.venv)$ $ ./manage.py migrate
Operations to perform:
  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の管理画面へログインするために、スーパーユーザを作成しておく。

(.venv)$ ./manage.py createsuperuser
Username (leave blank to use 'hiyoko'):
Email address:
Password:
Password (again):
Superuser created successfully.

接続元ホストの許可設定

Djangoはデフォルトでローカルホストからのアクセスのみを許容する。Djangoプロジェクトと同じローカルホスト内でブラウザを立ち上げで確認する場合は特に不要だが、他のホストからネットワーク越しにアクセスする場合はsettings.pyのALLOWED_HOSTS設定を変更して許可する。

(.venv)$ vi demo/settings.py

settings.pyの内容

ALLOWED_HOSTS = ['*']

コメント

タイトルとURLをコピーしました