iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
Python

Python探索之旅:從基礎到實踐系列 第 24

DAY 24: Django 部署巔峰——無縫上線至 Heroku 與多平台攻略

  • 分享至 

  • xImage
  •  

將你的 Django 應用程式部署到線上平台,讓全世界都能訪問,是每位開發者的重要里程碑。Heroku 作為一個強大且易於使用的雲端平台,是部署 Django 應用的理想選擇。此外,我們還將簡要介紹其他常見的部署平台,幫助你靈活選擇最適合的方案。本篇將詳細步驟指導你如何將 Django 應用部署到 Heroku,並涵蓋必要的配置與最佳實踐。

一、部署前的準備工作

在部署 Django 應用之前,我們需要確保應用已經準備好進入生產環境。以下是一些關鍵步驟:

1.	安裝必要的模組
•	Gunicorn:一個 Python WSGI HTTP 伺服器,用於運行 Django 應用。
•	dj-database-url:用於解析資料庫 URL,方便 Heroku 配置。
•	whitenoise:用於處理靜態文件的中介軟體。

pip install gunicorn dj-database-url whitenoise

2.	更新 requirements.txt

確保所有依賴模組都已列在 requirements.txt 中,以便 Heroku 安裝。

pip freeze > requirements.txt

3.	設定靜態文件處理

在 settings.py 中配置靜態文件的路徑和中介軟體:

settings.py

import os
import dj_database_url

靜態文件配置

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

使用 WhiteNoise 來處理靜態文件

MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
# 其他中介軟體
]

資料庫配置

DATABASES = {
'default': dj_database_url.config(default='sqlite:///db.sqlite3')
}

允許的主機

ALLOWED_HOSTS = ['your-app-name.herokuapp.com']

4.	創建 Procfile

Procfile 告訴 Heroku 如何運行你的應用。創建一個名為 Procfile 的文件,並加入以下內容:

web: gunicorn your_project_name.wsgi --log-file -

將 your_project_name 替換為你的 Django 專案名稱。

5.	配置環境變數

將敏感資訊如 SECRET_KEY 和 DEBUG 設定為環境變數。在 settings.py 中讀取這些變數:

settings.py

import os

SECRET_KEY = os.environ.get('SECRET_KEY', 'your-default-secret-key')
DEBUG = os.environ.get('DEBUG', 'False') == 'True'

二、部署到 Heroku

Heroku 是一個流行且易於使用的雲端平台,適合部署各種應用。以下是將 Django 應用部署到 Heroku 的詳細步驟:

1.	安裝 Heroku CLI

Heroku 提供了一個命令行工具,方便管理應用。你可以從 Heroku CLI 官方網站 下載並安裝。
2. 登錄 Heroku
在終端中運行以下命令,並按照提示登錄:

heroku login

3.	創建 Heroku 應用

在專案目錄中,運行以下命令創建一個新的 Heroku 應用:

heroku create your-app-name

如果不指定應用名稱,Heroku 會自動生成一個。

4.	設定 PostgreSQL 資料庫

Heroku 默認使用 PostgreSQL 作為資料庫。添加 PostgreSQL 擴展:

heroku addons:create heroku-postgresql:hobby-dev

這會自動配置資料庫 URL 作為環境變數 DATABASE_URL,我們已在 settings.py 中使用 dj-database-url 來解析它。

5.	推送程式碼到 Heroku

確保你的專案已經使用 Git 進行版本控制,並且所有更改已經提交。然後運行以下命令將程式碼推送到 Heroku:

git add .
git commit -m "Prepare for Heroku deployment"
git push heroku main

如果你的默認分支不是 main,請根據實際情況修改命令。

6.	運行資料庫遷移

部署完成後,運行資料庫遷移以應用模型更改:

heroku run python manage.py migrate

7.	收集靜態文件

收集靜態文件到 STATIC_ROOT 目錄:

heroku run python manage.py collectstatic --noinput

8.	設定環境變數

設定必要的環境變數,如 SECRET_KEY 和 DEBUG:

heroku config:set SECRET_KEY='your-secret-key'
heroku config:set DEBUG=False

9.	啟動應用

Heroku 通常會自動啟動應用,但你可以手動確認:

heroku ps:scale web=1

10.	訪問應用

部署完成後,打開瀏覽器訪問 https://your-app-name.herokuapp.com/,你應該能看到你的 Django 應用已經上線。

三、其他部署平台簡介

除了 Heroku,還有其他多種雲端平台可以用來部署 Django 應用,根據需求和預算選擇最適合的方案:

1.	AWS Elastic Beanstalk
•	AWS 提供的 PaaS 服務,支援自動擴展和高可用性配置。
•	適合需要高度自定義和整合 AWS 生態系的應用。
2.	DigitalOcean
•	提供簡單的雲伺服器 (Droplets),適合部署中小型應用。
•	有豐富的教學資源,方便快速上手。
3.	Google Cloud Platform (GCP)
•	提供多種部署選項,如 App Engine 和 Compute Engine。
•	適合需要與 Google 服務深度整合的應用。
4.	Microsoft Azure
•	支援多種部署方式,與 Azure 的其他服務無縫整合。
•	適合企業級應用和需要使用 Azure 服務的開發者。

四、最佳實踐與安全性考量

在部署 Django 應用時,除了基本的配置,還需注意以下最佳實踐和安全性設置:

1.	使用安全的 SECRET_KEY
•	確保 SECRET_KEY 是唯一且安全的,不應在公開的版本控制系統中暴露。
2.	設定 DEBUG=False
•	在生產環境中,務必將 DEBUG 設為 False,以防止敏感資訊洩漏。
3.	使用 HTTPS
•	確保你的應用使用 HTTPS,保護數據傳輸的安全性。Heroku 提供免費的 SSL 支持。
4.	設定 ALLOWED_HOSTS
•	僅允許你的應用域名訪問,防止 Host Header 攻擊。

ALLOWED_HOSTS = ['your-app-name.herokuapp.com', 'www.yourcustomdomain.com']

5.	保護靜態和媒體文件
•	使用 WhiteNoise 或專門的服務(如 AWS S3)來處理靜態和媒體文件,確保文件的正確和安全存取。
6.	定期更新依賴
•	保持所有依賴模組(如 Django、Gunicorn 等)最新,修補已知的安全漏洞。
7.	監控與日誌管理
•	使用 Heroku 的日誌功能或第三方監控工具,監控應用的運行情況,及時發現和解決問題。

五、結語

部署 Django 應用到 Heroku 是一個相對簡單且高效的過程,適合快速將開發好的應用上線。通過本文的指導,你已經掌握了從準備工作到實際部署的完整流程。此外,了解其他部署平台的選擇也能幫助你在不同的場景下靈活應用。

部署不僅僅是將應用上線,更是確保應用的穩定性、安全性和可擴展性。持續學習和實踐部署技巧,將使你的 Django 應用更加專業,為使用者提供更好的體驗。

祝你在 Django 部署之旅中順利,成功將你的創意與努力轉化為實際可用的線上應用!


上一篇
DAY 23: 解鎖 Django 中介軟體與管理介面——打造高效應用邏輯的秘密武器
下一篇
DAY 25: 鐵證如山——編寫高效單元測試與極致除錯技巧
系列文
Python探索之旅:從基礎到實踐27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言