今天是鐵人賽的倒數第二篇,之前我們都是在本機端(Localhost)寫Django的網站,這次就要把它部屬到pythonanywhere囉! 部署完成後,我們就可以不用在本機啟動Server後才能連上網站,而是24小時想進網站都能連上。
我原先是想將Django網站部署到Heroku上,但不幸的是Heroku將在2022年11月底停止免費服務,所以我選擇改部署到PythonAnywhere上。至於PythonAnywhere詳細提供的服務就先不在本篇說明,以下開始部署我們的Django網站吧!

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

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

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

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

在Bash輸入並執行下面的指令,建立名為myproject的虛擬環境,且python版本為3.7。
virtualenv --python=python3.7 myproject

分別輸入並執行下面的指令,啟動python虛擬環境並安裝Django。
source myproject/bin/activate
pip install django

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

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

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

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

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

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

輸入以下指令把壓縮檔解壓縮。
unzip myworld.zip

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

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

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

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

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

來到這邊繼續點Next。

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

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

進到檔案裡面後,把它所有的內容修改成下面這樣並按下Save儲存。
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允許存取的主機位址。

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

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

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

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

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

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

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