2019独角兽企业重金招聘Python工程师标准>>>
环境说明
- 系统版本: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