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

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

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

CentOS Linux release 8.1.1911 (Core)

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

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

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

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構築と起動までの手順となります。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

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

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

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