【CentOS8】Djangoインストールと起動確認(ConoHaVPS)


CentOS8でDjangoのインストールと起動を実施したのでまとめておきます。
また、このインストールと起動は「ConoHaVPS」で実施しているので実際にグローバルアドレスでアクセスして確認するところまで実施しています。

CentOS8のバージョンは以下となります。

CentOS Linux release 8.1.1911 (Core)

また、Djangoのインストールはルート「/」直下で作成しています。


Djangoインストールと起動確認(CentOS8)

Djangoですが、CentOS8で事前にPython3をインストールすることが前提となります。
Python3のインストールは以下のページを参考にしてください。

【CentOS8】Python3インストールと実行

2020年3月10日

CentOS環境下で、以下Djangoをインストールします。

$ pip install django
Collecting django
  Downloading Django-3.0.4-py3-none-any.whl (7.5 MB)
     |????????????????????????????????| 7.5 MB 24.3 MB/s
Collecting sqlparse>=0.2.2
  Downloading sqlparse-0.3.1-py2.py3-none-any.whl (40 kB)
     |????????????????????????????????| 40 kB 12.2 MB/s
Requirement already satisfied: pytz in /usr/lib/python3.6/site-packages (from django) (2017.2)
Collecting asgiref~=3.2
  Downloading asgiref-3.2.4-py2.py3-none-any.whl (19 kB)
Installing collected packages: sqlparse, asgiref, django
Successfully installed asgiref-3.2.4 django-3.0.4 sqlparse-0.3.1
$

正常に「Django」がインストールされたことを確認し、以下でバージョンを確認します。

$ python3 -m django --version
3.0.4
$

Djangoプロジェクト作成

次に指定のフォルダでDjangoプロジェクトを作成します。
今回は、ルート直下に「myapp」というプロジェクトを作成します。

$ django-admin.py startproject myapp

プロジェクトが正常に作成をされたか以下「tree」コマンドで確認します。

$ tree myapp/
myapp/
|--tqq manage.py
|--mqq myapp
   |-- tqq asgi.py
   |-- tqq __init__.py
   |-- tqq settings.py
   |-- tqq urls.py
   |-- mqq wsgi.py
 
1 directory, 6 files
$

次に以下で「settings.py」の編集を実施します。

$ vi ~/myapp/myapp/settings.py

アクセスするホストをすべて許可するために以下で”*”を追記します。

ALLOWED_HOSTS = []
↓
ALLOWED_HOSTS = ["*"]

Djangoの事前設定は以下となります。


Django起動確認

上記設定後、Djangoを起動します。
コマンドは以下となります。

python3 myapp/manage.py runserver 0.0.0.0:8000

Django起動確認

Django起動後は「curl」コマンドでアクセスできたことを確認します。
うまくいっていると以下の用にhtmlの出力結果が表示されます。

$ curl <IPアドレス>:8000

<!doctype html>

<html>
    <head>
        <meta charset="utf-8">
        <title>Django: the Web framework for perfectionists with deadlines.</title>
......
......
......

Djangoへ外部からのアクセス許可

上記動作確認ができれば、次は外部からのアクセスも許可します。

今回許可するのはhttpサービスと該当ポートとします。

http許可

httpサービスの外部アクセスの許可を以下コマンドで実施します。

$ firewall-cmd --add-service=http --permanent
success

該当ポート許可

今回は、http(80)とDjangoへのアクセス(8000)を許可します。

firewall-cmd --add-port=80/tcp --zone=public --permanent
firewall-cmd --add-port=8000/tcp --zone=public --permanent

再起動

上記のファイアウォールを許可した後はいったんサービスの再起動をかけます。

$ firewall-cmd --reload
success
$

再起動後httpサービスと該当ポートが許可されていることを確認します。

$ firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: cockpit dhcpv6-client http ssh
  ports: 8000/tcp 80/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

※とりあえず、サクッと確認したい方は、以下でファイアウォールを止めるのもありです。

$ systemctl stop firewalld

Djangoへの外部アクセス

上記で設定した後は、ブラウザなどで実際にVPSで用意されているアドレスへhttpアクセスをします。

http://<ipアドレス>:8000

うまくいくと上記のようにDjangoのページへアクセスできます。

Djangoを起動した際の注意コメントが発生した場合

Djangoを起動した際以下のようなコメントが発生します。

$ python3 myapp/manage.py runserver 0.0.0.0:8000
You have 17 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.

簡単に説明すると、未適用の移行があるため、コマンドを実行してください。プロジェクトがうまく動作しない可能性があります。ということですので、指定のコマンドをたたきます。

python3 myapp/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 sessions.0001_initial... OK

Djangoをバックグラウンドで起動する方法

Djangoをバックグラウンドで起動・停止をするには以下の方法で実施します。

バックグラウンドで起動

$ python3 django_app/manage.py runserver 0.0.0.0:8000 > /dev/null 2>&1 < /dev/null &
[1] 4020
$

ジョブ確認

$ jobs
[1]+  Running                 python3 django_app/manage.py runserver 0.0.0.0:8000 > /dev/null 2>&1 < /dev/null &
$
$ ps aux | grep runserver
root      4020  0.1  7.7 139016 37996 pts/0    S    18:41   0:00 python3 django_app/manage.py runserver 0.0.0.0:8000
root      4022  4.8  8.9 459200 43608 pts/0    Sl   18:41   0:10 /usr/bin/python3 django_app/manage.py runserver 0.0.0.0:8000
root      4064  0.0  0.2  12108  1108 pts/0    R+   18:44   0:00 grep --color=auto runserver
$

バックグラウンド停止

$ %1
python3 django_app/manage.py runserver 0.0.0.0:8000 > /dev/null 2>&1 < /dev/null

ctrl+c

もしくは

$ kill %1
$
[1]+  Done                    python3 django_app/manage.py runserver 0.0.0.0:8000 > /dev/null 2>&1 < /dev/null
$

プロセスIDを確認し停止

$ ps aux | grep python
root      4150  4.7  9.4 665540 46412 ?        Sl   18:49   0:38 /usr/bin/python3 django_app/manage.py runserver 0.0.0.0:8000
root      4374  0.0  0.2  12108  1056 pts/0    S+   19:03   0:00 grep --color=auto python
$
$ kill -9 4150

以上がDjango構築と起動までの手順となります。


関連記事


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

blank

インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!