在上一篇文章中,我們學習了如何使用Nginx作為反向代理,並配置正式環境的Docker Compose設置。
本篇文章中,我們將探討如何將Django應用部署到Google Cloud Platform(GCP)上,並使用GCP提供的虛擬機來運行我們的應用。
Google Cloud Platform(GCP)提供了一套完整的雲端解決方案,包括計算、存儲和網絡服務。使用GCP,我們可以輕鬆地擴展應用程序,實現高可用性和高性能。此外,GCP還提供了一系列工具和服務,幫助我們監控和管理雲端資源。
首先,我們需要安裝Gcloud CLI,以便通過命令行與GCP進行交互。請先使用Gmail帳號註冊並登入GCP,接著進入GCP主頁:
下載GCP CLI並執行安裝:
下載後,回到解壓縮檔案的根目錄執行安裝指令:
./google-cloud-sdk/install.sh
接著執行初始化指令:
./google-cloud-sdk/bin/gcloud init
接下來,我們需要創建一個虛擬機實例來運行我們的應用。首先,進入GCP主頁,點擊左上方的下拉選單,選擇“創建項目”:
輸入項目名稱,選擇項目所屬的組織(如果有),然後點擊創建:
創建完成後,切換到新創建的項目,點擊左上角的三條線打開導航菜單,選擇Compute Engine:
點擊啟用Compute Engine API,等待其啟動:
啟動完成後,點擊“創建實例”:
設置實例名稱和區域,選擇適合的機器配置(例如輕量級機器):
允許HTTP和HTTPS流量,然後點擊創建:
接著需要會一些基礎的Gcloud CLI指令以管理和操作GCP資源。首先查看當前已認證的Google帳號:
gcloud auth list
如果沒有登入的帳號,可以使用以下指令來登入:
gcloud auth login
登入成功後,可以查看當前配置的項目和區域:
gcloud config list
使用以下指令連接到虛擬機:
gcloud compute ssh --project=PROJECT_ID --zone=ZONE VM_NAME
舉例:
gcloud compute ssh lucien-vm --project=test-project-421102 --zone=asia-east1-a
設置完成GCP後,我們需要在方才創建好的虛擬機上,我安裝一些必要的軟件並克隆專案倉庫:
更新包管理器:
sudo apt update
安裝Git:
sudo apt install git
克隆專案倉庫:
git clone <YOUR REPO URL>
安裝Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
將當前使用者添加到Docker組,$USER
請替換成您當前的使用者名稱:
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
接著我們測試看看Docker是否成功安裝了
docker run hello-world
接下來需要創建.env
檔並填寫資料庫資訊和虛擬機的外部IP:
.env
MYSQL_ROOT_PASSWORD=mariadb_root_password
MYSQL_DATABASE=mydatabase
MYSQL_USER=myuser
MYSQL_PASSWORD=mypassword
DJANGO_ALLOWED_HOSTS=35.229.194.213
啟動專案:
docker-compose up --build -d
查看是否正常運行:
docker ps
接下來需要遷移Django的資料庫:
docker exec -it backend-api-services python manage.py makemigrations
docker exec -it backend-api-services python manage.py migrate
創建超級使用者帳號:
docker exec -it backend-api-services python manage.py createsuperuser
創建群組king
並將使用者添加到該群組:
docker exec -it backend-api-services python manage.py shell
在Python Shell中執行:
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
User = get_user_model()
user = User.objects.get(username='test') # 假設你的使用者名稱是test
king_group = Group.objects.get_or_create(name='king')[0]
king_group.user_set.add(user)
exit()
現在你可以呼叫Hello的API了!
創建設置和權限:
sudo mkdir -p /var/www/static
sudo chown -R www-data:www-data /var/www/static
sudo chmod -R 755 /var/www/static
ls -la /var/www/
運行collectstatic
命令,將靜態文件STATIC_ROOT
弄到指定目錄:
docker exec -it <django-container-name> python manage.py collectstatic --noinput
關閉容器並重啟:
docker-compose down
docker-compose up -d
在這篇文章中,我們學習了如何將Django應用部署到GCP雲端上。我們介紹了如何創建虛擬機、安裝和配置必要的軟件、克隆專案、配置環境變量以及啟動應用程序。這是本系列的最後一篇文章,通過這個系列的教學,我們從零開始一步步建立了一個完整的Django應用,並在Docker和雲端環境中部署了它。我們探討了從開發到部署的各個環節,包括設置開發環境、使用Docker Compose、配置Nginx、整合Swagger、設置Logger、Middleware和CORS等。
希望這個系列的教學能夠幫助你更好地理解和掌握Django和Docker的應用,並成功地將你的項目部署到生產環境。如果你有任何問題或建議,歡迎隨時聯繫我。感謝你的閱讀,祝你在學習和開發的道路上取得更多的成功。