文档章节

Nginx+uWSGI 入门

行者深蓝
 行者深蓝
发布于 2014/02/20 17:54
字数 619
阅读 8693
收藏 135

Nginx+uWSGI 入门

开始

  • 确保一下软件包安装被安装上:

    <pre> ubuntu: #apt-get install uwsgi-plugin-python nginx </pre>

简要介绍一下:

  1. nginx 是一个 http 服务器,与 apache、lighttpd、Microsoft IIS 等属于同类产品;
  2. uwsgi 是 http 服务器 与 python 应用程序之间进行数据交换的服务程序;

出错试验

从一个 uwsgi 出错试验开始:

  • 创建 hello.py

    <pre> def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return ["Hello World"] </pre>

  • 开启一个uwsgi 守护进程

    <pre> /usr/bin/uwsgi_python -s 127.0.0.1:9090 --file hello.py --daemonize uwsgi.log </pre>

现在,打开网络浏览器,在地址栏中输入”http://127.0.0.1:8000“并回车,这时网页中会显示“The connection was reset……"当你不断刷新浏览器,日志文件 uwsgi.log 中应当可以看到类似下面的信息

  • 出错信息

    <pre> invalid request block size: 21573 (max 4096)...skip Thu Feb 20 03:29:28 2014 - error parsing request invalid request block size: 21573 (max 4096)...skip Thu Feb 20 03:29:28 2014 - error parsing request invalid request block size: 21573 (max 4096)...skip Thu Feb 20 03:29:29 2014 - error parsing request ... </pre>

这表示,你在浏览器中提交的 http 请求被 uwsgi 给忽视了。如果你不断的刷新那个页面,终端中会不断涌出该信息。虽然我们得到的是被重置的页面,但是这足以证明 uwsgi 是一个 http 服务器。继续在/etc/nginx/sites-available/default 中添加如下配置:

  • nginx-cgi 配置

    <pre> server { listen 80; server_name 127.0.0.1; location /cgi { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; } } </pre>

  • 重启服务 /etc/init.d/nginx restart

重启nginx服务后,使用浏览器打开: 127.0.0.1/cgi 终于如愿出现久违的 Hello World ,而不是“The connection was reset..."

小结

uwsgi 实际上也是一个 http 服务器,只不过它只面向 python 网络应用程序。虽然 uwsgi 也是 http 服务器,但是却不能直接使用它部署 python web 应用程序,否则会出错。

在本文中,uwsgi 所扮演的的角色是后端 http 服务器,nginx 扮演的角色是前端 http 服务器,hello.py 是客户端应用程序。 用户从网页浏览器中发出请求,nginx 服务器收到请求后,会通过它的 uwsgi 模块将用户的请求转发给 uwsgi 服务器,uwsgi 服务器处理完毕后将结果返回给 nginx,浏览器将最终的结果展现给用户。

参考

© 著作权归作者所有

共有 人打赏支持
行者深蓝
粉丝 33
博文 60
码字总数 44624
作品 0
昌平
程序员
加载中

评论(12)

linkiang
linkiang
uwsgi 可以直接使用它部署 python web 应用程序,不会出错啊
行者深蓝
行者深蓝

引用来自“orangleliu”的评论

你也多写点点啊,nginx呢。。。怎么配一点都没

我会一直更新补充的!
orangleliu
orangleliu
你也多写点点啊,nginx呢。。。怎么配一点都没
W_Lu
W_Lu
楼主的爹是李刚吗?
魔法王者安琪拉
魔法王者安琪拉
laji
hackingluoluo
hackingluoluo
楼主背景很深呀~
我不叫大脸猫
我不叫大脸猫

引用来自“lanybass”的评论

引用来自“拜仁慕尼黑”的评论

这也能首页?

+1

+1024
lanybass
lanybass

引用来自“拜仁慕尼黑”的评论

这也能首页?

+1
doomzhou
doomzhou
编辑fake B
KimiNomaka
KimiNomaka
gunicorn 飘过
Django下自定义的模型无法编辑

我是使用Nginx+uWsgi的方式配置的Django。目前管理界面和首页都可以显示了。但我自定义的模型在管理后台却无法编辑(链接是黑色的) 我使用Django自己的服务器测试的时候,是可以编辑新的模型的...

常雨
2012/12/12
143
0
让request.is_ajax工作

request.isajax通过识别XRequestedWith是否为XMLHttpRequest来判断是否是ajax请求。在部署到nginx+uWSGI环境下,自己添加此头不能正常工作,但在Apache+moduwsgi上却工作完好。经查,在添加头...

XuYuan
2014/05/19
0
1
Django发送邮件

使用Django发送邮件的时候,用命令:python manage.py runserver 0.0.0.0:8000可以顺利发送。但是在部署环境nginx+uwsgi就无法发送成功。请问这是什么原因呢?...

叶业力
2017/07/31
18
0
在Ubuntu上使用nginx+uwsgi部署django程序后,查询数据库外键出现问题

Categoryid=req.POST['Categoryid'] log=TQuestionType.objects.filter(QusCategoryIDidexact=Categoryid) 这行代码是根据外键查询表的,使用django内置的测试服务器可以查出数据,没有问题 ...

尤佳佳
2015/10/19
122
0
请问各位高手,一个django进程执行了大量任务重启的时候,会有一些概率发生 *** uWSGI listen queue of socket "127.0.0.1:9001" (fd: 3) full !!! (101/100) ***

服务器是nginx+uwsgi部署的Django,当有大概20W请求后重启的时候,可能会出现* uWSGI listen queue of socket "127.0.0.1:9001" (fd: 3) full !!! (101/100) * 据google得答案的修改uwsgi的配...

windyer
2017/04/11
192
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Ubuntu18.04 显卡GF-940MX安装NVIDIA-390.77

解决办法: 下面就给大家一个正确的姿势在Ubuntu上安装Nvidia驱动: (a)首先去N卡官网下载自己显卡对应的驱动:www.geforce.cn/drivers (b)下载后好放在英文路径的目录下,怎么简单怎么来...

AI_SKI
今天
1
0
深夜胡思乱想

魔兽世界 最近魔兽世界出了新版本, 周末两天升到了满级,比之前的版本体验好很多,做任务不用抢怪了,不用组队打怪也是共享拾取的。技能简化了很多,哪个亮按哪个。 运维 服务器 产品 之间的...

Firxiao
今天
1
0
MySQL 8 在 Windows 下安装及使用

MySQL 8 带来了全新的体验,比如支持 NoSQL、JSON 等,拥有比 MySQL 5.7 两倍以上的性能提升。本文讲解如何在 Windows 下安装 MySQL 8,以及基本的 MySQL 用法。 下载 下载地址 https://dev....

waylau
今天
0
0
微信第三方平台 access_token is invalid or not latest

微信第三方开发平台code换session_key说的特别容易,但是我一使用就带来无穷无尽的烦恼,搞了一整天也无济于事. 现在记录一下解决问题的过程,方便后来人参考. 我遇到的这个问题搜索了整个网络也...

自由的开源
今天
3
0
openJDK之sun.misc.Unsafe类CAS底层实现

注:这篇文章参考了https://www.cnblogs.com/snowater/p/8303698.html 1.sun.misc.Unsafe中CAS方法 在sun.misc.Unsafe中CAS方法如下: compareAndSwapObject(java.lang.Object arg0, long a......

汉斯-冯-拉特
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部