Django部署-uwsgi配置

环境说明

  • 系统版本:centos7.1
  • python版本:3.6
  • sqlite版本:3.7
  • django版本:2.1
  • uwsgi版本:2.0.17

本文前提说明:html

  • 一、安装uwsgi以前 python3 和 Django2.1 环境已经部署完成
  • 二、已经安装过sqlite或其它数据库,进入python3可用正常引用模块 import sll
  • 三、uwsgi配置文件格式 ini、xml、json 均可,本文以经常使用的ini配置格式为例

安装配置uwsgi

详细配置参数和变量可参考博文《uwsgi配置详解》或官方配置文档python

安装

安装uwsgi[python2或未定义的请用pip命令安装]nginx

pip3 install uwsgi

查看uwsgi版本sql

uwsgi --version
2.0.17.1

为方便使用,建立uwsgi软链接数据库

ln -s /usr/local/python36/bin/uwsgi /usr/bin/uwsgi

uwsgi服务测试

建立 test.py 测试文件,该uwsgi测试文件在python3中执行不显示django

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    # return "Hello World"      # 注:python2使用
    return [b"Hello World"]     # 注:python3使用

运行 uwgi 服务测试json

uwsgi --http :8001 --wsgi-file test.py

【结果】centos

输入 http://IP:8001 页面显示 Hello World 为服务正常运行

==备注说明:因部署环境版本不一样可能输出不了 Hello World 但服务能够正常运行,访问无报错信息便可。此服务测试仅作参考==app


配置 uwsgi

具体配置参数可参考官方文档或博文《UWSGI配置详解》socket

uwsgi.ini配置

==ini方法是较经常使用的配置方式==

建立 uwsgi.ini 配置文件,通常存放在在django项目下

[uwsgi]
#自定义变量
projectname = MyDjango
base = /www/DjangoProject/MyDjango/
# 启动uwsgi的用户名和用户组
uid = www
gid = www
# 个人项目目录
chdir = %(base)
# 指定项目的application
module = %(projectname).wsgi:application
# 进程个数
workers = 5
# 启用主进程
master = true
# 自动移除unix Socket和pid文件当服务中止的时候
vacuum = true
# 序列化接受的内容,若是可能的话
thunder-lock = true
# 启用线程
enable-threads = true
# 设置自中断时间
harakiri = 30 
# 设置缓冲  
post-buffering = 4096
#pid文件保存路径
pidfile = /tmp/uwsgi.pid
# 设置日志目录
daemonize = /tmp/uwsgi.log
# 指定sock的文件路径,能够用端口或sock文件
#socket = 192.168.88.20:8099
socket = /tmp/uwsgi.sock

变动项目setting配置

setting

DEBUG = False

ALLOWED_HOSTS = ['www.test.com','127.0.0.1','192.168.88.88','localhost']
或
ALLOWED_HOSTS = ['*']

配置nginx

添加nginx虚拟主机配置

==注意:alias路径要和项目setting的STATICFILES_DIRS路径设置保持一致==

server {
    listen 80;    
    server_name www.test.com;
        charset utf-8;
    location / { 
        include uwsgi_params;
        include mime.types; 
        uwsgi_pass unix:/tmp/uwsgi.sock;
    }   
    location /static/ {
        alias /www/DjangoProject/MyDjango/APP/templates/;
    }   
    error_log /www/wwwlogs/www.test.com.error.log;
    access_log  /www/wwwlogs/www.test.com.access.log;
}

运行uwsgi服务

配置完成后启动服务加载配置

uwsgi --ini uwsgi.ini

重载uwsgi配置文件

uwsgi --reload /tmp/uwsgi.pid

中止uwsgi服务

uwsgi --stop /tmp/uwsgi.pid

若使用stop不能彻底中止进程能够用kill循环强行结束

for i in `ps axu |grep -vi 'grep'| grep "uwsgi" | awk '{print $2}'`;do kill -9 $i;done
相关文章
相关标签/搜索