【Day 30】 Django 網站部署篇 - PythonAnywhere

今天是鐵人賽的倒數第二篇,之前我們都是在本機端(Localhost)寫Django的網站,這次就要把它部屬到pythonanywhere囉! 部署完成後,我們就可以不用在本機啟動Server後才能連上網站,而是24小時想進網站都能連上。

我原先是想將Django網站部署到Heroku上,但不幸的是Heroku將在2022年11月底停止免費服務,所以我選擇改部署到PythonAnywhere上。至於PythonAnywhere詳細提供的服務就先不在本篇說明,以下開始部署我們的Django網站吧!

1. 註冊並登入 PythonAnywhere

前往pythonanywhere首頁

登入PythonAnywhere的帳號,沒有的話就註冊一個吧!

成功登入後,映入眼簾的是PythonAnywhere的儀表板(Dashboard)

2. 建立python虛擬環境並安裝Django

點擊儀錶板Consoles那邊的藍色Bash按鈕。

點完按鈕後,就會進入Bash的畫面。

Bash輸入並執行下面的指令,建立名為myproject的虛擬環境,且python版本為3.7

1
virtualenv --python=python3.7 myproject

分別輸入並執行下面的指令,啟動python虛擬環境並安裝Django

1
source myproject/bin/activate
1
pip install django

安裝完Django後,輸入並執行以下指令,離開python虛擬環境。

1
deactivate

3. 將 Django Project 壓縮並上傳

找到Django Project的資料夾並將它加入壓縮檔(.zip)。

回到PythonAnywhere的儀表板,點擊FilesBrowse Files按鈕。

進入下面的畫面後,點擊Upload a file的按鈕,上傳我們剛剛的Django Project壓縮檔。

上傳完壓縮檔,就可以在按鈕上面看到它 (紅框部分)。

4. 到 Bash 將 Django Project 壓縮檔解壓縮

回到儀錶板,點擊藍色Bash按鈕進入Bash

輸入以下指令把壓縮檔解壓縮。

1
unzip myworld.zip

5. 建立 Web apps

回到Dashboard點擊Web Apps那邊藍色的Open Web tab按鈕。

接下來點擊左邊藍色的按鈕,建立新的web app
(免費版帳號只能建立一個web app)

點擊後,它會跳出設定domain name的提示,但因為是免費版的帳號,所以不支援這個功能,直接按下方的Next就好。

按下Next後,接下來要選擇這個web apppython框架,這邊不選Django,我們選最下面的手動設定(紅框)。

接下來選擇跟python虛擬環境一樣的python 3.7版本,然後繼續點Next

來到這邊繼續點Next

最後看到這個畫面就代表web app建立成功囉!

6. 設定 Web apps 的 WSGI 和 Virtualenv

在剛建立完的web app頁面往下找到Code設定裡面的WSGI configuration file,點擊進入檔案。

進到檔案裡面後,把它所有的內容修改成下面這樣並按下Save儲存。

1
2
3
4
5
6
7
8
9
10
11
12
import os
import sys

path = '/home/QiXiang/myworld' #修改成 `/home/pythonanywhere帳號/Django Project名稱`
if path not in sys.path:
sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'myworld.settings' #修改成 'Django Project名稱.settings'

from django.core.wsgi import get_wsgi_application
from django.contrib.staticfiles.handlers import StaticFilesHandler
application = StaticFilesHandler(get_wsgi_application())

回到web app畫面往下找到Virtualenv,然後點擊下方的紅字指定python虛擬環境的路徑。

改成前面建立的python虛擬環境路徑,home/PythonAnywhere帳號/虛擬環境名稱

改完路徑後往上滑,點綠色的按鈕重新載入web app

點擊QiXiang.pythonanywhere.com會發現沒辦法看到正確的網頁,因為我們沒有設定Django Project允許存取的主機位址。

7. 新增 Django Project Allowed Hosts

點擊上方藍色的Files就會看到目前所有的檔案,然後點擊右邊紅色圈起來的Django Project資料夾。

繼續點擊Django Project同名資料夾進入下一層。

點擊右方Filessettings.py,進入修改檔案的畫面。

settings.py往下找到ALLOWED_HOSTS這個List,把主機位址'PythonAnywhere帳號.pythonanywhere.com'加到List裡面。

添加完後,回到web app頁面,點擊最上方的綠色按鈕重新載入web app

直接點擊網址還是會有錯,但我們在瀏覽器直接輸入到members頁面的網址QiXiang.pythonanywhere.com/members,就會成功看到members網頁,代表我們成功部署Django網站囉!

以上就是在PythonAnywhere部署Django網站的流程,明天是總結整個鐵人賽的心得篇,我們明天見!

分享到