系統:CentOS7.2(阿里雲ESC) 1。python版本,使用的是默認的python2.7(或者先安裝python3) 2。安裝nginx,yum install -y nginx 3。安裝virtualenv,yum install -y python-virtualenv 4。建立虛擬環境,virtualenv venv (venv爲虛擬環境名稱,可自行加上目錄) 5。激活虛擬環境,source venv /bin/activate 6。在虛擬環境中安裝gunicorn和flask,(venv) $ pipinstall gunicorn (venv) $ pip install flask 7。在目錄/var/www中建立文件flask.py from flask import Flask def create_app(): app = Flask(__name__) return app app = create_app() if __name__ == '__main__': app.run() @app.route('/') def index(): return '<html>Hello world!</html>' 8。配置nginx,vim /etc/nginx/nginx.conf
頭部:user root(ubuntu)
記得設置權限chmod 777 添加配置 server{ listen 80; server_name 域名;
root /root/www/xxxx; location / { proxy_pass http://域名:801; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} } service nginx restart 9。啓動gunicorn(在py目錄) gunicorn -w 4 -b 0.0.0.0:801 flask:app
3.安裝supervisor
這裏退出py3的虛擬環境,直接使用自帶的py2.75的來安裝html
pip install supervisor
echo_supervisord_conf > /etc/supervisord.conf #重定向配置文件到制定目錄python
(chmod+x 是給以執行權限 綠色 -x未去除權限 灰色)
chmod +x /etc/supervisord.conf
改一下最後的配置文件導入nginx
[include]
files = /etc/supervisor/*.conf
在/etc/supervisor建立flask.confflask
[program:wsgi]
directory = /usr/local/flask_cmdb ;命令執行目錄
command = /usr/local/ENV_CMDB/bin/python3 /usr/local/ENV_CMDB/bin/gunicorn -w 4 -b 127.0.0.1:5000 manager:app
autostart = true ;默認隨supervisord自動啓動,默認true
startsecs = 5 ; 啓動 5 秒後沒有異常退出,就看成已經正常啓動了
autorestart = true ;程序異常退出後自動重啓
startretries = 3 ; 啓動失敗自動重試次數,默認是 3
redirect_stderr = true ;重定向錯誤
stdout_logfile = /var/log/flask_supervisor.log ;這裏日誌須要手動建立不然沒法啓動
這裏重點的地方是command,運行gunicorn 是在virtualenv的虛擬目錄下執行
---------------------ubuntu
查看gunicorn 進程
pstree -ap|grep gunicorn
結束主進程
kill -9 pid
若是須要gevent能夠安裝gevent攜程
生成requirement文件:pip freeze > requirements.txtvim
根據requirement文件安裝依賴庫:pip install -r requirement.txtapp
1、添加好配置文件後python2.7
2、更新新的配置到supervisord ui
supervisorctl update
3、從新啓動配置中的全部程序阿里雲
supervisorctl reload
4、啓動某個進程(program_name=你配置中寫的程序名稱)
supervisorctl start program_name
5、查看正在守候的進程
supervisorctl
6、中止某一進程 (program_name=你配置中寫的程序名稱)
pervisorctl stop program_name
7、重啓某一進程 (program_name=你配置中寫的程序名稱)
supervisorctl restart program_name
8、中止所有進程
supervisorctl stop all
注意:顯示用stop中止掉的進程,用reload或者update都不會自動重啓。
https://www.jianshu.com/p/f8735b039c67?from=groupmessage
https://www.jianshu.com/p/40caabd91827
https://blog.csdn.net/qq850482461/article/details/78893710