LinuxにDjango(ジャンゴ)をインストールする手順を紹介します。
Djangoとは、Pythonで作られているのWEBフレームワークです。
Djangoには、画面生成・DB処理・アプリケーション処理など多くの機能が標準で使用できます。
またDjangoは多く導入実績やナレッジもあるため、学習にもおススメです。
インストールにはPythonが必要なので、まだ導入していない人は↓を参考に導入してみてください。
本手順のインストールが終わりましたら、ぜひDjangoの入門者向きのまとめ記事も確認してみてください。サンプルを作りながら一つ一つ学んでいけます。
Djangoの超初心者向け入門書
Djangoの最強入門書!手を動かしながらブログアプリ(CMS)を作成して脱初心者しよう!
インストール環境
今回のインストール環境は以下になります。
uWSGIは後ほどWebサーバとの連携で必要となるため導入しておきます。
- CentOS:CentOS Linux release 8.3.2011
- Python:Python 3.9.6
- Django:Django 4.0
- uWSGI:uWSGI 2.0.20
インストール手順
手順の流れは以下になります。
- 事前準備
- 仮想実行環境の作成
- Djangoのインストール
- uWSGIのインストール
事前準備
まずはプロジェクトを作成するディレクトリを作成しましょう。
↓が実施コマンドとログです。
[libproc@centos8 ~]$ mkdir django
[libproc@centos8 ~]$ cd django
[libproc@centos8 django]$ pwd
/home/libproc/django
※ユーザーのホームディレクトリを、/home/libproc としています。
Pythonの仮想環境の作成
Pythonの仮想環境を作成します。
仮想環境とは、仮想的なPythonの開発環境を構築する機能で、Python3.3以降では標準機能として提供されています。仮想環境は1つのマシン上に複数構築することができますので、仮想環境ごとにpipでインストールするパッケージの状態を変えるといったことが可能となります。
↓が仮想環境が作成コマンドです。
python -m venv <仮想実行環境名>
※上記のコマンド python は、python3 のシンポリックリンクですので、シンボリックリンク未設定の場合は、python3 コマンドにて実施してください。
↓が実施ログです。仮想環境名に”venv”を指定(pythonコマンドの最後の引数)して仮想環境を作成し、アクティベートしています。
[libproc@centos8 django]$ python -m venv venv
[libproc@centos8 django]$ ls -l
total 4
drwxrwxr-x 5 libproc libproc 4096 Dec 18 15:43 venv
[libproc@centos8 django]$ source ./venv/bin/activate
(venv) [libproc@centos8 django]$
↑のようにコマンドプロンプトの前に指定した仮想環境名(venv)が表示されれば、仮想環境の作成とアクティベートは成功です。
Djangoをインストール
Djangoをインストールしていきます。
↓がDjangoインストールコマンドです。
pip install django
※仮想環境をアクティベートした状態での python 、pip コマンドは、仮想環境内のシンボリックリンクが使われます。
↓が実施ログです。仮想環境をアクティベートした状態で実施してください。
(venv) [libproc@centos8 django]$ pip install django
Collecting django
Downloading Django-4.0-py3-none-any.whl (8.0 MB)
|████████████████████████████████| 8.0 MB 3.4 MB/s
Collecting sqlparse>=0.2.2
Downloading sqlparse-0.4.2-py3-none-any.whl (42 kB)
|████████████████████████████████| 42 kB 2.0 MB/s
Collecting asgiref<4,>=3.4.1
Downloading asgiref-3.4.1-py3-none-any.whl (25 kB)
Installing collected packages: sqlparse, asgiref, django
Successfully installed asgiref-3.4.1 django-4.0 sqlparse-0.4.2
(venv) [libproc@centos8 django]$python -m django --version
4.0
↑のようにDjangoのバージョンを確認(4.0)できたら仮想環境へのDjangoのインストールは成功です。
uWSGIのインストール
最後にuWSGIのインストールを行います。
uWSGIは、Webサーバ ⇔ uWSGI ⇔ Djangoのように動作しWebサーバとDjangoの橋渡しがあります。
後々必要になるため、このタイミングでインストールします。
↓がインストールコマンドになります。
pip install uwsgi
↓が実行ログになります。
(venv) [libproc@centos8 django]$ pip install uwsgi
Collecting uwsgi
Using cached uwsgi-2.0.20.tar.gz (804 kB)
Preparing metadata (setup.py) ... done
Using legacy 'setup.py install' for uwsgi, since package 'wheel' is not installed.
Installing collected packages: uwsgi
Running setup.py install for uwsgi ... done
Successfully installed uwsgi-2.0.20
これでインストールは完了です。
uwsgiのインストールに失敗する場合は、yumコマンドにて python39-devel パッケージをインストールしてください。
↓が実行ログです。
[libproc@centos8 django]$ sudo yum install python39-devel
[sudo] password for libproc:
Failed to set locale, defaulting to C.UTF-8
Last metadata expiration check: 2:22:34 ago on Sat Dec 18 13:50:29 2021.
Dependencies resolved.
=============================================================================================================================================================================================
Package Architecture Version Repository Size
=============================================================================================================================================================================================
Installing:
python39-devel x86_64 3.9.6-2.module_el8.5.0+897+68c4c210 appstream 232 k
Transaction Summary
=============================================================================================================================================================================================
Install 1 Package
Total download size: 232 k
Installed size: 830 k
Is this ok [y/N]: y
Downloading Packages:
python39-devel-3.9.6-2.module_el8.5.0+897+68c4c210.x86_64.rpm 1.0 MB/s | 232 kB 00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 304 kB/s | 232 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : python39-devel-3.9.6-2.module_el8.5.0+897+68c4c210.x86_64 1/1
Running scriptlet: python39-devel-3.9.6-2.module_el8.5.0+897+68c4c210.x86_64 1/1
Verifying : python39-devel-3.9.6-2.module_el8.5.0+897+68c4c210.x86_64 1/1
Installed:
python39-devel-3.9.6-2.module_el8.5.0+897+68c4c210.x86_64
Complete!
Djangoプロジェクトの作成
実際にDjangoプロジェクトを作成します。
↓がプロジェクト作成コマンドです。
jango-admin.py startproject <プロジェクト名>
↓が実行ログです。プロジェクト名を”project”としています。
(venv) [libproc@centos8 django]$ django-admin startproject project
(venv) [libproc@centos8 django]$ ls -l
total 8
drwxrwxr-x 3 libproc libproc 4096 Dec 19 07:09 project
drwxrwxr-x 5 libproc libproc 4096 Dec 18 15:43 venv
プロジェクトの動作確認
ここからは、作成したDjangoプロジェクトの開発用サーバーを起動して動作確認をします。
事前準備
Djangoにて開発したアプリケーションを起動する場合は、設定ファイルにサーバーの実行を許可するホスト名を指定する必要があります。
これは、セキュリティ対策(HTTPヘッダインジェクションの回避)としてDjango1.5から導入されています。
アプリケーション用のディレクトリ「/home/libproc/django/project/project」に存在する「settings.py」ファイルの「ALLOWED_HOSTS」に許可ホスト名を列挙します。
↓が実施ログです。
(venv) [libproc@centos8 django]$ cd project/
(venv) [libproc@centos8 django]$ pwd
/home/libproc/django/project
(venv) [libproc@centos8 project]$ ls
db.sqlite3 manage.py project
(venv) [libproc@centos8 project]$ ls -l project/
total 20
-rw-rw-r-- 1 libproc libproc 0 Dec 19 07:09 __init__.py
-rw-rw-r-- 1 libproc libproc 391 Dec 19 07:09 asgi.py
-rw-rw-r-- 1 libproc libproc 3225 Dec 19 07:16 settings.py
-rw-rw-r-- 1 libproc libproc 749 Dec 19 07:09 urls.py
-rw-rw-r-- 1 libproc libproc 391 Dec 19 07:09 wsgi.py
(venv) [libproc@centos8 project]$ vi project/settings.py
↓
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
#ALLOWED_HOSTS = []
ALLOWED_HOSTS = ['*']
今回は「’*'(ワイルドカード)」を指定しました。
これによりすべてのIPからのアクセスが許可されます。
開発用サーバーの起動と動作確認
作成したDjangoプロジェクトの開発用サーバーを起動して動作確認をします。
↓が開発用サーバーの起動コマンドです。
python manage.py runserver <接続許可IP>:<ポート番号>
↓が実行ログになります。「0.0.0.0」と指定するとすべてのIPからのリクエストを受け付けることができます。
(venv) [libproc@centos8 project]$ python manage.py runserver 0.0.0.0:8000
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
December 18, 2021 - 22:55:43
Django version 4.0, using settings 'project.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
実際にWebブラウザでサイトにアクセスしてみましょう。
今回使用しているサーバーのIPアドレスは「192.168.56.101」ですので、Webブラウザから「http://192.168.56.101:8000/」と入力してみましょう。
↑のインストール成功画面が表示されれば、動作確認は成功です。
本手順のインストールが終わりましたら、ぜひDjangoの入門者向きのまとめ記事も確認してみてください。サンプルを作りながら一つ一つ学んでいけます。