日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flask部署| gunicorn、nginx部署flask项目,并用supervisor来管理进程

發布時間:2024/1/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flask部署| gunicorn、nginx部署flask项目,并用supervisor来管理进程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本科的時候做公眾號,開始提供學生教務查詢服務,后端從PHP轉到Python,無論是使用django還是flask,部署都沒PHP那么方便,每次修改程序完,都是ps ax,然后再kill,再run。emmmmmm,其實一直都知道supervisor,之前配置過幾次,都沒配成功 ,也就沒耐心好好去學一學,剛好寒假想重新學一下flask,就嘗試了一下,配置成功,順便記錄下,以便以后的使用。

Flask項目開發

emmmmmm,這里就不贅述了,我這里部署的是自己根據Flask官方文檔進行練習的項目,如果覺得還不錯,可以給個star哦
Github地址:https://github.com/LDouble/Flask-Learning

用gunicorn運行Flask項目

Flask自帶server性能等問題,沒辦法部署到生產環境,之前用的時候,官方提供了很多種方案,詳情見http://www.pythondoc.com/flask/deploying/,我是誤打誤撞選擇了gunicorn,而且覺得用起來挺舒服的。

  • 安裝gunicorn
    pip3 install gunicorn

  • 通過命令啟動程序
gunicorn --workers=2 test:app # test為模塊名,test:app,意味著我的test.py中的服務器實例化對象為app workers=2 代表2個進程 [2018-02-18 16:50:18 +0800] [4858] [INFO] Starting gunicorn 19.7.1 [2018-02-18 16:50:18 +0800] [4858] [INFO] Listening at: http://127.0.0.1:8000 (4858) #默認運行在8000端口 [2018-02-18 16:50:18 +0800] [4858] [INFO] Using worker: sync # [2018-02-18 16:50:18 +0800] [4863] [INFO] Booting worker with pid: 4863 [2018-02-18 16:50:18 +0800] [4864] [INFO] Booting worker with pid: 4864

其它更多參數以及說明參考
http://docs.gunicorn.org/en/stable/run.html#commands
http://blog.csdn.net/y472360651/article/details/78538188

  • 編寫配置文件
    那么多配置文件,我們要是全部都在命令行輸入,豈不是太麻煩了,所以我們可以通過加載配置文件來運行程序。配置文件的參數和上面提到的差不多,可以按照自己的需要選擇何時的參數即可。
import os from gevent import monkey monkey.patch_all() import multiprocessing debug = False bind = "0.0.0.0:5001" pidfile = "gunicorn.pid" logfile = "error.log" workers = multiprocessing.cpu_count()*2 + 1 worker_class = "gevent" # 異步非阻塞 reload = True # 自動重新加載 #daemon = True gunicorn -c gunc.py hello:app #運行程序

supervisor 配置管理進程

  • 安裝supervisor并生成配置文件模板
pip install supervisor #因為supervisor目前只支持py2,所以不能用pip3進行安裝 emmmmmm echo_supervisord_conf > supervisor.conf # 導出配置模板 # 然后supervisor.conf 尾部添加內容如下: [program:hello_world] ;hello_word 是自己給進程取的名,隨意 command=gunicorn -c gunc.py hello:app ; supervisor啟動命令 directory=/www/Flask-Learning/hello_world ; 項目的文件夾路徑 startsecs=0 ; 啟動時間 stopwaitsecs=0 ; 終止等待時間 autostart=false ; 是否自動啟動 autorestart=false ; 是否自動重啟 stdout_logfile=/www/log/hello.log ; log 日志 stderr_logfile=/www/log/hello.err ; 錯誤日志 # 加載配置文件并啟動supervisor supervisord -c supervisor.conf # 管理項目 supervisorctl reload :修改完配置文件后重新啟動supervisor supervisorctl status :查看supervisor監管的進程狀態 supervisorctl start 進程名 :啟動XXX進程 進程名就是你剛剛配置文件的進程名 supervisorctl stop 進程名 :停止XXX進程 supervisorctl stop all:停止全部進程,注:start、restart、stop都不會載入最新的配置文件。 supervisorctl update:根據最新的配置文件,啟動新配置
  • 開機自動啟動supervisor
# Ubuntu為例 vim /etc/rc.local #添加以下內容 supervisord -c path/supervisor.conf # path是supervisor.conf的路徑 supervisorctl start all #啟動所有的程序

Nginx實現反向代理

至于為什么要用Nginx實現反向代理,各有自己的需求,這個在知乎上也有討論,可以看看https://www.zhihu.com/question/38528616,我是因為一個服務器上有多個應用,而且期末的時候需要考慮到負載均衡。

反向代理和平常的反向代理一樣的,
vim /etc/nginx/site-enable/default

# 添加server server {listen 80;server_name hello_flask.it592.com;root /www/Flask-Learning/hello_world;location / {proxy_pass http://127.0.0.1:5001; #gunicorn運行的端口proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

部署完畢

這大概就是完整的部署過程了,我的網站地址:http://hello_flask.it592.com/api/

轉載于:https://www.cnblogs.com/xmxj0707/p/8452881.html

總結

以上是生活随笔為你收集整理的Flask部署| gunicorn、nginx部署flask项目,并用supervisor来管理进程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。