把 Django 部屬到雲端去有很多方式 塔克這邊選擇用 GCP 中的 App Engine 來部屬 Django 在開始部屬 Django 步驟之前 有幾點需事先準備好
建立 GCP 帳號
下載 GCP 的專用套件 - Cloud SDK
設定 GAE
建立 GCP 帳號 估狗上已經有很多教學範例 這邊就不贅述了 再請大家先餵狗一下唷 (・ω・)
額外小補充 真找不到教學的朋友,可以參考這位大大的教學唷GCP_如何用Google Cloud Platform創建Server_帳號申請、Server建立
下載 GCP 的專用套件 進入 Cloud SDK 下載頁面 選擇系統版本下載並安裝 安裝的部分也是毫無懸念地,一路給它下一步、下一步安裝到底
安裝好後,系統會自動開啟 Google Cloud SDK Shell (若沒有自動開啟,可以自行開啟 Google Cloud SDK Shell )
如果之前有像塔克一樣有先設定過的話 會像畫面中顯示兩個選項
採用預設 config
建立新的 config
如果之前沒有設定過的話 再請輸入以下指令,初始化 gcloud 設定
這邊塔克都是延續上一次設定帳號選擇
專案ID選擇
是否選擇區域
選擇亞洲區域 (這邊請選擇適合自己的區域)
設定好囉,就可以開始使用 Google Cloud SDK Shell 來上傳 Django 到 GAE 了 !
設定 GAE 回到 GCP 的網頁 點擊 主選單 ,開啟下拉選單,選擇 App Engine ,設定部屬環境
接著開啟語言選擇
我們這邊選擇 Python 語言
選擇一個適合的區域
完成設定後,GCP 會詢問要不要進入教學課程,有興趣的朋友可以看一下唷 !
GOGO ! 部屬 Django 到雲端去 !! 在開始部屬到雲端前 請大家先準備好自己的 Django 專案 如果還沒準備好或不知道怎麼建立 Django 專案的 可以參考塔克之前寫的 Python 隨手筆記 - 用 Django 作個網頁吧 ! 文章做練習
加入 app.yaml 建立好基本專案後,也確定本地端伺服器 (http://127.0.0.1:8000/ ) 可以正常運行後 在建立的專案底下,新增 app.yaml 檔案 並輸入以下代碼
1 2 3 4 5 6 7 8 runtime: python37 handlers: - url: /static static_dir: static/ - url: /.* script: auto
app.yaml 的設定可以參考 app.yaml Reference
加入 main.py 在建立的專案底下,新增 main.py 檔案 並輸入以下代碼
1 2 from mysite.wsgi import application app = application
GAE 預設會依照根目錄下 main.py 檔案中的 app 變數,作為 Django 網站程式的介面
修改 setting.py 打開 yourprojectname/setting.py (塔克範例是 Webapi/setting.py ) 先進入到 修改 ALLOWED_HOSTS 設定
新增 STATIC_ROOT 設定,以便建立靜態檔案
. . .
以 Google Cloud SDK Shell 執行,進入虛擬環境 打開 Google Cloud SDK Shell 依專案設定進入虛擬環境 (以塔克的範例是 ~/venv/Scripts/activate ) 並將路徑指定到專案下 (以塔克的範例是 ~/Django/Webapi )
設定資料庫 若想看看在專案中有哪些資料有新增或異動過的話 可以在 Google Cloud SDK Shell 中,輸入以下代碼
1 python manage.py makemigrations
接著輸入以下代碼,以初始化或更新設定資料庫
1 python manage.py migrate
編制靜態檔案 繼續在 Google Cloud SDK Shell 中 輸入以下代碼編制靜態檔案
1 python manage.py collectstatic
這個指令會根據 settings.py 中的 STATIC_ROOT 的值來編製 同時 app.yaml 也指定 /static 對應的靜態檔案目錄,讓 GAE 來服務靜態檔案
測試本地伺服器 繼續在 Google Cloud SDK Shell 中,輸入以下代碼測試網站是否正常
1 python manage.py runserver
輸入網址 http://127.0.0.1:8000/ ,成功後將會看到 Django 的歡迎頁面
建立 requirements.txt 繼續在 Google Cloud SDK Shell 中,輸入以下代碼建立 requirements.txt
1 pip freeze > requirements.txt
requirements.txt 將會告訴 GAE 我們需要用到那些應用程式 如果沒有這個檔案的話,網頁會發生 502 錯誤唷 !
額外小補充 如果有朋友像塔克一樣習慣用 VSCode 下指令的話 在這個步驟強烈建議使用 Google Cloud SDK Shell 來建立 requirements.txt 或者是自己手動建立 txt 檔,並輸入相關代碼 因為用 VSCode 輸入指令的話,會造成 GAE 無法辨識 requirements.txt 導致網站無法 deploy
往雲端丟丟丟 (ノ≧∇≦)ノ 繼續在 Google Cloud SDK Shell 中,輸入以下代碼
這時候系統會顯示要上傳得相關設定是否正確
檢視後,若沒問題,就可以正式上傳 成功上傳後,可以直接從 Google Cloud SDK Shell 中,輸入以下代碼
或是直接開啟網頁 http://yourprojectid.appspot.com 沒問題的話,就可以看到 Django 跟你 say hello 囉 !
參考 GCP_如何用Google Cloud Platform創建Server_帳號申請、Server建立 部署 Django 2 至 Google App Engine 第二代標準環境教學 app.yaml Reference