CentOs8 Python DjangoでWebアプリ開発環境の構築手順

CentOs8 Python DjangoでWebアプリ開発環境の構築手順

pythonのWebアプリケーションフレームワークであるDjangoでの開発環境の構築手順です。途中、ちょこちょこエラーが発生しました。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • Python 3.6.8
  • pip 9.0.3
  • django 3.0

※CentOs8にpythonのインストールはこちら

Djangoインストール

まずは開発用のディレクトリを作成します。

## ディレクトリ作成
mkdir /home/www

## 移動
cd /home/www

Djangoをインストールします

pip install django

エラーが発生しました

Exception:
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/lib/python3.6/site-packages/pip/commands/install.py", line 365, in run
    strip_file_prefix=options.strip_file_prefix,
  File "/usr/lib/python3.6/site-packages/pip/req/req_set.py", line 789, in install
    **kwargs
  File "/usr/lib/python3.6/site-packages/pip/req/req_install.py", line 854, in install
    strip_file_prefix=strip_file_prefix
  File "/usr/lib/python3.6/site-packages/pip/req/req_install.py", line 1069, in move_wheel_files
    strip_file_prefix=strip_file_prefix,
  File "/usr/lib/python3.6/site-packages/pip/wheel.py", line 345, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/usr/lib/python3.6/site-packages/pip/wheel.py", line 287, in clobber
    ensure_dir(dest)  # common for the 'include' path
  File "/usr/lib/python3.6/site-packages/pip/utils/__init__.py", line 83, in ensure_dir
    os.makedirs(path)
  File "/usr/lib64/python3.6/os.py", line 210, in makedirs
    makedirs(head, mode, exist_ok)
  File "/usr/lib64/python3.6/os.py", line 220, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] 許可がありません: '/usr/local/lib/python3.6'

ユーザーで実行しているので/usr/localにアクセスできないため発生。  –user オプションをつけて、~/.local/ にインストールします。

pip install django --user

プロジェクト作成

下記のコマンドでプロジェクトを作成します。ここではhelloという名前で作成してます。

django-admin startproject hello

WEBサーバーを起動します。

## プロジェクトに移動
cd hello

## プライベートIPを指定して起動
python manage.py runserver 192.168.xxx.xxx:8000

起動時に下記のエラーが発生。

Invalid HTTP_HOST header: '192.168.xxx.xxx:8000'. You may need to add '192.168.xxx.xxx' to ALLOWED_HOSTS

エラーメッセージ通りに、settings.pyのALLOWED_HOSTSに、プライベートIPを設定

ALLOWED_HOSTS = []

<追加>
ALLOWED_HOSTS = ['192.168.xxx.xxx']

ついでに、TIMEZONEなどの設定も変更しておきます。

LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

USE_I18N = True

USE_L10N = True

USE_TZ = True

再度起動します。

## プライベートIPを指定して起動
python manage.py runserver 192.168.xxx.xxx:8000

ブラウザから http://プライベートIP:8000 にアクセスすると下記の画面が表示されます。

Hello Worldを出力してみる

アプリケーションを作成します。

python manage.py startapp testapp

プロジェクトの構成です。

.
├── db.sqlite3
├── hello
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-36.pyc
│   │   ├── settings.cpython-36.pyc
│   │   ├── urls.cpython-36.pyc
│   │   └── wsgi.cpython-36.pyc
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
└── testapp
    ├── __init__.py
    ├── __pycache__
    │   ├── __init__.cpython-36.pyc
    │   ├── admin.cpython-36.pyc
    │   ├── models.cpython-36.pyc
    │   ├── urls.cpython-36.pyc
    │   └── views.cpython-36.pyc
    ├── admin.py
    ├── apps.py
    ├── migrations
    │   ├── __init__.py
    │   └── __pycache__
    │       └── __init__.cpython-36.pyc
    ├── models.py
    ├── tests.py

testappディレクトリ配下にviews.pyを下記のコードで作成します。

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
 
def index(request):
    return HttpResponse("<H1>Hello World</H1>")

同様にurls.pyを作成します。

from django.urls import path
from . import views
 
urlpatterns = [
    path('', views.index, name='index'),    
]

helloディレクトリ配下のurls.pyを下記のように編集します。

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('testapp.urls')),
]

ブラウザから http://プライベートIP:8000 にアクセスすると「Hello World」が表示されます。