今天是鐵人賽的倒數第二篇,之前我們都是在本機端(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
網站的流程,明天是總結整個鐵人賽的心得篇,我們明天見!