当前位置: 代码迷 >> 综合 >> nginx+supervisor+gunicorn部署django2
  详细解决方案

nginx+supervisor+gunicorn部署django2

热度:60   发布时间:2024-02-20 17:07:24.0

一、gunicorn

  • gunicorn是一个python Wsgi http server,只支持在Unix系统上运行
  • 官网:https://gunicorn.org/
  • 安装:
pip install gunicorn
  • 配置:
    manage.py同级目录下,创建文件conf.py,写入如下代码:
import multipreocessingbind = '127.0.0.1:8001'
worders = multiprocessing.cpu_count() * 2
worker_class = 'gevent'

二、gunicorn部署后静态文件的调整

在项目根路由urls.py中添加如下两行代码:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
.
.
.
.
urlpatterns += staticfiles_urlpatterns()

三、Gunicorn启动服务

在/项目名/wsgi.py同级路径下,执行如下命令:

# conf.wsgi:application中的conf表示wsgi.py文件所在的目录名
gunicorn --config=conf.py conf.wsgi:application

四、利用supervisor做服务进程管理

  • Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启
  • 官网:http://www.supervisord.org/
  • 安装:
pip install supervisor
  • 安装好后在/etc/会生成一个supervisord.conf文件及一个supervisord.d文件目录,如果没有生成,执行以下命令来生成配置文件和文件夹:
echo supervisord.conf > /etc/supervisord.conf
mkdir /etc/supervisord.d/

五、书写supervisor配置文件

  • 创建文件/etc/supervisord.d/muke_video.conf,写入如下配置:
# 项目名称
[program:muke_video] 
# 执行目录地址,根据自己的项目路径而定
direcotry=/Users/zhangdewei/muke/python/lessoins/lession8/muke_video_test/video
# 执行命令,注意要找到虚拟环境下的 gunicorn。根据自己的虚拟环境路径而定
command=/Users/zhangdewei/muke/python/django/env/bin/gunicorn --config=conf.py config.wsgi:application
# 自动启动
autostart=true
# 自动重启
autorestart=true
# 启动时停滞 1 秒后才启动
startsecs=1
# 启动 supervisor 进程数量
numprocs=1
# 错误日志地址
stderr_logfile=/Users/zhangdewei/muke/python/django/lessions/lession8/err-web.log
# 输出日志地址
stdout_logfile=/Users/zhangdewei/muke/python/django/lessions/lession8/out-web.log
# 关闭服务时,如果有组的概念,可以一起关闭
stopasgroup=true
# 如果进程有很多子进程或线程,下面命令可以‘杀’掉
# 如果不设置,一些子进程会‘杀’不掉,变成‘僵尸’进程
killasgroup=true

六、启动supervisor

supervisord -c /etc/supervisord.conf

七、查看supervisor服务状态

  • supervisorctl --> 进入控制台
    进入目录下/etc/supervisord.d/,输入命令:supervisorctl:
    在这里插入图片描述

  • 通过status查看服务状态,通过 restart/stop/start muke_video对服务重启,关闭和开启。

八、Nginx反向代理gunicorn服务

  • Nginx是一个高性能的静态服务器,支持负载均衡,多进程,多线程,数据压缩,日志监控,限流等多种功能。是目前比较主流的服务器。
  • 官网:http://nginx.org/en/download.html
  • 各个平台下的安装:

mac

brew install nginx

ubuntu

apt-get install nginx

redhat & centos

yum install nginx

window:看上边的官网地址

九、Nginx配置 django的方法

  • 每个路径可能都不一样,找到nginx配置路径,/usr/local/nginx/conf/nignx.conf
    在这里插入图片描述
    修改其中的http下的server里的内容:
server {
    listen	8080;location / {
    service_name www.yourdomain.com;client_max_body_size 3M;proxy_pass http://127.0.0.1:8001;}
}

十、nginx的启动

如果是自动安装,nginx会被自动启动,当书写好conf文件之后,进行重启:

./nginx -s reload

如果nginx初始并没有启动,找到nginx执行命令后,执行下面命令,即可启动。:

./nginx

查看nginx是否启动:

ps aux | grep nginx