Django+uwsgi+sqlite部署配置

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

环境说明

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

本文前提说明:

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

安装配置uwsgi

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

安装

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

pip3 install uwsgi

查看uwsgi版本

uwsgi --version
2.0.17.1

为方便使用,创建uwsgi软连接

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

uwsgi服务测试

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

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

运行 uwgi 服务测试

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

【结果】

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

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


配置 uwsgi

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

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虚拟主机配置

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

转载于:https://my.oschina.net/zhaojunhui/blog/3007625

你可能感兴趣的:(Django+uwsgi+sqlite部署配置)