(小编的环境为python3.6,django==2.1.2)
Gunicorn是一个unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server(即一种服务器)。和大多数的web框架兼容,并具有实现简单,轻量级,高性能等特点。
Nginx是一个高性能的静态服务器,支持负载均衡,多进程,多线程,数据压缩,日志监控,限流等多种功能。是目前比较主流的服务器
1. gunicorn是一个python Wsgi http server, 只支持Unix系统上(Linux来源于Unix)运行
https://gunicorn.org/
pip install gunicorn
2. gunicorn基本配置方法
(在项目的根目录下创建一个conf.py文件,代码如下:)
import multiprocessing
bind = '127.0.0.1:8001'
workers = multiprocessing.cpu_count() * 2
worker_class = 'gevent' (配置前先安装 pip install gevent)
3. Gunicorn部署后静态文件的调整(即需对项目根目录下的urls.py文件修改)
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.urls import path, include
from app.client import urls as client_urls
from app.dashboard import urls as dashboard_urls
urlpatterns = [
path('client/', include(client_urls)),
path('dashboard/', include(dashboard_urls)),
]
urlpatterns += staticfiles_urlpatterns()
3. Gunicorn启动服务
gunicorn --config=conf.py config.wsgi:application
4. 利用supervisor做服务器进程管理
supervisor是用python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启
http://www.supervisord.org/
pip install supervisor(似乎要安装在非虚拟环境外)
安装好后在/etc/会生成一个supervisord.conf文件及一个supervisord.d文件目录,默认是没有生成配置文件的, 可以通过以下命令生成配置文件,执行以下命令来生成配置文件及文件夹:
echo_supervisord_conf > /etc/supervisord.conf(该命令似乎只能在root权限下使用, 小编使用sudo无效)
mkdir /etc/supervisord.d
接下来对/etc/supervisord.conf文件进行修改:
files是将某个文件导入进来,这里导入的是自己项目的supervisor配置文件
5. 配置supervisor,书写/etc/supervisord.d/*.conf所匹配到的文件代码,代码内容如下:
(注意*.conf是你自己定义的文件名称,如小编命名为muke_video.conf,这是你的supervisor配置文件,即小编的路径为/etc/supervisord.d/muke_video.conf)
[program:muke_video] # 项目名称
directory=/Users/zhangdewei/muke/python/django/lessions/lession8/muke_video_test/video
# 项目执行的目录
command=/Users/zhangdewei/muke/python/django/env/bin/gunicorn --config=conf.py config.wsgi:application
# 要执行的命令
autostart=true
autorestart=true
# 遇到程序异常、报错等情况,导致 web 应用终止时,需要保证程序可以立刻重启,继续提供服务
startsecs=1
# 1s后启动
numprocs=1
# 启动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 #默认为false
// [supervisord]
// nodaemon=true
// [supervisorctl]
6. 启动supervisor
supervisord -c /etc/supervisord.conf (运行结果如下图:)
7. 查看supervisor服务状态
supervisorctl ->进入控制台
通过status查看服务状态,通过restart/stop/start/muke_video 对服务重启,关闭和重启。
运行成功后,即可访问自己的项目:如:127.0.0.1:8001/dashboard(其中127.0.0.1:8001是由conf.py文件配置的,见步骤2,如果你的项目是在虚拟机中启动的,那么就用虚拟机中的浏览器访问自己的项目)