現在の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のインストール
自前の環境では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.py | URLパターンとビューのマッチング情報を記載するファイル |
| wsgi.py | WSGIインターフェースに対応したアプリケーションサーバからDjangoプロジェクトを起動する為のファイル |
Djangoアプリケーション生成時に出来るファイル
| admin.py | 管理サイトに関する記述をする |
|---|---|
| apps.py | アプリケーションを識別するための設定ファイル |
| models.py | モデルの定義やビジネスロジックを記載するファイル |
| tests.py | テストを記述するファイル |
| views.py | ビューを記述するファイル |
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を再起動させたらブラウザから表示確認ができました。
次回からはもう少し細かな設定などを記載しようと思います。


