pm2 進程守護python flask
[toc]
安裝Node.js
1.首先,使用以下命令安裝curl(如果尚未安裝):
sudo apt update
sudo apt install curl
2.確保你的系統(tǒng)上已安裝了Node.js的最新版本(可以替換LTS版本為當前最新版本):
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
3.安裝Node.js:
sudo apt install -y nodejs
安裝pm2
1乓旗、安裝
npm install pm2 -g
2齐帚、驗證
pm2 -v
or
pm2 list
上傳文件至服務(wù)器
upload...
python 配置
生成requirements.txt
如果你的項目環(huán)境中已經(jīng)安裝了所有必要的包贪薪,你可以使用
pip freeze
命令來生成一個包含所有已安裝包及其版本的列表吨艇。這個列表可以直接用作 requirements.txt
文件徒爹。
python 虛擬環(huán)境
在Python中,虛擬環(huán)境是一種將一組Python包與其他Python項目隔離開的方法贺奠。這有助于避免依賴沖突和確保項目的可移植性举农。
創(chuàng)建和管理Python虛擬環(huán)境的常見方法有:
- 使用venv模塊(Python 3.3及以上版本)
- 使用virtualenv工具
- 使用pyenv工具
使用Python自帶的venv模塊創(chuàng)建和管理虛擬環(huán)境
# 創(chuàng)建虛擬環(huán)境
python3 -m venv /path/to/new/virtual/environment
# 激活虛擬環(huán)境
source /path/to/new/virtual/environment/bin/activate
# 退出虛擬環(huán)境
deactivate
使用virtualenv工具創(chuàng)建和管理虛擬環(huán)境
首先,你需要安裝virtualenv工具敞嗡,如果你還沒有安裝,可以使用以下命令進行安裝:
pip install virtualenv
然后航背,你可以使用以下命令創(chuàng)建和管理虛擬環(huán)境:
# 創(chuàng)建虛擬環(huán)境
virtualenv /path/to/new/virtual/environment
# 激活虛擬環(huán)境
source /path/to/new/virtual/environment/bin/activate
# 退出虛擬環(huán)境
deactivate
使用pyenv工具創(chuàng)建和管理虛擬環(huán)境
首先喉悴,你需要安裝pyenv工具,如果你還沒有安裝玖媚,可以根據(jù)它的官方文檔中的安裝指南進行安裝:<u>https://github.com/pyenv/pyenv-installer</u>
然后箕肃,你可以使用以下命令創(chuàng)建和管理虛擬環(huán)境:
# 創(chuàng)建虛擬環(huán)境
pyenv virtualenv 3.7.1 my-virtual-env
# 激活虛擬環(huán)境
pyenv activate my-virtual-env
# 退出虛擬環(huán)境
pyenv deactivate
注意:在這些命令中,/path/to/new/virtual/environment 是你想要創(chuàng)建虛擬環(huán)境的目錄今魔。在這個目錄中勺像,將會有一個新的Python環(huán)境,包括Python解釋器和pip的副本错森。
安裝依賴
cd ...
pip install requirements.txt
編寫flask 啟動腳本
直接運行python flask
python3 app.py
gunicorn 運行 flask
安裝模塊
pip install gunicorn
Gunicorn(綠色獨角獸削咆,Green Unicorn)是一個Python的WSGI HTTP服務(wù)器席镀,來源于Ruby 的Unicorn項目。它采用pre-fork的worker模型;在啟動時掏导,會在主進程中預(yù)先fork出指定數(shù)量的worker進程來處理請求,極大提升了服務(wù)器請求負載能力吭从,又可以兼容于多種Python Web框架纤子,實現(xiàn)簡單,占用系統(tǒng)資源少睡蟋,速度也相當快踏幻。
以多thread方式啟動(flask在wsgi.py中):
pm2 --name=ai start "gunicorn -c gunicorn_config.py wsgi:app"
其中 gunicorn_config.py 參數(shù)如下
# gunicorn_config.py
# 并發(fā)工作進程數(shù)
workers = 4 # 可根據(jù)服務(wù)器 CPU 核心數(shù)調(diào)整
# 工作模式
worker_class = 'gevent' # 可以選擇 'sync', 'eventlet', 'gevent', 'tornado', 'gthread'
# 每個worker的最大線程數(shù),僅在 gthread 模式下有效
threads = 2 # 默認是1, 僅適用于 gthread 工作模式
# 每個 worker 處理的最大請求數(shù)戳杀,超過此值后重啟worker
max_requests = 1000 # 默認0, 表示禁用自動重啟
# 綁定的IP和端口
bind = '127.0.0.1:8000' # 可以根據(jù)需求修改
# 進程名稱
proc_name = 'my_gunicorn_app' # 自定義進程名
# 工作進程的超時時間
timeout = 30 # 默認是30秒
# 連接的最大數(shù)量该面,僅適用于 eventlet 或 gevent 工作模式
worker_connections = 1000 # 適用于異步工作模式
# Keep-Alive時間夭苗,連接存活時間
keepalive = 2 # 默認2秒
# 日志配置
accesslog = '-' # 訪問日志輸出到控制臺
errorlog = '-' # 錯誤日志輸出到控制臺
# 設(shè)置日志級別,可選 "debug", "info", "warning", "error", "critical"
loglevel = 'info'
# 是否以守護進程方式運行
daemon = False # 如果為 True吆倦,則表示以守護進程的方式運行
# PID文件路徑
pidfile = '/tmp/gunicorn.pid'
運行run.sh 文件
pm2 命令列表
命令 | 作用 |
---|---|
pm2 ls | 列表 PM2 啟動的所有的應(yīng)用程序 |
pm2 list | 列表 PM2 啟動的所有的應(yīng)用程序 |
pm2 start 《path》 | 啟動應(yīng)用程序 |
pm2 start《path》 --watch | 當文件變化時自動重啟應(yīng)用 |
pm2 start 《path》 --name="test" | 啟動應(yīng)用程序并命名為 "test" |
pm2 start 《path》 -i 4 | cluster mode 模式啟動4個bin/www的應(yīng)用實例听诸。4個應(yīng)用程序會自動進行負載均衡 |
pm2 scale 'www' 3 | 把名字叫www的應(yīng)用擴展到3個實例.注意要加單引號 |
pm2 show 【app-name或id】 | 顯示應(yīng)用程序的所有信息 |
pm2 monit | 顯示每個應(yīng)用程序的CPU和內(nèi)存占用情況.按鍵盤上下鍵切換 |
pm2 logs | 顯示所有應(yīng)用程序的日志 |
pm2 logs【app-name或id】 | 顯示指定應(yīng)用程序的日志 |
pm2 flush | 清空logs |
pm2 save | 保存當前應(yīng)用列表 |
pm2 resurrect | 重新加載保存的應(yīng)用列表 |
pm2 update | 保存進程,殺死PM2和恢復(fù)進程 |
pm2 serve 【path】【port】 | pm2搭建靜態(tài)文件服務(wù)器 |
pm2 stop 【app-name或id】 | 停止應(yīng)用 |
pm2 delete 【app-name或id】 | 刪除應(yīng)用 |
pm2 remove 【app-name或id】 | 刪除應(yīng)用 |