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的来安装

pip install supervisor
echo_supervisord_conf > /etc/supervisord.conf #重定向配置文件到制定目录

(chmod+x 是给以执行权限 绿色 -x未去除权限 灰色)
chmod +x /etc/supervisord.conf
改一下最后的配置文件导入

[include]
files = /etc/supervisor/*.conf
在/etc/supervisor创建flask.conf

[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的虚拟目录下执行
---------------------

查看gunicorn 进程
pstree -ap|grep gunicorn
结束主进程
kill -9 pid

如果需要gevent可以安装gevent携程

  

Pycharm生成requirement.txt

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

根据requirement文件安装依赖库:pip install -r requirement.txt

 

Supervisor重新加载配置启动新的进程

一、添加好配置文件后

二、更新新的配置到supervisord    

supervisorctl update

三、重新启动配置中的所有程序

supervisorctl reload

四、启动某个进程(program_name=你配置中写的程序名称)

supervisorctl start program_name

五、查看正在守候的进程

supervisorctl

六、停止某一进程 (program_name=你配置中写的程序名称)

pervisorctl stop program_name

七、重启某一进程 (program_name=你配置中写的程序名称)

supervisorctl restart program_name

八、停止全部进程

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

 

posted @ 2018-09-16 10:04  核电站  阅读(1050)  评论(0编辑  收藏  举报