Python 使用uwsgi+nginx部署flask專案
阿新 • • 發佈:2021-01-13
摘要1:https://www.cnblogs.com/WiseAdministrator/articles/11123271.html#_label2
摘要2:https://www.cnblogs.com/difs/p/9688035.html
摘要3:https://www.cnblogs.com/oyaisusu/p/13817081.html
專案配置
- 建立一個簡單的flask專案
from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/index")
def index( ):
return jsonify("hello world!")
if __name__ == '__main__':
app.run(host="0.0.0.0", port=8000)
- 專案結構
tree -L 1 # 顯示第一層目錄
[[email protected] datas]# tree -L 1
[[email protected] datas]# tree -L 1
.
├── app.py # flask專案
├── html # 儲存nginx靜態檔案地址
├── mypro # 專案虛擬環境
├── nginx.conf # nginx配置檔案
├── nginx.conf.bak # 備份
├── nohup.out
├── __pycache__
├── uwsgi.ini # uwsgi啟動檔案
└── uwsgi.pid
3 directories, 6 files
配置uwsgi
- 編寫uwsgi.ini
[uwsgi]
socket=172.23.72.65:8000 # 使用nginx啟動使用socket。單獨通過uwsgi啟動用 http:172.23.72.65:8000
chdir = /tmp/datas
virtualenv =/tmp/datas/mypro
wsgi-file = /tmp/datas/app.py
callable = app
#plugins = python
master = true
vacuum = true
chmod-socket = 664
processes = 3
daemonize = /var/log/mypro/uwsgi.log
pidfile = /tmp/datas/uwsgi.pid
- 通過uwsgi.ini啟動flask專案
uwsgi --ini uwsgi.ini
配置nginx
- 編輯nginx.conf檔案
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80; # 監聽80埠
server_name 172.23.72.65; # flask服務地址
location / {
uwsgi_pass 172.23.72.65:8000; # flask服務地址+埠
include uwsgi_params; # 預設uwsgi_params
root /var/nginx/html; # nginx根目錄
index index.html index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/nginx/html;
}
}
}
docker配置nginx
- 拉取nginx映象
docker pull nginx
- 啟動nginx
# 啟動容器
docker run --name nginx-uwsgi -p 80:80 -d nginx
# 獲取容器id
docker ps
- 將專案中nginx.conf配置檔案替換掉容器中預設的nginx.conf配置檔案
docker cp /tmp/datas/nginx.conf 7c9fcf3ece3e:/etc/nginx/nginx.conf # 7c9fcf3ece3e: 容器id
- 將當前容器儲存為映象
docker commit 7c9fcf3ece3e nginx-test # 生成新nginx映象nginx-test
- 啟動新映象nginx-test,重新啟動uwsgi
# 啟動nginx
docker run --name nginx-test -v /tmp/datas/html/:/var/nginx/html -p 8915:80 -d nginx-test
# 殺死uwsgi
pkill -9 uwsgi
# 重新啟動uwsgi
uwsgi --ini uwsgi.ini
- 客戶端訪問