CentOS7中配置基於Nginx+Supervisor+Gunicorn的Flask項目


 配置Nginx

1、安裝nginx

yum install nginx  

 

2、安裝好后在/etc/nginx/default.d中添加location的配置,並指向8001端口,以后Gunicorn會監聽8001端口

location / {
   proxy_pass http://127.0.0.1:8001
}  

 

3、配置好后重新載入nginx配置

systemctl reload nginx.service  

 

 安裝Python

CentOS自帶Python2.7,如果使用Python3,需要單獨安裝 

參考博客:http://www.cnblogs.com/python-gm/p/7728325.html  

 

 安裝配置Gunicorn

Gunicorn使用pip install gunicorn安裝,注意需要在虛擬環境中使用pip安裝,這樣才對應虛擬環境中的Python版本。 

pip3 install gunicorn  

 

 安裝配置Supervisor

1、使用yum可以直接安裝Supervisor

yum install supervisor

 

2、安裝后,在/etc/supervisord.d中建立配置文件xxx.ini,內容如下

[program:Server]
directory = /home/evescn/server
command = /usr/local/python34/bin/gunicorn manage:app -b 0.0.0.0:8001 -w=4 --worker-class=gevent
#autostart = True
user = evescn  

 

3、Server是項目名稱,注意command中最好都寫全路徑,以區別系統環境和項目虛擬環境。完成后啟動supervisord,使配置生效

supervisord -c /etc/supervisord.conf  

 

4、常見的gunicorn配置

[program:usercenter]
directory = /home/leon/projects/usercenter ; 程序的啟動目錄
command = gunicorn -c gunicorn.py wsgi:app  ; 啟動命令,可以看出與手動在命令行啟動的命令是一樣的
autostart = true     ; 在 supervisord 啟動的時候也自動啟動
startsecs = 5        ; 啟動 5 秒后沒有異常退出,就當作已經正常啟動了
autorestart = true   ; 程序異常退出后自動重啟
startretries = 3     ; 啟動失敗自動重試次數,默認是 3
user = leon          ; 用哪個用戶啟動
redirect_stderr = true  ; 把 stderr 重定向到 stdout,默認 false
stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默認 50MB
stdout_logfile_backups = 20     ; stdout 日志文件備份數
; stdout 日志文件,需要注意當指定目錄不存在時無法正常啟動,所以需要手動創建目錄(supervisord 會自動創建日志文件)
stdout_logfile = /data/logs/usercenter_stdout.log
 
; 可以通過 environment 來添加需要的環境變量,一種常見的用法是修改 PYTHONPATH
; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere  

 

 補充:Supervicor使用

1、啟動supervisor

supervisord -c /etc/supervisord.conf  

2、supervisorctl的使用

supervisorctl status       # 查詢進程狀態
supervisorctl stop node    # 關閉 [program:node] 的進程
supervisorctl start node   # 啟動 [program:node] 的進程
supervisorctl restart node # 重啟 [program:node] 的進程
supervisorctl stop all     # 關閉所有進程
supervisorctl start all    # 啟動所有進程
supervisorctl reload       # 重新讀取配置文件,讀取有更新(增加)的配置文件,不會啟動新添加的程序
supervisorctl update       # 重啟配置文件修改過的程序  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM