ホーム >  AWS >  【Vagrant】Macに用意したAmazon Linux2 環境にDjangoプロジェクトの作成【オンプレミス】

投稿日:   |  最終更新日:

【Vagrant】Macに用意したAmazon Linux2 環境にDjangoプロジェクトの作成【オンプレミス】

AWSDjangoDjango REST frameworkLinuxPython

VagrantのAmazon Linux2環境にDjangoプロジェクトを作成してテスト起動します。

Django実行環境を構築

前回、AmazonLinux2の仮想環境にnginx、sqlite3をインストールしました。今回は、Djangoプロジェクトを作成します。Djangoプロジェクトを起動させるための設定を行います。Djangoプロジェクト内の「settings.py」の変更を行います。

作業の流れ

1.vagrantを起動して、Amazon Linux2にログインします。

2.Pythonパッケージをインストールします。

前回まで

今回の作業は、以下の続きです。

【仮想環境】MacにVirtualBoxをインストール【Mac】

【Vagrant】MacにAWS公式のAmazon Linux2 Vagrant 環境を作成【オンプレミス】

【Vagrant】MacにAWS公式のAmazon Linux2 Vagrant Boxを作成、起動【オンプレミス】

Vagrant】Macに用意したVagrantのAmazon Linux2 環境にVirtualBox Guest Additionsをインストール【オンプレミス】

【Vagrant】Macに用意したAmazon Linux2 環境にPythonをインストール【オンプレミス】

【Vagrant】Macに用意したAmazon Linux2 環境にuwsgi、Django、Django Restframeworkをインストール【オンプレミス】

【Vagrant】Macに用意したAmazon Linux2 環境にsqlite3、nginxをインストール【オンプレミス】

※今回の記事は、既にAmazonLinux2のVagrant環境を作成済みであるとします。

環境

私のPC環境は以下の通りです。

PC MacBook Air (Retina, 13-inch, 2019)
CPU 1.6 GHz デュアルコアIntel Core i5
メモリ 16 GB 2133 MHz LPDDR3
OS 10.15.2
VirtualBox 6.1.12r139181
Vagrant 2.2.9

仮想環境

仮想環境は以下の通りです。

OS Amazon Linux release 2 (Karoo)
Python 3.7.9
Django 3.2
djangorestframework 3.12.4
djangorestframework-jwt 1.11.0
django-cleanup 5.2.0
uWSGI 2.0.19.1
Nginx 1.18.0

Vagrantのディレクトリ構成

  • ~/Work/
  • Vagrant/
  • AmazonLinux2/


AmazonLinux2仮想環境へログイン

①「ターミナル」を開いて下記のコマンドを入力します。

cd ~/Work/Vagrant/AmazonLinux2

②下記のコマンドを入力して仮想環境を起動します。

Vagrant up

③下記のコマンドを入力してログインします。

vagrant ssh

Djangoプロジェクト作成

【Vagrant】Macに用意したAmazon Linux2 環境にuwsgi、Django、Django Restframeworkをインストール【オンプレミス】で、djangoをインストールしました。準備ができましたので、Djangoプロジェクトを作成します。

①Djangoのバージョンを確認します。

python3 -m django --version
3.2

②ディレクトリを可視化できますので、「tree」コマンドをインストールします。

python3 -m django --version
sudo yum install tree

③プロジェクトのディレクトリを作成します。名前を「nuploader1」にします。

mkdir nuploader1
cd nuploader1/

④プロジェクトを作成します。プロジェクトディレクトリをサイトの設定ディレクトリとしますので、名前を「config」にします。

django-admin startproject config .

ここまででディレクトリを確認します。

tree
・
├── nuploader1
│   ├── config
│   │   ├── __init__.py
│   │   ├── asgi.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   └── manage.py

Djangoプロジェクト設定

①Djangoの設定を変更しますviでsettings.pyを編集します。

cd config
vi settings.py

25行目あたりの「ALLOWED_HOST」を変更します。

ALLOWED_HOSTS = []

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

・・・(省略)・・

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

変更後

ALLOWED_HOSTS = ['*']

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_cleanup.apps.CleanupConfig',  # django-cleanupを使いたいなら、これも追加
    'rest_framework',  # 追加
]

・・・(省略)・・

LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

・・・(省略)・・

②続いてsettings.pyにプロジェクト内で使用する「static」と「media」の設定を行いますが、Nginxの設定ディレクトリを使用しますので、Nginxにディレクトリを作成します。

sudo mkdir /usr/share/nginx/html/media
sudo mkdir /usr/share/nginx/html/static

③②で作成した「static」と「media」ディレクトリの設定を行います。

vi settings.py

以下のように「STATIC_URL」「STATIC_ROOT」「MEDIA_URL」「MEDIA_ROOT」を追加します。

ALLOWED_HOSTS = ['*']

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_cleanup.apps.CleanupConfig',  # django-cleanupを使いたいなら、これも追加
    'rest_framework',  # 追加
]

・・・(省略)・・

LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

・・・(省略)・・

STATIC_URL = '/static/'

STATIC_ROOT = '/usr/share/nginx/html/static'

# メディアファイルの設定
MEDIA_URL = '/media/'

MEDIA_ROOT = '/usr/share/nginx/html/media'

④プロジェクトのurls.pyの設定を行います。

vi urls.py

以下のように記述します。

from django.conf import settings
from django.contrib import admin
from django.urls import path
from django.conf.urls.static import static

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


# 開発環境でのメディアファイルの配信設定
urlpatterns += static(
    settings.MEDIA_URL,
    document_root=settings.MEDIA_ROOT
)

Django起動テスト

まだmigrateもしていませんが、ローカル環境(Mac)側のブラウザを起動してDjangoが表示できるか確認します。

①仮想環境からログオフします。

exit

②Vagrantを停止します。

vagrant halt

③Vagrantのフォルダに移動し、Vagrantfileを編集します。

cd ~/Work/Vagrant/AmazonLinux2
vi Vagrantfile

以下の行を追記します。

Vagrant.configure("2") do |config|
  config.vm.box = "amzn2-2.0.20200722.0-x86_64"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.network "forwarded_port", guest: 8000, host: 8080
end

ローカルのブラウザで「127.0.0.1:8080」と入力。→「仮想環境の8000番ポートにアクセスしますよ」という意味となります。

④Vagrantを起動して、sshログインします。

vagrant up
vagrant ssh

⑤Djnagoのプロジェクトディレクトリに移動して、Pythonサーバを起動します。

cd nuploader1/
python3 manage.py runserver 0.0.0.0:8000

⑥ローカルのブラウザを起動して、アドレスに以下のURLを入力します。

http://127.0.0.1:8080/admin/

以下のように、Djangoの管理サイトが表示されます。

Control+Cで終了します。

静的ファイル集約、データベースの登録

Djangoを本番環境にデプロイする場合は、静的ファイルの置き場所を複数ではなく、一つの場所に集める必要がります。しかし、collectstaticする前に、集める場所をsettings.pyに設定する必要があります。(プロジェクト直下、”static”というフォルダを指定。)

①アプリケーションごとの静的ファイル(”static”と”media”)のディレクトリをNginxの指定ディレクトリに集約コピーします。

sudo python3 manage.py collectstatic

②「settings.py」において使用するデータベースを変更したので、Djangoプロジェクトにその旨を通知します。マイグレーションファイルをデータベースに適用します。

python3 manage.py makemigrations

③データベースの登録を実施したので、スーパーユーザーを登録します。

python3 manage.py migrate

④スーパーユーザーを作成します。

python3 manage.py createsuperuser
ユーザー名 (任意で設定できます)
メール (任意で設定できます)
パスワード (任意で設定できます(8文字以上にする必要があります))

次回

Djangoのプロジェクトを作成し、Nginxから起動します。


トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告