Deploy
目前為止,我們所有的工作都是在自己的電腦完成,你也可以在自己的電腦上看到成果。但是,如果我們想要讓其他人隨時瀏覽這個網站,就必須將它部署(deploy)到穩定的伺服器上。
我們選擇 PythonAnywhere 作為範例。它對於 Python 的支援性相當好,免費帳號也足夠經營一個小型網站。
部署準備
為了將你的程式碼上傳到雲端,我們要先將整個專案打包成一個壓縮檔。在 djangogirls
專案目錄下,用以下的指令將整個專案壓縮成 mysite.zip
:
(djangogirls_venv) ~/djangogirls$ python -m zipfile -c mysite.zip mysite
部署到雲端
在開始部署之前,請先確定已經在 PythonAnywhere 註冊帳號:
Step 1: 上傳專案
使用 PythonAnywhere 的檔案介面,將專案的壓縮檔上傳。首先切換到 Files 分頁,按下 Upload a file 按鈕:
選擇剛剛壓縮好的 mysite.zip
。當畫面上出現這個檔案時,便表示已經上傳完成。
Step 2: 開啟 Bash Console
切換到 Consoles 分頁,點選 Bash 開啟一個新的 Bash console。我們可以透過它下指令,以建置部署環境。
首先利用 unzip
指令將專案解壓縮:
~ $ unzip mysite.zip
由於雲端的環境與我們本機端不同,我們需要為它建立一個新的虛擬環境,並在裡面安裝 Django:
~ $ virtualenv --python=python3.5 djangogirls_venv
~ $ source djangogirls_venv/bin/activate
(djangogirls_venv) ~ $ pip install "django<1.9"
Step 3: 新增一個新的 web app
點擊左上角的 logo 回到主頁面,接著切換到 Web 分頁,點選 Add a new web app 按鈕:
在出現的視窗中首先會詢問你想使用的網址。由於免費方案無法設定,我們直接按下 Next 使用預設值。
接著需要選擇 Python Web framework。請特別注意不要選擇 Django。我們將手動設定虛擬環境,因此使用 Manual configuration。
在 Python 版本選擇畫面中使用 Python 3.5。
最後按下 Next,即完成建立 web app。
Step 4: 修改 web app 設定
當你完成上一個步驟後,Web 分頁會顯示 web app 的設定介面,讓你可以修改設定、重載 web app、或是查看錯誤訊息等等。
首先在中間的 Virtualenv 區塊填入我們前面設定的虛擬環境位置/home/<your-PythonAnywhere-username>/djangogirls_venv
,並點選按鈕儲存設定。
注意:請將 <your-PythonAnywhere-username>
改成你在 PythonAnywhere 註冊的 username。我們在後面還會不斷提到這個路徑,務必也要記得修改!
接著設定 PythonAnywhere 與我們的網站如何溝通。用 Python 撰寫的網站程式是透過 Python 制定的 WSGI - Web Server Gateway Interface 標準,來定義和伺服器溝通的介面。在 Code 區塊點選 /var/www/<your-PythonAnywhere-username>_PythonAnywhere_com_wsgi.py
,打開編輯介面:
刪除原有的程式碼,並覆蓋為:
import os
import sys
path = '/home/<your-PythonAnywhere-username>/mysite' # use your own PythonAnywhere username here
if path not in sys.path:
sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
from django.core.wsgi import get_wsgi_application
from django.contrib.staticfiles.handlers import StaticFilesHandler
application = StaticFilesHandler(get_wsgi_application())
再次提醒,記得要將 <your-PythonAnywhere-username>
改成你在 PythonAnywhere 註冊的 username。
點選 Save 儲存修改後,即可點選 logo 離開編輯器。
Step 5: 重新載入(Reload)web app
回到 Web 分頁點選 Reload 按鈕,讓 PythonAnywhere 重新載入我們更新的設定:
Step 6: 開啟瀏覽器觀看你的網站
直接點選,或可以複製網址到瀏覽器打開網站:
大功告成,恭喜你成功發佈了自己的網站!這個網址可以直接分享給任何人:https://djangogirlstaipei.PythonAnywhere.com/——記得前面要替換成你自己的 PythonAnywhere username
!
未來如果對網站進行任何修改,可以使用以下的步驟更新:
- 壓縮專案、上傳
- 用 Bash console 解壓縮
- 重新載入(Reload)web app
就可以在 PythonAnywhere 上看到新的程式。
注意:在上傳、解壓縮新版程式時,也會讓雲端的所有資料庫被本機的版本覆蓋!