flask運行環境搭建(nginx+gunicorn)

系統: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攜程

  

Pycharm生成requirement.txt

生成requirement文件:pip freeze > requirements.txtvim

根據requirement文件安裝依賴庫:pip install -r requirement.txtapp

 

Supervisor從新加載配置啓動新的進程

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

相關文章
相關標籤/搜索