Python+Djangoをインストールしてアプリを作成する手順【現行版】

現在のPython/Djangoでプロジェクトを作成する

Python 3.6は2021年12月、Django 2.2 LTSは2022年4月にサポート終了しています。この後の手順は旧プロジェクトの保守用として残しています。

python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip Django
django-admin startproject config .
python manage.py startapp app
python manage.py migrate
python manage.py runserver

Windows PowerShellでは有効化コマンドを.venv\Scripts\Activate.ps1へ読み替えます。本番環境では開発サーバーを公開せず、サポート中のPythonとDjangoの組み合わせをDjango公式サポート表で確認し、依存バージョンを固定してください。

今更ですが、最近Pythonのフレームワーク Django でアプリケーション開発をしてみました。CentOS7+Apache2.4の環境で、Djangoのアプリを生成したので備忘録的に基本構成を記しておこうと思います。 今回は、Python3, Djangoのインストールから表示までです。

Python ・ Djangoのインストール

自前の環境ではpython2.7がシステムでインストールされており、利用中で削除できなかったのでpython3系を追加でインストールしました。

Python3インストール

まず、インストール前のバージョン確認
[root@hoge test]# python --version
Python 2.7.5
追加でpython3をインストールします。Python3系は、yumのデフォルトのリポジトリに入っておらず、IUS Community Projectのリポジトリを追加する必要があります。 (IUSとは、Python等の最新バージョンの RPM packages を配布しているコミュニティです)
[root@hoge test]# yum install -y https://centos7.iuscommunity.org/ius-release.rpm
[root@hoge test]# yum install -y python36u python36u-pip python36u-devel
インストール後のバージョン確認
[root@hoge test]# python3.6 --version
Python 3.6.8
[root@hoge test]# pip3.6 --version
pip 9.0.1 from /usr/lib/python3.6/site-packages (python 3.6)

Djangoのインストール

新しく入れた3系のpythonでdjangoをインストールします。
[root@hoge test]# pip3.6 install django
これで、Python3, Djangoのインストールはとりあえず完了です。

WSGIインストール

ApacheでPythonを動かすために、mod_wsgiをインストールします。
[root@hoge test]# pip3.6 install mod_wsgi
cd  /usr/local/lib64/python3.6/site-packages
mv mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so /usr/local/apache2/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
デフォルトのディレクトリでも良いのですが、一応任意の場所に移動しておきます。 Apacheのhttpd.confなどで
LoadModule wsgi_module modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
WSGIPythonHome /usr/
WSGIPythonPath [任意ディレクトリ]/app_name:[任意ディレクトリ]/app_name/app_name
WSGIPythonPathは、インクルードパスなのでコロン繋ぎで複数指定できる。 ただし、上記の設定はvhost内には書けない模様。

Djangoでのプロジェクト生成

Django はまず、「プロジェクト」という器を用意し、その中に「アプリケーション」を複数作れるような仕組みになっています。 Djangoには django-admin と manage.py の2種類の管理コマンドユーティリティがあります。これらを使ってプロジェクト・アプリケーションを生成します。

Djangoでのプロジェクト生成(通常)

django-admin startproject [project_name]
上記のコマンドだけでプロジェクトが生成されますので非常に簡単にプロジェクトが生成できますが、このまま生成してしまうと、プロジェクト内にプロジェクト名のファイルが新たに作られてしまいます。 それでもよいのですが、その中にプロジェクト固有の設定ファイル類が作成されてしまい、名称の重なりによる若干の分かりづらさがあります。 そこで、プロジェクト用のディレクトリを生成してから、第一パラメータに内部のディレクトリ名を指定して、第二パラメータでプロジェクトの作成済みディレクトリを指定し、プロジェクトを生成することが出来ます。

Djangoでのプロジェクト生成(内部ディレクトリ名指定)

django-admin startproject [dir_name] [project_dir]
生成されたプロジェクト内のファイル構成は以下のようになりました。
.
├── config      (ここがdir_nameで指定された)
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py
プロジェクト内に移動して、アプリケーションを生成する。
cd [project_name]
python3 manage.py startapp [app_name]
.
├── app_name          (アプリケーション固有のファイル)
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── config            (プロジェクト固有のファイル)
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-36.pyc
│   │   └── settings.cpython-36.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

Djangoプロジェクト生成時に出来るファイル

manage.pyコマンドラインからさまざまな操作を行うためのファイル
settings.pyプロジェクト固有の設定用ファイル
urls.pyURLパターンとビューのマッチング情報を記載するファイル
wsgi.pyWSGIインターフェースに対応したアプリケーションサーバからDjangoプロジェクトを起動する為のファイル

Djangoアプリケーション生成時に出来るファイル

admin.py管理サイトに関する記述をする
apps.pyアプリケーションを識別するための設定ファイル
models.pyモデルの定義やビジネスロジックを記載するファイル
tests.pyテストを記述するファイル
views.pyビューを記述するファイル
インストール直後のdjangoは、デフォルトでDBはsqlite3を選択中となっています。 sqlite3の指定バージョン(今回は3.8.0以上)が入っていないとエラーとなります。 とりあえずdjangoの表示確認までしたい場合は、setting.pyの75行目付近の以下設定を一時的にコメントアウトすると表示までは確認出来るようになります。

setting.py

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }
ALLOWED_HOSTS = ['*']
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'

ブラウザからの表示

ちょっと細かな設定で記載が漏れているかもしれませんが、おおよそ上記の流れで設定してApacheを再起動させたらブラウザから表示確認ができました。 次回からはもう少し細かな設定などを記載しようと思います。
タイトルとURLをコピーしました