Amazon Linux 2023でDjango 4.2を起動してみた
はじめに
こんにちは、アノテーションのなかたです。
今回は、Amazon Linux 2023でDjango 4.2を起動してみました。
バージョン4.2は、Djangoにおける長期リリースバージョンであり、2026年の4月までサポートされる予定です。
今回、Pythonのバージョンは3.11を使用しました。
構成図は以下になります。
やってみる
1. EC2の起動
パブリックサブネットにて、パブリックIPアドレスの割り当て
を有効化して起動します。
セキュリティグループでは、TCPの8000番を解放します。
2. Python3.11のインストール
EC2インスタンスへSSH接続し、以下のコマンドを叩きます。
yumコマンドの後継であるdnfコマンドで、Python3.11のインストールを行います。
sudo dnf install -y python3.11
3. 仮想環境の構築
Pythonの仮想環境を構築し、起動します。
python3.11 -m venv .venv
source .venv/bin/activate
pipの更新とDjangoのインストールを行います。
pip install --upgrade pip
pip install "django==4.2"
python3.11 -m django --version
4. Djangoプロジェクトの生成
公式のチュートリアルに沿って、プロジェクトを作成していきます。
django-admin startproject mysite
cd mysite
5. Djangoアプリの生成
以下のコマンドにより、polls
という名前のアプリを作成します。
python3.11 manage.py startapp polls
Djangoにおけるアプリという単位
Djangoにおいては、プロジェクト内に複数のアプリが含まれることがあります。
アプリの単位については、以下の記事がわかりやすかったです。
ビューに単純なHTTPレスポンスを返す関数を作成します。
from django.shortcuts import render
+ from django.http import HttpResponse
+ def index(request):
+ return HttpResponse("Hello, world. You're at the polls index.")
ルーティングを設定します。
+ from django.urls import path
+ from . import views
+ urlpatterns = [
+ path("", views.index, name="index"),
+ ]
プロジェクトルートから、pollsアプリにルーティングが流れるよう設定します。
from django.contrib import admin
+ from django.urls import include, path
urlpatterns = [
+ path("polls/", include("polls.urls")),
path("admin/", admin.site.urls),
]
本番環境用にパラメータを設定します。
ALLOWED_HOSTS
変数には、EC2インスタンスのパブリックIPアドレスを挿入してください。
# SECURITY WARNING: don't run with debug turned on in production!
- DEBUG = True
+ DEBUG = False
- ALLOWED_HOSTS = []
+ ALLOWED_HOSTS = ['EC2のパブリックIpアドレス']
6. サーバーの起動
ポート番号を指定して、Djangoサーバーを起動します。
$ python3.11 manage.py runserver 0.0.0.0:8000
Performing system checks...
System check identified no issues (0 silenced).
September 24, 2024 - 02:54:14
Django version 4.2, using settings 'mysite.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
[24/Sep/2024 02:54:16] "GET /polls/ HTTP/1.1" 200 40
[24/Sep/2024 02:54:16] "GET /favicon.ico HTTP/1.1" 404 179
正常にサーバーが起動できました!
ディレクトリ構造
最終的に、プロジェクトのディレクトリ構造は以下のようになりました。
$ tree
.
├── db.sqlite3
├── manage.py
├── mysite
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py # 編集したファイル
│ ├── urls.py
│ └── wsgi.py
└── polls
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
├── urls.py # 編集したファイル
└── views.py # 編集したファイル
3 directories, 15 files
参考にしたブログ
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。