uWSGI + Nginx配置Django项目(一)

uWSGI是一个web服务器, 它实现了uwsgi、wsgi、http协议. uwsgi协议是一个uWSGI服务器自有的协议.django框架自带了wsgiref服务器,为什么我们需要这样的一个服务器呢? wsgiref定位是测试服务器,那么性能,稳定性不能保证。


现在我们将wsgi服务器改成uWSGI web服务器:


安装uWSGI 服务器:

pip install uwsgi

创建python web项目, 目录结构为:

uWSGI_test/
├── wsgi.ini
├── wsgi.log
└── wsgi.py

我们的项目包含两个文件,一个是wsgi.py文件,一个是uWSGI服务器的配置文件wsgi.ini, 这两个文件名都可自定义设置.

其中wsgi.py文件内容如下:

def application(env, start_response):
    start_response('200 ok', [('Content-Type', 'text/html')])
    return [b'hello uWSGI!']

当客户端(浏览器)发来请求,uWSGI服务器会从我们指定的wsgi入口模块中搜索application函数来执行,函数需要两个参数,env当前请求的环境变量,start_response为返回的响应头信息.

我们下面紧接着对wsgi.ini配置文件进行配置:

[uwsgi]
# 配置服务器的监听ip和端口
http = 127.0.0.1:3309

# 配置项目目录
chdir = /home/administrator/PyPros/uWSGI_test

# 配置入口模块(/home/administrator/PyPros/uWSGI_test/wsgi.py模块下的application函数为入口函数)
module = wsgi:application

# 开启master, 将会多开一个管理进程, 管理其他服务进程
master = True

# 服务器开启的进程数量
processes = 2

# 服务器进程开启的线程数量
threads = 4

# 以守护进程方式提供服, 输出信息将会打印到log中
# daemonize = wsgi.log

# 退出的时候清空环境变量
vacuum = true
# 进程pid
pidfile = uwsgi.pid

启动uWSGI, 并指定加载那个配置文件.

uwsgi --ini wsgi.ini
停止uWSGI, 如果你的配置文件中并没有pidfile = uwssgi.pid配置选项,那么需要使用下面方式停止服务器:

killall -s INT /django_environ/bin/uwsgi
如果您指定了pidfile配置选项,那么可用下面方式停止服务器:

uwsgi --stop uwsgi.pid

运行服务器之后

(django_environ) administrator@ubuntu:~/PyPros/uWSGI_test$ uwsgi --ini wsgi.ini 
[uWSGI] getting INI configuration from wsgi.ini
*** Starting uWSGI 2.0.15 (64bit) on [Mon Sep 18 10:40:31 2017] ***
compiled with version: 5.4.0 20160609 on 17 September 2017 16:52:52
os: Linux-4.4.0-93-generic #116-Ubuntu SMP Fri Aug 11 21:17:51 UTC 2017
nodename: ubuntu
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 2
current working directory: /home/administrator/PyPros/uWSGI_test
writing pidfile to uwsgi.pid
detected binary path: /home/administrator/.virtualenvs/django_environ/bin/uwsgi
chdir() to /home/administrator/PyPros/uWSGI_test
your processes number limit is 19128
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
probably another instance of uWSGI is running on the same address (127.0.0.1:3309).
bind(): Address already in use [core/socket.c line 769]
VACUUM: pidfile removed.


在浏览器中输入 localhost:3309






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值