第8集:部署 Flask/Django 應用到云平臺(以Aliyun為例)
2025年3月1日更新 增加了 Ubuntu服務器安裝Python詳細教程鏈接。
引言
在現代 Web 開發中,開發一個功能強大的應用只是第一步。為了讓用戶能夠訪問你的應用,你需要將其部署到生產環境中。阿里云(Aliyun)作為國內領先的云服務提供商,提供了豐富的工具和服務來支持開發者快速、安全地部署和管理應用。本篇將詳細介紹如何將 Flask 或 Django 應用部署到阿里云服務器,并提供完整的操作步驟。
1. 準備工作
在開始部署之前,我們需要完成以下準備工作:
-
阿里云賬號
如果你還沒有阿里云賬號,請先注冊并完成實名認證。訪問 阿里云官網 進行注冊。 -
購買 ECS 實例
阿里云的彈性計算服務(ECS)是部署 Web 應用的核心資源。選擇適合的實例類型(如通用型或計算型),操作系統推薦使用 Ubuntu 或 CentOS。 -
域名與 SSL 證書
如果你希望為應用配置 HTTPS,需要提前準備域名并在阿里云上申請免費的 SSL 證書。 -
本地開發環境
確保你的 Flask 或 Django 應用已經完成開發,并能夠在本地正常運行。
2. 部署流程概述
以下是部署 Flask/Django 應用到阿里云的基本流程:
- 配置 ECS 實例。
- 安裝必要的軟件環境(Python、Nginx、Gunicorn/uWSGI)。
- 將代碼上傳到服務器。
- 配置 Web 服務器和應用服務器。
- 啟動服務并測試。
在ubuntu服務器安裝python教程見如下鏈接:
Ubuntu服務器安裝python詳細教程
接下來我們將逐一講解每個步驟。
3. 步驟詳解
3.1 配置 ECS 實例
- 登錄阿里云控制臺,進入 ECS 管理頁面,啟動你的實例。
- 使用 SSH 連接到服務器:
ssh root@<你的服務器公網IP>
- 更新系統包:
sudo apt update && sudo apt upgrade -y
3.2 安裝 Python 和依賴環境
- 安裝 Python 3 和 pip:
sudo apt install python3 python3-pip python3-venv -y
- 創建虛擬環境并激活:
python3 -m venv venv source venv/bin/activate
- 安裝項目依賴:
pip install -r requirements.txt
注意:確保
requirements.txt
文件包含所有必要的依賴項。
3.3 安裝 Nginx 和 Gunicorn/uWSGI
- 安裝 Nginx:
sudo apt install nginx -y
- 安裝 Gunicorn(適用于 Flask/Django):
pip install gunicorn
- 測試 Gunicorn 是否能運行你的應用:
gunicorn -w 4 -b 0.0.0.0:8000 app:app
對于 Django 項目,命令可能為:
gunicorn -w 4 -b 0.0.0.0:8000 your_project.wsgi:application
3.4 配置 Nginx
- 編輯 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/myapp
- 添加以下內容:
server {listen 80;server_name <你的域名或IP>;location / {proxy_pass http://127.0.0.1:8000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;} }
- 啟用配置文件并重啟 Nginx:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
3.5 配置 Supervisor(可選)
為了確保應用在后臺持續運行,可以使用 Supervisor 來管理進程。
- 安裝 Supervisor:
sudo apt install supervisor -y
- 創建 Supervisor 配置文件:
sudo nano /etc/supervisor/conf.d/myapp.conf
- 添加以下內容:
[program:myapp] command=/path/to/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app directory=/path/to/your/project user=root autostart=true autorestart=true stderr_logfile=/var/log/myapp.err.log stdout_logfile=/var/log/myapp.out.log
- 啟動 Supervisor 并加載配置:
sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start myapp
3.6 配置 HTTPS(可選)
- 在阿里云控制臺申請免費 SSL 證書。
- 下載證書并上傳到服務器。
- 修改 Nginx 配置以啟用 HTTPS:
server {listen 443 ssl;server_name <你的域名>;ssl_certificate /path/to/your/cert.pem;ssl_certificate_key /path/to/your/key.pem;location / {proxy_pass http://127.0.0.1:8000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;} }server {listen 80;server_name <你的域名>;return 301 https://$host$request_uri; }
- 重啟 Nginx:
sudo systemctl restart nginx
4. 測試與優化
- 訪問你的域名或 IP 地址,確認應用是否正常運行。
- 檢查日志文件以排查潛在問題:
tail -f /var/log/nginx/access.log tail -f /var/log/nginx/error.log
- 根據實際需求調整 Nginx 和 Gunicorn 的配置參數,例如工作線程數、超時時間等。
5. 總結
通過本篇教程,我們詳細介紹了如何將 Flask 或 Django 應用部署到阿里云服務器。從基礎環境配置到 Web 服務器的搭建,再到 HTTPS 的啟用,每一步都旨在幫助你構建一個穩定、高效的生產環境。如果你在部署過程中遇到任何問題,歡迎在評論區留言討論!
下一集我們將探討如何使用 Celery 實現異步任務隊列,敬請期待!
參考資料
- 阿里云官方文檔
- Nginx 官方文檔
- Gunicorn 官方文檔
- Supervisor 官方文檔