在Ubuntu上部署Flask應(yīng)用的流程步驟
一、部署準(zhǔn)備
在開始之前,請(qǐng)確保你具備以下條件:
- 一臺(tái)運(yùn)行 Ubuntu(如 Ubuntu 20.04 或 22.04)的服務(wù)器,具有 SSH 訪問權(quán)限。
- Python 應(yīng)用程序的代碼,確保在本地能夠正常運(yùn)行。
二、安裝 Python 環(huán)境
1. 安裝 Python 3
Ubuntu 20.04 和更高版本默認(rèn)安裝了 Python 3,但如果你的系統(tǒng)上沒有安裝,可以手動(dòng)安裝它:
sudo apt update sudo apt install python3 python3-pip python3-venv -y
python3:安裝 Python 3 解釋器。python3-pip:安裝 Python 包管理工具。python3-venv:安裝虛擬環(huán)境支持。
2. 驗(yàn)證 Python 安裝
安裝完成后,可以通過以下命令驗(yàn)證 Python 和 pip 是否正確安裝:
python3 --version pip3 --version
你應(yīng)該看到類似下面的輸出:
Python 3.8.10 pip 21.1.2
三、安裝 MySQL(如需)
1. 安裝MySQL服務(wù)器
sudo apt install mysql-server -y
2. 啟動(dòng)并設(shè)置MySQL開機(jī)自啟
sudo systemctl start mysql sudo systemctl enable mysql
3. 驗(yàn)證MySQL安裝
登錄MySQL以確認(rèn)安裝成功。
sudo mysql -u root -p
MySQL默認(rèn)密碼是root,直接登錄即可。
4. 修改初始密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
5. 創(chuàng)建庫(kù)和表
這里我們用SQL語(yǔ)句把項(xiàng)目需要的數(shù)據(jù)庫(kù)建好即可。
四、創(chuàng)建虛擬環(huán)境
為了避免全局安裝 Python 包和依賴,可以使用 Python 的虛擬環(huán)境來管理項(xiàng)目的依賴。
1. 創(chuàng)建虛擬環(huán)境
在應(yīng)用程序的目錄中,運(yùn)行以下命令創(chuàng)建虛擬環(huán)境:
python3 -m venv myenv
這將創(chuàng)建一個(gè)名為 myenv 的虛擬環(huán)境。
2. 激活虛擬環(huán)境
在創(chuàng)建完虛擬環(huán)境后,需要激活它:
source myenv/bin/activate
激活虛擬環(huán)境后,你會(huì)看到終端提示符前綴變?yōu)?nbsp;(myenv),表示虛擬環(huán)境已激活。
五、發(fā)布 Python 應(yīng)用
1. 上傳項(xiàng)目文件
將應(yīng)用程序文件上傳到生產(chǎn)服務(wù)器,確保所有的源代碼文件和 requirements.txt 文件都已上傳。
2. 安裝項(xiàng)目依賴
通過 requirements.txt 文件安裝依賴。
pip install -r requirements.txt
3. 啟動(dòng)項(xiàng)目
進(jìn)入到應(yīng)用程序目錄,并運(yùn)行 Python 應(yīng)用,確保它能夠正常啟動(dòng):
python3 app.py
如果應(yīng)用運(yùn)行正常,會(huì)顯示應(yīng)用訪問地址以及端口號(hào)。
六、配置 Nginx 作為反向代理(可選)
為了將外部請(qǐng)求轉(zhuǎn)發(fā)到 Python 應(yīng)用,通常使用 Nginx 作為反向代理。
1. 安裝 Nginx
如果 Nginx 尚未安裝,使用以下命令安裝:
sudo apt update sudo apt install nginx -y
2. 配置 Nginx
打開 Nginx 配置文件并編輯反向代理設(shè)置:
sudo nano /etc/nginx/sites-available/default
在 server 塊中,配置反向代理,將請(qǐng)求轉(zhuǎn)發(fā)到 Python 應(yīng)用所在的端口(假設(shè) Python 應(yīng)用運(yùn)行在 8000 端口):
server {
listen 80;
server_name your_domain_or_ip;
location / {
proxy_pass http://127.0.0.1:8000; # 將請(qǐng)求轉(zhuǎn)發(fā)到 Python 應(yīng)用
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
保存并退出編輯器。
3. 測(cè)試 Nginx 配置
執(zhí)行以下命令測(cè)試 Nginx 配置是否正確:
sudo nginx -t
如果配置正確,輸出應(yīng)該顯示 syntax is okay 和 test is successful。
4. 重新加載 Nginx
重新加載 Nginx 以應(yīng)用配置:
sudo systemctl reload nginx
七、設(shè)置系統(tǒng)服務(wù)(可選)
為了確保 Python 應(yīng)用在系統(tǒng)重啟后自動(dòng)啟動(dòng),你可以創(chuàng)建一個(gè) systemd 服務(wù)文件。
1. 創(chuàng)建 systemd 服務(wù)文件
創(chuàng)建一個(gè)新的服務(wù)文件:
sudo nano /etc/systemd/system/python-app.service
添加以下內(nèi)容:
[Unit] Description=Python Application After=network.target [Service] User=your_user Group=your_group WorkingDirectory=/path/to/your/app ExecStart=/path/to/your/app/myenv/bin/python3 /path/to/your/app/app.py Restart=always [Install] WantedBy=multi-user.target
User和Group:設(shè)置為運(yùn)行應(yīng)用程序的用戶和組。WorkingDirectory:指向應(yīng)用程序的目錄。ExecStart:指向 Python 虛擬環(huán)境中的 Python 解釋器和應(yīng)用程序入口。
2. 重新加載 systemd 配置并啟動(dòng)服務(wù)
sudo systemctl daemon-reload sudo systemctl start python-app.service sudo systemctl enable python-app.service
3. 檢查服務(wù)狀態(tài)
sudo systemctl status python-app.service
確認(rèn)應(yīng)用程序是否在后臺(tái)運(yùn)行并監(jiān)聽正確的端口。
八、配置防火墻
如果你的服務(wù)器啟用了防火墻(例如 UFW),確保允許 HTTP(80 端口)和你的應(yīng)用程序使用的端口(例如 8000)通過防火墻:
sudo ufw allow 80 sudo ufw allow 8000
九、測(cè)試部署
在部署完成后,訪問你配置的服務(wù)器域名或 IP 地址,檢查 Python 應(yīng)用是否通過 Nginx 正常提供服務(wù)。
十、總結(jié)
通過本教程,我們成功地在 Ubuntu 上部署了一個(gè) Python 應(yīng)用,包括環(huán)境準(zhǔn)備、依賴管理、配置反向代理、設(shè)置系統(tǒng)服務(wù)以及日志管理等步驟。這種部署方式非常適合生產(chǎn)環(huán)境,能夠確保應(yīng)用程序在系統(tǒng)重啟后自動(dòng)啟動(dòng),并且能夠通過 Nginx 處理高并發(fā)的外部請(qǐng)求。
以上就是在Ubuntu上部署Flask應(yīng)用的流程步驟的詳細(xì)內(nèi)容,更多關(guān)于Ubuntu部署Flask應(yīng)用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- flask應(yīng)用部署到服務(wù)器的方法
- centos 7.0 使用Nginx部署flask應(yīng)用教程
- Docker部署Flask應(yīng)用的實(shí)現(xiàn)步驟
- 使用Docker部署Python Flask應(yīng)用的完整教程
- 使用Docker部署Nginx+Flask+Mongo的應(yīng)用
- 本地部署Python?Flask并搭建web問答應(yīng)用程序框架實(shí)現(xiàn)遠(yuǎn)程訪問的操作方法
- 在DigitalOcean的服務(wù)器上部署flaskblog應(yīng)用
- Windows Server環(huán)境下使用Nginx部署Flask應(yīng)用的全過程
- Flask應(yīng)用部署與多端口管理實(shí)踐全指南
- Flask常見應(yīng)用部署方案詳解
相關(guān)文章
python list列表刪除指定元素的四種實(shí)現(xiàn)方式
文章介紹了在Python中刪除列表元素的四種方法:使用remove()刪除第一次出現(xiàn)的指定值,使用pop()根據(jù)索引刪除元素,使用列表推導(dǎo)式刪除滿足特定條件的所有元素,以及使用del語(yǔ)句根據(jù)索引刪除元素或整個(gè)列表,每種方法都有其特定的使用場(chǎng)景和可能引發(fā)的錯(cuò)誤2025-10-10
淺談python為什么不需要三目運(yùn)算符和switch
下面小編就為大家?guī)硪黄獪\談python為什么不需要三目運(yùn)算符和switch。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06
使用Python如何將視頻按照一定時(shí)間切割(比如:每10s進(jìn)行裁切)
這篇文章主要介紹了使用Python將視頻按照一定時(shí)間切割(比如:每10s進(jìn)行裁切),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
Pandas數(shù)據(jù)結(jié)構(gòu)DataFrame使用方式
本文系統(tǒng)介紹了Pandas DataFrame的核心功能,涵蓋創(chuàng)建方式、基本操作(查看、選擇、過濾、修改)、統(tǒng)計(jì)分析、缺失值處理、合并分割等,并對(duì)比了其與原生數(shù)據(jù)結(jié)構(gòu)的優(yōu)劣勢(shì),強(qiáng)調(diào)其在結(jié)構(gòu)化數(shù)據(jù)處理、高效計(jì)算和多格式交互中的優(yōu)勢(shì)2025-10-10
python實(shí)現(xiàn)單張圖像拼接與批量圖片拼接
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)單張圖像拼接與批量圖片拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
基于Python實(shí)現(xiàn)通過微信搜索功能查看誰(shuí)把你刪除了
這篇文章主要介紹了基于Python實(shí)現(xiàn)微信搜索查看誰(shuí)把你刪除了的相關(guān)資料,需要的朋友可以參考下2016-01-01

