Django 部署 (二):AWS EC2 上部署 Django 專案
身為一個後端菜雞,在學習使用 Django 作為後端開發框架時,常常需要重複查詢很基礎的指令或部署方式,但想要好好整理成文章或筆記時又會完美主義爆發,一拖再拖的結果就是什麼產出都沒有。這次,決定以自己熟悉的隨筆方式紀錄,同時希望這些筆記也能夠幫助到跟我一樣、正在後端之路上學習的你們!
創建 Django 專案
透過 SSH 連線進入AWS EC2 ,先安裝 pip
與 venv
並建立一個虛擬環境。
$ 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 #啟動虛擬環境
- 安裝 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 網站的話,需進行以下設定:
- 於安全群組中開啟指定阜 (port) 的權限
- 指定伺服器 Host 與 IP 位址
新增安全規則
- 進入 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 網站。