Nginx+uWSGI 入门
Nginx+uWSGI 入门
行者深蓝 发表于4年前
Nginx+uWSGI 入门
  • 发表于 4年前
  • 阅读 8643
  • 收藏 136
  • 点赞 10
  • 评论 12

腾讯云 学生专属云服务套餐 10元起购>>>   

摘要: 介绍 Nginx+uWSGI 的基础

Nginx+uWSGI 入门

开始

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

      ubuntu:  #apt-get install uwsgi-plugin-python nginx
      

简要介绍一下:

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

出错试验

从一个 uwsgi 出错试验开始:

  • 创建 hello.py
      def application(env, start_response):
          start_response('200 OK', [('Content-Type','text/html')])
          return ["Hello World"]
      
  • 开启一个uwsgi 守护进程
      /usr/bin/uwsgi_python -s 127.0.0.1:9090 --file hello.py --daemonize uwsgi.log
      

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

  • 出错信息
      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
      ...
      

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

  • nginx-cgi 配置

      server {
                  listen       80;
                  server_name  127.0.0.1;
                  location /cgi {
                          include uwsgi_params;
                          uwsgi_pass 127.0.0.1:8000;
                  }
          } 
      
  • 重启服务 /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,浏览器将最终的结果展现给用户。

参考

共有 人打赏支持
粉丝 31
博文 64
码字总数 56429
评论 (12)
首席安全砖家
Django+uwsgi + nginx 的 飘过
拜仁慕尼黑
这也能首页?
KimiNomaka
gunicorn 飘过
doomzhou
编辑fake B
lanybass

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

这也能首页?

+1
我不叫大脸猫

引用来自“lanybass”的评论

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

这也能首页?

+1

+1024
hackingluoluo
楼主背景很深呀~
小兵成长记
laji
W_Lu
楼主的爹是李刚吗?
orangleliu
你也多写点点啊,nginx呢。。。怎么配一点都没
行者深蓝

引用来自“orangleliu”的评论

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

我会一直更新补充的!
linkiang
uwsgi 可以直接使用它部署 python web 应用程序,不会出错啊
×
行者深蓝
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: