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       # 重启配置文件修改过的程序  
时间: 2024-08-28 13:17:12

CentOS7中配置基于Nginx+Supervisor+Gunicorn的Flask项目的相关文章

Nginx的配置文件简介及在Nginx中配置基于不同ip的虚拟主机

Nginx的配置文件简介及在Nginx中配置基于不同ip的虚拟主机: #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; defa

django+nginx+supervisor+gunicorn+gevent 网站部署

django+nginx+supervisor+gunicorn+gevent 网站部署 django,nginx,supervisor,gunicorn,gevent这几个都是在本领域大名鼎鼎的软件,下面的部署都是在ubuntu12.04里面验证成功的! 首先是安装这些软件在ubuntu下面都比较简单,nginx和supservisor的安装如下 apt-get install nginx,supervisor 在ubuntu下使用python,强烈建议安装python-dev apt-get

在CentOS7中配置网络成组(NetworkTeam)

在CentOS7中推荐网络成组的方式替代以往的网卡绑定,对于具体的操作在红帽子的白皮书中已经有详细的论述,具体可以参看https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/index.html 本人在配置网络成组(NetworkTeam)时,使用了nmtui的方式,但按照白皮书上的操作,未能成功.后来经过自己排查,结合上述白皮书中5.10.3中使用ifcfg的配

如何在 Linux 中配置基于密钥认证的 SSH

什么是基于 SSH 密钥的认证? 众所周知,Secure Shell,又称 SSH,是允许你通过无安全网络(例如 Internet)和远程系统之间安全访问/通信的加密网络协议.无论何时使用 SSH 在无安全网络上发送数据,它都会在源系统上自动地被加密,并且在目的系统上解密.SSH 提供了四种加密方式,基于密码认证,基于密钥认证,基于主机认证和键盘认证.最常用的认证方式是基于密码认证和基于密钥认证. 在基于密码认证中,你需要的仅仅是远程系统上用户的密码.如果你知道远程用户的密码,你可以使用 ssh

在CentOS7中配置网路成组(Network Team)

之前写了一篇网络成组的文章,使用的是nmtui图形界面配置,但JSON字符串输入很繁琐.因此,建议nmcli进行配置.另外,在CentOS7中推荐网络成组的方式替代以往的网卡绑定,对于具体的操作在红帽子的白皮书中已经有详细的论述,具体可以参看https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/index.html 使用nmcli工具进行配置 1. 创建网络成组

使用Nginx和uwsgi部署Flask项目

前言 之前用Flask框架开发了一个Python的Web项目,使用Nginx和uWSGI部署起来感觉挺麻烦,过程中还因为对Flask框架的不熟悉,花了好长时间才把应用完全部署起来.下面分享部署成功的相关配置以及部署Flask项目时极可能犯的一个小错误. 一. 配置 1. Flask Web项目源码 Nginx使用的版本是1.6.1,uWSGI是2.0.8,Flask是0.10.1.在Linux环境下安装好Nginx.uWSGI和Flask之后,将使用Flask框架开发的web项目源码放到Linu

在CentOS7中配置网络时常见的LSB加载失败问题

前几天,为了给OpenNebula扩展新的主机节点,对CentOS7的网络进行了配置.本以为网络配置只需要简单修改ifcfg-eth0即可,但是在重启网络服务时却遇到了一个LSB加载失败的问题(Fail to load LSB: Up and -..). 这个问题源于CentOS7对物理网卡硬件地址的要求.也就是说,在ifcfg-eth0中必须配置HWADDR这一属性,不然就会报出LSB加载错误,使得网络的配置失败.解决办法也很简单,就是将对应的网卡地址进行添加或修改. 首先,使用ip addr

docker探索-CentOS7中配置Docker的yum源并升级安装docker1.13(十)

此处使用的是CentOS7,内核版本为 [[email protected] ~]# uname -r 3.10.0-327.el7.x86_64 该版本下,配置了yum的源为阿里的镜像源,具体的配置方法可以参见阿里镜像源配置方法 为了方便的安装升级Docker,同时按照Docker官方文档中的方式,配置Docker的yum源,具体参见CentOS docker yum 源配置方法 配置好yum源之后,可以通过yum的list命令,获取可以安装的docker版本 [[email protecte

CentOS7中yum安装Nginx

添加yum源: [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 安装: yum -y install nginx 启动服务: /bin/systemctl start  nginx.service 设置开机自动启动: ln -s '/usr/lib/systemd/system/nginx.service' '/etc/syst