Nginx+uWSGI+Supervisor配置

Posted xb21

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx+uWSGI+Supervisor配置相关的知识,希望对你有一定的参考价值。

系统是Ubuntu16

nginx

  1. 安装nginx
sudo apt-get install nginx 
  1. nginx的操作
sudo service nginx start
sudo service nginx stop
sudo service nginx restart
  1. 测试nginx是否能用

在浏览器输入服务器的ip地址,出现nginx欢迎界面,说明启动成功

  1. 配置nginx

默认配置文件是/etc/nginx里的nginx.conf,不用管
/etc/nginx/conf.d下添加一个新的配置文件

cd /etc/nginx/conf.d
nano bbs_nginx.conf

编辑内容如下

# bbs 是项目名
upstream bbs {
    # 指向项目目录下的 socket 文件
    # 这个文件在运行的时候会自动生成
    server unix:///home/bbs/bbs.sock; 
}

server {
    listen      80;
    server_name 本机ip或域名;
    charset     utf-8;

    # 最大的上传大小
    client_max_body_size 75M;

    location / {
        # 指定访问哪个 upstream
        uwsgi_pass  bbs;
        # 从 /etc/nginx 下复制一份 uwsgi_params 到项目目录下
        # 可能要先安装 uwsgi 才会有这个文件
        include     /home/bbs/uwsgi_params;
    }
}
  1. 写完配置文件后,测试是否正确
sudo service nginx configtest

uWSGI

  1. 安装uwsgi

注意要用pip3来装而不是pip,不然会报no module named site的错误
uwsgi绝对是我在部署的时候碰到过的最恶心的坑

sudo apt-get install libpcre3 libpcre3-dev
sudo pip3 install uwsgi
  1. 配置uwsgi

在项目目录下新建一个配置文件

cd /home/bbs
nano bbs_uwsgi.ini

编辑内容如下

[uwsgi]
# 目录的路径
chdir           = /home/bbs
# 项目的虚拟环境路径
home            = /home/venv/py3
# 模块,这个没搞懂,写启动文件的名字好了
module          = wsgi
master          = true
processes       = 8
# socket 文件路径,和上面 nginx 指定的是一个东西
socket          = /home/bbs/bbs.sock
# 指定需要启动的文件
wsgi-file       = /home/bbs/wsgi.py
# 启动文件里 flask 实例的名称
callable        = app
chmod-socket    = 666
  1. 通过uwsgi拉起项目

因为配置是和nginx相关的,所以要先启动nginx

sudo service nginx start

再通过配置文件启动uwsgi

uwsgi --ini bbs_uwsgi.ini

在浏览器里访问ip地址,应该就有结果了

Supervisor

  1. 安装supervisor
sudo pip install supervisor
  1. 配置supervisor

在项目目录下新建一个配置文件

cd /home/bbs
nano bbs_supervisor.conf

编辑内容如下

# supervisor 的程序名称
[program:app]
# supervisor 执行的命令
command=uwsgi --ini bbs_uwsgi.ini
# 项目的目录
directory = /home/bbs
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
# 输出的 log 文件位置,要新建 log 文件
stdout_logfile=/home/bbs/log/supervisord.log
# 输出的错误文件位置
stderr_logfile=/home/bbs/log/supervisord.err

[supervisord]
loglevel=debug

# 使用 supervisorctl 的配置
[supervisorctl]
serverurl = http://127.0.0.1:9001
username = admin
password = 123

[inet_http_server]
port = :9001
username = admin
password = 123

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
  1. 使用supervisor运行uwsgi
supervisord -c bbs_supervisor.conf
  1. 使用supervisorctl管理supervisord
supervisorctl -c bbs_supervisor.conf

常用命令

> status    # 查看状态
> start program_name    # 启动程序
> restart program_name    # 重新启动程序
> stop program_name    # 停止程序
> reload    # 重新加载配置文件
> quit    # 退出当前的客户端

status能查看程序的状态

文档:
http://liyangliang.me/posts/2015/06/using-supervisor/




以上是关于Nginx+uWSGI+Supervisor配置的主要内容,如果未能解决你的问题,请参考以下文章

使用supervisor管理nginx和uwsgi部署django项目

08 nginx+uWSGI+django+virtualenv+supervisor发布web服务器

nginx+uWSGI+django+virtualenv+supervisor发布web服务器

Django 部署 uwsgi + nginx + supervisor

云计算使用supervisor管理Docker多进程-ntpd+uwsgi+nginx示例最佳实践

CentOS7下python3+Flask+uWSGI+Nginx+Supervisor环境搭建