CentOS OS Ubuntu アプリ

LinuxにDjangoをインストールする手順

2017年11月19日

LinuxにDjango(ジャンゴ)をインストールする手順を紹介します。

Djangoとは、Pythonで作られているのWEBフレームワークです。

Djangoには、画面生成・DB処理・アプリケーション処理など多くの機能が標準で使用できます。

またDjangoは多く導入実績やナレッジもあるため、学習にもおススメです。

インストールにはPythonが必要なので、まだ導入していない人は↓を参考に導入してみてください。

LinuxにPython3系をインストールする手順

こんにちは!シミダイ(@shimidai2100)です。 LinuxにPythonをインストールする手順を紹介します。 ...


インストール環境

今回のインストール環境は以下になります。

uWSGIは後ほどWebサーバとの連携で必要となるため導入しておきます。

  • CentOS:CentOS Linux release 7.4.1708 (Core)
  • Python:Python 3.6.3
  • Django:Django 1.11.7
  • uWSGI:uWSGI 2.0.15

※これらの環境は仮想マシン上CentOSに構築しております。

インストール手順

手順の流れは以下になります。

  1. 仮想実行環境の作成
  2. Djangoのインストール
  3. uWSGIのインストール

仮想実行環境の作成

まずは仮想実行環境を作成します。一番初めにディレクトを作成します。

mkdir -p /django/apps/myproject
chmod -R 755 /django/apps/
cd /django/apps/myproject

次に仮想実行環境を構築します。

python -m venv <仮想実行環境名>
ls -lt

↓が実行ログです。

[root@centos7-local myproject]# python -m venv venv
[root@centos7-local myproject]# ls -lt
合計 0
drwxr-xr-x 5 root root 74 11月 19 12:37 venv

これで仮想実行環境の作成は完了です。アクティベートしておきましょう。

アクティベートのコマンドは↓になります。

source <インストールディレクトリ>/venv/bin/activate

↓が実行ログです。(仮想実行環境) # となれば成功です。

[root@centos7-local myproject]# source venv/bin/activate
(venv) [root@centos7-local myproject]#

Djangoのインストール

Djangoをインストールしていきます。

仮想実行マシンがあるディレクトリに移動し、アクティベートを必ず行ってください。

pip install django

↓が実行ログです。

[root@centos7-local ~]# cd /django/apps/myproject/
[root@centos7-local myproject]# source venv/bin/activate
(venv) [root@centos7-local myproject]#
(venv) [root@centos7-local myproject]# pip install django
Collecting django
  Using cached Django-1.11.7-py2.py3-none-any.whl
Collecting pytz (from django)
  Using cached pytz-2017.3-py2.py3-none-any.whl
Installing collected packages: pytz, django
Successfully installed django-1.11.7 pytz-2017.3
(venv) [root@centos7-local myproject]#

これでDjangoのインストールは完了です。簡単でしょ?

uWSGIのインストール

最後にuWSGIのインストールを行います。

uWSGIは、Webサーバ ⇔ uWSGI ⇔ Djangoのように動作しWebサーバとDjangoの橋渡しがあります。

後々必要になるため、このタイミングでインストールします。

↓がインストールコマンドになります。

pip install uwsgi

↓が実行ログになります。

(venv) [root@centos7-local myproject]# pip install uwsgi
Collecting uwsgi
  Using cached uwsgi-2.0.15.tar.gz
Installing collected packages: uwsgi
  Running setup.py install for uwsgi ... -     done
Successfully installed uwsgi-2.0.15

これでインストールは完了です。

プロジェクトの作成

この章では実際にプロジェクトを作って正常にインストール出来ているか確認します。

始めにプロジェクトを作成します。

作成時には仮想実行マシンがあるディレクトリに移動し、アクティベートを必ず行ってください。

django-admin.py startproject <プロジェクト名(プロジェクトインストールディレクトリ)>

↓が実行ログになります。

(venv) [root@centos7-local myproject]# django-admin.py startproject mysite
(venv) [root@centos7-local myproject]# ls -lt
合計 0
drwxr-xr-x 3 root root  37 11月 19 15:01 mysite
drwxr-xr-x 5 root root 100 11月 19 12:58 venv

プロジェクトの起動

ここは結構ハマるポイントなので要注意です。

まず作成したプロジェクトを起動してみましょう。

python <プロジェクトインストールディレクトリ>/manage.py runserver

実際に作成したプロジェクトを起動してみます。これでDjangoは起動しています。

(venv) [root@centos7-local myproject]# python mysite/manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

November 19, 2017 - 06:08:20
Django version 1.11.7, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

仮想マシンのIP「192.168.56.101」です。

「http://192.168.56.101:8000」にアクセスしてみます。

↑のようにアクセスできません。Django側で接続元IPを許可する必要があります。

接続元を許可するコマンドは以下になります。

python mysite/manage.py runserver <接続許可IP>:<ポート番号>

↓が実行ログになります。「0.0.0.0」と指定するとすべてのIPからのリクエストを受け付けることができます。

(venv) [root@centos7-local myproject]# python mysite/manage.py runserver 0.0.0.0:8000
Performing system checks...

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

November 19, 2017 - 06:14:59
Django version 1.11.7, using settings 'mysite.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

もう一度「http://192.168.56.101:8000」にアクセスしてみます。

まだ微妙に怒られています。。。

「DisallowedHost」と許可されていないホストから勝手にアクセスしているよ。

と怒られています。Djangoの設定ファイルを修正しましょう。

settings.py」ファイルの「ALLOWED_HOSTS」に許可ホスト名をシングルクォーテーションで記載します。

vi <プロジェクト名>/mysite/settings.py

↓
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

#ALLOWED_HOSTS = []
ALLOWED_HOSTS = ['IPアドレス']

今回は上のように「*(ワイルドカード)」で記載しました。IPを直接指定してカンマ区切りで指定することもできます。

これにより全てのIPからのアクセスを許可されます。

(venv) [root@centos7-local myproject]# cp -p mysite/mysite/settings.py mysite/mysite/settings.py.20171119
(venv) [root@centos7-local myproject]# vi mysite/mysite/settings.py

↓のようにALLOWED_HOSTSを変更

ALLOWED_HOSTS = ['*']

最後に設定を適用させましょう。コマンドは↓になります。

python <プロジェクトインストールディレクトリ>/manage.py migrate

↓が実行ログになります。

(venv) [root@centos7-local myproject]# python mysite/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 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 sessions.0001_initial... OK

では、プロジェクトを起動してブラウザアクセスしてみましょう。

↓が実行ログです。

(venv) [root@centos7-local myproject]# python mysite/manage.py runserver 0.0.0.0:8000
Performing system checks...

System check identified no issues (0 silenced).
November 19, 2017 - 06:29:55
Django version 1.11.7, using settings 'mysite.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

「http://192.168.56.101:8000」にアクセスしてみます。

↑のように「It worked!」が出力されれば正常にプロジェクトが動いています。

これでDjangoライフを送れます。お疲れ様でした!

 

関連記事

-CentOS, OS, Ubuntu, アプリ

Copyright© shimidai2100 , 2020 All Rights Reserved.