Django 部署 (二):AWS EC2 上部署 Django 專案

Cosine Chen
4 min readMay 11, 2023

身為一個後端菜雞,在學習使用 Django 作為後端開發框架時,常常需要重複查詢很基礎的指令或部署方式,但想要好好整理成文章或筆記時又會完美主義爆發,一拖再拖的結果就是什麼產出都沒有。這次,決定以自己熟悉的隨筆方式紀錄,同時希望這些筆記也能夠幫助到跟我一樣、正在後端之路上學習的你們!

創建 Django 專案

透過 SSH 連線進入AWS EC2 ,先安裝 pipvenv 並建立一個虛擬環境。

$ sudo apt-get update
$ sudo apt-get install python3-pip python3.10-venv

$ mkdir myproject #建立專案資料夾
$ cd myproject
$ python3 -m venv venv #建立虛擬環境
$ source venv/bin/activate #啟動虛擬環境
  1. 安裝 Django 與 Django Rest Framework
$ pip install django djangorestframework

2. 建立 Django 專案,新增一個 myapp 應用程式

$ django-admin startproject mysite
$ cd mysite
$ python manage.py startapp myapp

3. 更新資料庫,並啟動 Django 伺服器 (預設為 http://127.0.0.1:8000/)

$ python manage.py migrate
$ python manage.py runserver

AWS EC2 安全規則與 IP 位址

啟動伺服器後,在瀏覽器打開 http://127.0.0.1:8000/ 會顯示如下:

因為這是 AWS EC2 主機中的區域網路,若希望能夠由外部透過公有 IP 位址訪問到 Django 網站的話,需進行以下設定:

  1. 於安全群組中開啟指定阜 (port) 的權限
  2. 指定伺服器 Host 與 IP 位址

新增安全規則

  1. 進入 EC2 中安全群組頁面

2. 選擇要新增規則的安全群組,點選 編輯傳入規則

3. 新增 HTTP、HTTPS,以及要開通的 Port 的 TCP 規則(此處開 8000 Port)

設定伺服器 HOST 與 IP 位址

AWS EC2 有設定公有及私有 IP 位址,要透過外網連接至 EC2 中的伺服器需透過公有 IP 進行訪問,而要訪問的網站伺服器需 Host 在私有 IP 上。

AWS EC2 的 IP 位址如下:(此處以上篇建立的 EC2 為例)

Public IPv4 Address: 13.59.248.83
Private IPv4 Address: 172.31.17.201

將 Django 伺服器啟動於私有 IP 位址,並指定阜為 8000。

$ python manage.py runserver 172.31.17.201:8000

打開網址 http://13.59.248.83:8000/,會發現網頁顯示資訊如下:

由於訪問伺服器的 IP 為公有 IP 位址,Django 默認為不允許訪問的 HOST。因此,需要把公有 IP 位址加入 Django 設定 ( mysite/settings.py )中的 ALLOWED_HOSTS

...
ALLOWED_HOSTS = [
'13.59.248.83'
]
...

設定完成後重新啟動伺服器,即可成功訪問 Django 網站。

--

--

Cosine Chen

Hi 我是 Cosine。我是正在前往前後端之路的菜鳥工程師,不擅長寫文章,只是隨筆紀錄自己的學習歷程。因為不喜歡看太多字的文章,也無法一次吸收太多的內容,每篇的內容都不會太長,偏向實作性質,如果你也是正在學習的 Coding 人,希望這些筆記也能夠幫助到你。如果分享的內容有誤的話,也歡迎留言指正,或直接與我聯繫!