1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > nginx + gunicorn + flask + supervisor项目部署

nginx + gunicorn + flask + supervisor项目部署

时间:2021-11-10 19:46:57

相关推荐

nginx + gunicorn + flask + supervisor项目部署

第一步:使用gunicorn代理flask项目

(1)方式一:直接在终端指定配置信息

gunicorn -w 4 -b 127.0.0.1:5000 -D --access-logfile ./logs/log manage:app

-w:指定进程数,一般为(服务器内核数)*2+1,-b:绑定端口号-D:以守护进程在后台运行--access-logfile:指定日志文件(logs需手动创建:当前目录(manage.py启动文件所在目)下的logs文件夹下的log文件)

(2)方式二:通过配置文件指定配置信息

新建配置文件gunicorn.conf

vim /etc/gunicorn.conf

编辑配置信息

# coding: utf-8 # worker进程的工作方式。 有 sync, eventlet, gevent, tornado, gthread, 缺省值syncworker_class = "gevent"# 并行工作进程数workers = 4# worker_class是gthread模式时可用# threads = 4# 客户端最大同时连接数。只适用于eventlet, gevent工作方式。worker_connections = 1000# 监听内网端口5000【按需要更改】bind = '127.0.0.1:5000'# 设置守护进程【关闭连接时,程序仍在运行】daemon = True# 设置超时时间120s,默认为30s。按自己的需求进行设置timeout = 120# 设置访问日志和错误信息日志路径accesslog = './logs/gunicorn.acess.log'errorlog = './logs/gunicorn.error.log'pidfile = './logs/gunicorn.pid'

启动

gunicorn manage:app -c /etc/gunicorn.conf

第二步:使用nginx反向代理

(1)打开配置文件

sudo vim /etc/nginx/sites-enabled/default

(2)配置信息如下

server {listen 80;server_name 192.168.183.135; # nginx所在服务器真实iplocation / {proxy_pass http://127.0.0.1:5000;proxy_redirect off;proxy_set_header Host$host;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}

第三步:使用supervisor管理进程

(1)安装supervisor

sudo apt-get install supervisor

(2)创建目录,用于存放supervisor配置文件

sudo mkdir -p /etc/supervisor/

(3)导入supervisor配置文件

sudo -iecho_supervisord_conf > /etc/supervisor/supervisord.conf

(4)修改supervisord.conf配置文件

sudo vim supervisord.conf[unix_http_server]file=/var/run/supervisor.sock[inet_http_server] ; HTTP 服务器,提供 web 管理界面port=127.0.0.1:9001 [supervisorctl]serverurl=unix:///var/run//supervisor.sock [include];单个程序files = /etc/supervisor/conf.d/*.conf

(5)递归创建supervisor.sock文件,并修改权限

sudo touch /var/run/supervisor.sock sudo chmod 777 /var/run/supervisor.sock

(6)创建管理我们程序的文件,名字随意,必须以.conf结尾

sudo vim /etc/supervisor/conf.d/myapp.conf

(7)信息如下

[program:myapp]; 启动项目时运行的命令command=gunicorn manage:app -c /etc/gunicorn.conf; 项目绝对路径directory=/home/ubantu/myproject/kesheer/kesheer; 虚拟环境路径enviroment=PATH="/home/ubantu/.virtualenvs/ihome/bin"; 是否自动启动autostart=true; 程序意外退出是否自动重启autorestart=true; 自动重启间隔startsecs=10; 杀进程的信号stopsignal=QUIT; 向进程发出stopsignal后等待OS向supervisord返回SIGCHILD 的时间。若超时则supervisord将使用SIGKILL杀进程stopwaitsecs=60; 子进程的stdout的日志路径 输出日志文件stdout_logfile= /home/ubantu/myproject/kesheer/kesheer/logs/supervisor.out.log; 错误日志文件 当redirect_stderr=true。这个就不用stderr_logfile= /home/ubantu/myproject/kesheer/kesheer/logs/supervisor.err.log

(8)启动项目

sudo supervisord -c conf/supervisord.conf

错误

Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.For help, use /usr/bin/supervisord -h

解决

sudo unlink /var/run/supervisor.sock或sudo unlink /tmp/supervisor.sock

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。