投稿日: | 最終更新日:
【Vagrant】Macに用意したAmazon Linux2 環境にDjangoプロジェクトの作成【オンプレミス】
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文字以上にする必要があります)) |
次回
DRFのアプリを作成し、モデルを定義します。
- Python 114
- 制作 54
- RaspberryPi 41
- Django 40
- WordPress 40
- Linux 27
- VPS 22
- JavaScript 21
- PHP 20
- HTML・CSS 19
- AWS 16
- 仮想環境 15
- レスポンシブデザイン 13
- マイコン 11
- WEB全般 11
- 動画製作 9
- Webサービス 8
- 統合開発環境 8
- 機械学習 8
- PyCharm 7
- jQuery 7
- AfterEffects 7
- 起業・設立 7
- Django REST framework 6
- C# 6
- デザイン 6
- SEO 6
- pydata 6
- Visual Studio 5
- 数学 5
- 携帯サイト 5
- heroku 5
- Mac 5
- illustrator 5
- node.js 5
- Anaconda 5
- Nginx 4
- Jupyter Notebook 4
- インフラ 4
- Google Colaboratory 4
- symfony 4
- Webスクレイピング 3
- photoshop 3
- Go言語 3
- PC 3
- ツール 3
- Docker 3
- facebook 3
- 作業効率化 3
- データベース 3
- Cloud9 3
- コマンド 2
- micro:bit 2
- Kali Linux 2
- Webサーバー 2
- MariaDB 2
- ドローン 2
- コンテナ 2
- DaVinci Resolve 2
- ネットワーク 2
- Java 2
- movie 2
- PCDJ 2
- 音楽 2
- XSERVER 2
- Ansible 1
- Vue.js 1
- JSON 1
- Bootstrap 1
- バージョン管理システム 1
- SSL 1
- S3 1
- ムームードメイン 1
- ネットワーク 1
- アニメーション 1
- D3.js 1
- Rhino 1
- アニメ 1
- git 1
- windows 1
- アクセス解析 1
- スマートフォン 1
- アフィリエイトノウハウ 1
- 知識 1
- TypeScript 1
- 役立つ本・書籍 1
- データサイエンス 1
- ESP32 1
- AI 1
- ownCloud 1
- API 1