zoukankan      html  css  js  c++  java
  • uWSGI其三:uWSGI搭配Nginx使用

    http://www.nowamagic.net/academy/detail/1330334

    上一篇介绍了 uWSGI 来部署 Django 程序,但在在生产环境中单单只有 uWSGI 是不够的,Nginx是必不可少的工具。

    先安装 Nginx,可以参照前面的小节:使用RPM安装Nginx

    Nginx 配置

    在 nginx.conf 上加入/修改,我的 server 配置如下(一切从简……):

    01 server {
    02     listen       80;
    03     server_name  115.28.0.89;
    04     #server_name localhost;
    05  
    06     access_log /home/nowamagic/logs/access.log;
    07     error_log /home/nowamagic/logs/error.log;
    08  
    09     #root         /root/nowamagic_venv/nowamagic_pj;
    10     location / {
    11         uwsgi_pass 127.0.0.1:8077;
    12         #include uwsgi_params;
    13         include /etc/nginx/uwsgi_params;
    14         #uwsgi_pass 127.0.0.1:8077;
    15         #uwsgi_param UWSGI_SCRIPT index;
    16         #uwsgi_param UWSGI_PYHOME $document_root;
    17         #uwsgi_param UWSGI_CHDIR  $document_root;
    18    }
    19    access_log off;
    20 }

    注意保证配置里写的目录 /home/nowamagic/logs/ 和 /home/nowamagic/logs/ 存在,接下来就没啥问题了,Nginx 配置很简单。

    uWSGI 配置

    前面我们是直接使用命令行来启动 uWSGI,在实际部署环境中,我们常用的是配置文件的方式,而非命令行的方式。

    我的 Django 程序目录:/root/nowamagic_venv/nowamagic_pj/

    这里让 Nginx 采用 8077 端口与 uWSGI 通讯,请确保此端口没有被其它程序采用。

    uWSGI 支持多种配置文件格式,比如 xml,ini,json 等等都可以。

    1. xml 配置

    请确定你在上一节中的django_wsgi.py文件已经存在了。新建一个XML文件:nowamagic_pj.xml,将它放在 /root/nowamagic_venv/nowamagic_pj 目录下

    01 <uwsgi>
    02  <socket>127.0.0.1:8077</socket>
    03  <listen>80</listen>
    04  <master>true</master>
    05  <pythonpath>/root/nowamagic_venv/nowamagic_pj</pythonpath>
    06  <processes>1</processes>
    07  <logdate>true</logdate>
    08  <daemonize>/var/log/uwsgi.log</daemonize>
    09  <plugins>python</plugins>
    10 </uwsgi>

    然后执行命令:

    1 uwsgi -x /root/nowamagic_venv/nowamagic_pj/nowamagic_pj.xml
    2 or
    3 /usr/local/bin/uwsgi -x /root/nowamagic_venv/nowamagic_pj/nowamagic_pj.xml

    加载指定的xml配置文件。当使用命令行参数时,可以使用简化命令“-x”。当然也可以不简写:

    1 uwsgi --xml /etc/nowamagic.xml

    甚至如果在命令行的最后一个参数以“.xml”结尾,那么就隐含将加载该xml文件作为配置。

    1 uwsgi /etc/nowamagic.xml

    有时候因各种环境问题,-x --xml 命令识别不了,可以使用下面的 ini 配置方式:

    2. ini 配置

    01 [uwsgi]
    02 vhost = false
    03 plugins = python
    04 socket = 127.0.0.1:8077
    05 master = true
    06 enable-threads = true
    07 workers = 1
    08 wsgi-file = /root/nowamagic_venv/nowamagic_pj/nowamagic_pj/wsgi.py
    09 virtualenv = /root/nowamagic_venv
    10 chdir = /root/nowamagic_venv/nowamagic_pj

    然后执行命令:

    1 uwsgi --ini /root/nowamagic_venv/nowamagic_pj.ini&

    uwsgi 这样就启动起来了。如果无意外的话,就能在网上访问你的 Python 项目了。

    小插曲

    我在配置完 Nginx 和 uWSGI 之后,访问时显示 502 错误。查看 uWSGI 启动信息,发现这么一条:ImportError: No module named django.core.wsgi。

    然后推断,我的 CentOS 上的 Python 版本是 2.4.3,然后进入 virtualenv,执行:

    1 python
    2 <<< import django
    3 <<< from django.core.wsgi import get_wsgi_application
    4 <<<

    则没报错,因为我的虚拟环境里的 Python 版本是 2.7.5。推断成立,但是虚拟环境里的 Django 会默认调用外部环境的 Python。解决方法:在虚拟环境里 pip install django。

    OK,问题解决,一切正常。

    一些我在配置时用到的命令,省得你去搜索:

    1. 关闭 uWSGI:

    1 killall  -9 uwsgi
    2 killall -s HUP /var/www/uwsgi 
    3 killall -s HUP /usr/local/bin/uwsgi

    2. 列出端口占用情况:

    1 netstat -lpnt
  • 相关阅读:
    平衡二叉树的遍历/删除/新增/维护平衡因子
    二分查找算法(加法方式:斐波那契查找)
    Ubuntu14 配置开机自启动/关闭
    JAVA & JSON详解
    jQuery---EasyUI小案列
    jquery---基本标签
    NoSql---MongoDB基本操作
    Java框架篇---Mybatis 构建SqlSessionFactory
    Java框架篇---Mybatis 入门
    hessian入门
  • 原文地址:https://www.cnblogs.com/ymy124/p/5287464.html
Copyright © 2011-2022 走看看