Amazon Linux 2023でDjango 4.2を起動してみた

Amazon Linux 2023でDjango 4.2を起動してみた

Amazon Linux 2023でDjango 4.2を起動してみました
Clock Icon2024.09.24

はじめに

こんにちは、アノテーションのなかたです。
今回は、Amazon Linux 2023でDjango 4.2を起動してみました。
バージョン4.2は、Djangoにおける長期リリースバージョンであり、2026年の4月までサポートされる予定です。
https://www.djangoproject.com/download/#supported-versions

今回、Pythonのバージョンは3.11を使用しました。
構成図は以下になります。
スクリーンショット 2024-09-06 0.30.28

やってみる

1. EC2の起動

パブリックサブネットにて、パブリックIPアドレスの割り当てを有効化して起動します。
セキュリティグループでは、TCPの8000番を解放します。

2. Python3.11のインストール

EC2インスタンスへSSH接続し、以下のコマンドを叩きます。
yumコマンドの後継であるdnfコマンドで、Python3.11のインストールを行います。

bash
sudo dnf install -y python3.11

3. 仮想環境の構築

Pythonの仮想環境を構築し、起動します。

bash
python3.11 -m venv .venv
source .venv/bin/activate

pipの更新とDjangoのインストールを行います。

bash
pip install --upgrade pip
pip install "django==4.2"
python3.11 -m django --version

4. Djangoプロジェクトの生成

公式のチュートリアルに沿って、プロジェクトを作成していきます。
https://docs.djangoproject.com/ja/4.2/intro/tutorial01/

bash
django-admin startproject mysite
cd mysite

5. Djangoアプリの生成

以下のコマンドにより、pollsという名前のアプリを作成します。

bash
python3.11 manage.py startapp polls
Djangoにおけるアプリという単位

Djangoにおいては、プロジェクト内に複数のアプリが含まれることがあります。
アプリの単位については、以下の記事がわかりやすかったです。
https://tell-k.github.io/djangocongressjp2022/#29

ビューに単純なHTTPレスポンスを返す関数を作成します。

polls/views.py
from django.shortcuts import render
+ from django.http import HttpResponse

+ def index(request):
+     return HttpResponse("Hello, world. You're at the polls index.")

ルーティングを設定します。

polls/urls.py
+ from django.urls import path

+ from . import views

+ urlpatterns = [
+     path("", views.index, name="index"),
+ ]

プロジェクトルートから、pollsアプリにルーティングが流れるよう設定します。

mysite/urls.py
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アドレスを挿入してください。

mysite/settings.py
# SECURITY WARNING: don't run with debug turned on in production!
- DEBUG = True
+ DEBUG = False

- ALLOWED_HOSTS = []
+ ALLOWED_HOSTS = ['EC2のパブリックIpアドレス']

6. サーバーの起動

ポート番号を指定して、Djangoサーバーを起動します。

bash
$ 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

正常にサーバーが起動できました!
スクリーンショット 2024-09-24 14.02.38

ディレクトリ構造

最終的に、プロジェクトのディレクトリ構造は以下のようになりました。

bash
$ 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

参考にしたブログ

https://dev.classmethod.jp/articles/run-django-on-amazon-linux-2/

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.