2021/05/26

AWSでDjangoを構築する方法とは?

 
  

Djangoとは?


DjangoとはPythonのフレームワークの1つであり、InstagramやPinterestでも使用されています。メリットとしては、学習コストが低い、動作が速い、Webシステムでよく使う機能が揃っている等があげられます。

学習コストについて、 Djangoの書籍やウェブサイトが多く参考にできる情報が多くあります。また、素直なコードを書くことから、他の言語を学んだ人でも簡単に手がつけられます。

動作について、Djangoでは標準でmemcachedというキャッシュサービスがあるため、キャッシュ機能が高く、処理速度が高速です。また、Webシステムでよく利用するユーザー認証や管理画面も標準で備わっています。

DjangoをAWSで構築する方法は?


DjangoをAWSで構築する方法は、3つあります。1つ目はAWS EC2を、2つ目はAmazon Lightsailを、3つ目はElastic Beanstalkを利用する方法です。

AWS EC2とは、Amazon Elastic Compute Cloudの略で、AWSの仮想サーバーです。こちらを利用する場合は、1からDjangoを構築する必要があります。

Amazon Lightsailとは、ストレージやスナップショットといったAWSの必要な機能がパッケージとして利用できるサービスです。Elastic Beanstalkはアプリのデプロイを簡単にしてくれるサービスです。

環境を構築する時間がないや、柔軟性がなくてもよくて、とりあえず動くものを作りたいといった場合は、Amazon LightsailやElastic Beanstalkを利用すれば、ほとんど時間をかけることなくDjangoのシステムを構築することができるでしょう。

AWS EC2でDjangoを構築する方法


AWSでDjangoを構築するために、AWS EC2を利用した構築方法について紹介します。事前にAWSアカウントを登録しておいてください。

AWS EC2を作成し、初期設定を実施

AWSにログインし、AWS EC2インスタンスを作成します。作成が完了したら、インスタンスのIPv4 パブリック IPに作成時に設定した.pemファイルで以下のようにSSH接続を実施します。

ssh -i ~/test/hogehoge/key.pem ec2-user@xx.xxx.xx.xxx


AWS EC2に接続できると以下のように表示されるはずです。

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
8 package(s) needed for security, out of 17 available
Run "sudo yum update" to apply all updates.


最後にパッケージの統合管理システムのyumをアップデートすれば、AWS EC2作成と初期設定が完了します。

sudo yum update -y


Pythonをインストール

次はPythonをインストールします。SSHでAWS EC2に接続して以下の手順でコマンドを入力します。

Python3で利用するモジュールをインストールします。

sudo yum install -y httpd-devel python3-devel gcc gcc-c++



Python3をインストールします。

sudo yum install -y python3



無事にインストールできたかを確認します。

python3 --version


以上でPythonのインストールは完了です。

Apacheをインストール

Djangoを動かすためにApacheをインストールします。本番サーバーの場合は、WebサーバーとAPサーバーは分けておくと良いです。nginxなど、他のサーバーでもDjangoは動きますが、今回はApacheをインストールしておきます。

Apacheをインストールします。

sudo yum install -y httpd httpd-devel



Apacheが無事にインストールできたかを確認します。

httpd -v



Apacheを起動します。

sudo service httpd start



以上でApacheのインストールは完了です。

Djangoをインストール

Djangoとmod_wsgiをインストールします。mod_wsgiはPythonで書かれたプログラムをApache HTTP Serverで動かすためのモジュールです。

Djangoをインストールします。

sudo pip3 install django



Djangoがインストールされたかを確認します。

python3
>>> import django
>>> django.get_version()



mod_wsgiをインストールします。

sudo pip3 install mod_wsgi



mod_wsgiがインストールされたかを確認します。

pip3 freeze | grep wsgi


以上でDjangoのインストールは完了です。

Djangoを起動する

既にDjangoのプログラムソースが作成されている場合は、Gitをインストールして、ソースを反映させましょう。

Gitをインストールする。

sudo yum install git



まだプログラムソースを作成していない場合は、以下でプロジェクトを作成しましょう。

django-admin startproject hogehoge


Djangoを起動させます。今回はApacheではなく、Djangoのデフォルトで用意されている開発サーバーを利用しました。

cd mysite
python manage.py runserver


以上で、Djangoの構築から起動まで実施することができました。

Apacheで起動できるように設定する

python runserverのままだと開発環境での利用しかできません。本番環境としても利用できるようにApacheとmod_wsgiの設定を行います。

インストール済みのmod_wsgiの保存場所を確認します。

find -name 'mod_*.so'


Apacheの設定ファイルに設定を追加します。

sudo vi /etc/httpd/conf.d/django.conf



設定するファイルの内容は以下の通りです。

LoadModule wsgi_module 先程確認したmod_wsgiの保存場所
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonHome /path/to/venv
WSGIPythonPath /path/to/mysite.com

<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>


・WSGIScriptAlias : ApacheにきたリクエストをDjangoプロジェクトに遷移させる先を設定します。
・WSGIPythonPath : Pythonを通すパスです。(例:/site-packages)
・WSGIPythonHome : 利用するPythonのホームディレクトリーです。
・Directory : Apacheがアクセスできるように設定します。

以上の設定が完了したら、以下のコマンドにてApacheを起動させ、無事にDjangoプロジェクトが起動することを確認します。

sudo service httpd restart


DjangoをAWS EC2で構築してみよう!

今回は、AWS EC2を利用して、Djangoプロジェクトの構築方法について紹介してきました。AWS EC2で構築方法をマスターすれば、Amazon LightsailやElastic Beanstalkでの構築はもっと簡単になるでしょう。ぜひAWS EC2での構築をマスターしてみましょう。