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構築と起動までの手順となります。
サーバーを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す