Nginx + uwsgi + Django 安装配置

一、安装Nginx uwsgi Django

安装tengine

yum install pcre-devel -y wget http://tengine.taobao.org/download/tengine-2.1.1.tar.gztar xf tengine-2.1.1.tar.gz
cd tengine-2.1.1
./configure
make
make installl

#安装位置默认在/usr/local/nginx

安装Django

wget https://www.djangoproject.com/m/releases/1.4/Django-1.4.22.tar.gz
tar xf Django-1.4.22.tar.gz
cd Django-1.4.22
python setup.py install

安装uwsgi

pip install uwsgi

二、配置

1、测试uwsgi代理功能

测试文件test.py

#!/usr/bin/env python
#coding:utf8def application(env, start_response):start_response('200 OK', [('Content-Type','text/html')])return ["Hello World"]

执行命令:

uwsgi --http :8000 --wsgi-file test.py

在浏览器中访问,http://localhost:8000 如果出现Hello World 则说明uwsgi代理正常工作

2、测试uwsgi 启动django项目

创建项目:

# django-admin startproject myapp

在myapp/myapp/有一个wsgi.py文件

执行命令:

# cd myapp

# uwsgi --http :8000 --wsgi-file myapp/wsgi

在浏览器中访问http://localhost:8000

如果网页正常则一切顺利。。。。。。

说明:从客户商到 uWSGI 再到 Django 是正常的,uwsgi可以正常启动django项目

3、配置nginx + uwsgi + django

首先配置使用http的方式:

编辑配置文件/usr/local/nginx/conf/nginx.conf

内容如下:

user  nginx; #使用nginx用户worker_processes  2;events {use epoll;worker_connections  65535;}http {include       mime.types;default_type  application/octet-stream;sendfile        on;tcp_nopush     on;keepalive_timeout  65;gzip  on;upstream django {server 127.0.0.1:8001;}server {listen       80;server_name  localhost;client_max_body_size 75M;location / {uwsgi_pass django;include uwsgi_params;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}}    

执行命令:

uwsgi --http :8001 --wsgi-file myapp/wsgi

使用浏览器访问http://localhost 应该用正常访问,出现以下图片:

用UNIX socket取代tcp port

修改nginx.confupstream django {#server 127.0.0.1:8001;server unix:///test/myapp.sock;}

来创建/test这个目录

mkdir /test

chown nginx:nginx /test #如果不修改用户权限,nginx无法访问此socket 无法实现代理

会报如下错误:

connect() to unix:///test/myapp.sock failed (13: Permission denied)

启动:

uwsgi --socket /test/myapp.sock --wsgi-file myapp.wsgi

到此nginx+uwsgi+django已经初步实现了,下面来为uwsgi设置一个配置文件

4、配置myapp_uwsgi.ini

在Django项目目录下创建myapp_uwsgi.ini 内容如下:

[uwsgi]
uid = nginx  #使用nginx用户和组
gid = nginx
chdir = /usr/local/myapp #指定项目目录
module = myapp.wsgi #加载myapp/wsgi.py这个模块
master = true  #启动主进程。
processes = 2 #启动2个工作进程
listen = 120 #设置socket的监听队列大小(默认:100)
socket = /test/myapp.sock #指定socket文件
pidfile = /var/run/uwsgi.pid #指定pid文件
vacuum = true #当服务器退出的时候自动删除unix socket文件和pid文件。
enable-threads = true #允许用内嵌的语言启动线程。这将允许你在app程序中产生一个子线程
buffer-size = 32768 #设置用于uwsgi包解析的内部缓存区大小为64k。默认是4k。reload-mercy = 8 #设置在平滑的重启(直到接收到的请求处理完才重启)一个工作子进程中,等待这个工作结束的最长秒数。这个配置会使在平滑地重启工作子进程中,如果工作进程结束时间超过了8秒就会被强行结束(忽略之前已经接收到的请求而直接结束)
max-requests = 5000 #为每个工作进程设置请求数的上限。当一个工作进程处理的请求数达到这个值,那么该工作进程就会被回收重用(重启)。你可以使用这个选项来默默地对抗内存泄漏
limit-as = 256 #通过使用POSIX/UNIX的setrlimit()函数来限制每个uWSGI进程的虚拟内存使用数。这个配置会限制uWSGI的进程占用虚拟内存不超过256M。如果虚拟内存已经达到256M,并继续申请虚拟内存则会使程序报内存错误,本次的http请求将返回500错误。
harakiri = 60 #一个请求花费的时间超过了这个harakiri超时时间,那么这个请求都会被丢弃,并且当前处理这个请求的工作进程会被回收再利用(即重启)
daemonize = /var/log/myapp_uwsgi.log # 使进程在后台运行,并将日志打到指定的日志文件或者udp服务器

启动:

uwsgi --ini myapp_uwsgi.ini

测试是否正常,如果不正常,可以查看日志,排错。

到此Nginx  +  Uwsgi + Django配置完成 ,并正常使用。整个过程走了很坑,找了很文章和资料,uwsgi还有很多选项,参考了网友的文章

参考链接:

http://www.jianshu.com/p/e6ff4a28ab5a

http://heipark.iteye.com/blog/1847421

转载于:https://blog.51cto.com/zhou123/1688434

Nginx+UWSGI+Django配置全过程相关推荐

  1. Nginx +uwsgi+django配置

    Nginx+uwsgi+django配置 nginx配置 nginx.conf 一般位于linux系统的 /etx/nginx/ 目录下 upstream django {server unix:// ...

  2. 微信抢票环境配置——nginx + uwsgi + django配置服务器

    微信抢票环境配置--nginx + uwsgi + django配置服务器 1 uwsgi配置 2 http协议(80端口)下的nginx配置 1 uwsgi配置 安装uwsgi pip3 insta ...

  3. nginx+uwsgi+django配置文档

    一.python: 1.yum 升级Python wget http://li.nux.ro/download/nux/dextop/el6/i386/nux-dextop-release-0-2.e ...

  4. 微信小程序nginx+uwsgi+django配置的域名问题

    域名问题的解决 (1)微信小程序必须有一个独立的域名,如www.123.com,将这个域名与后端服务器绑定后,前端通过urls域名与后端进行通信[注意:urls处在实际应用时只能是域名,不能是ip地址 ...

  5. 如何配置nginx+uwsgi+django?(知乎上面的看着不错)

    作者:知乎用户 链接:https://www.zhihu.com/question/27295854/answer/36365005 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  6. Ubuntu Nginx uwsgi django 初试

    /*************************************************************************************** Ubuntu Ngin ...

  7. nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求) 基于wsgi运行的框架 ...

  8. Nginx uWsgi Django环境搭建

    2019独角兽企业重金招聘Python工程师标准>>> 由于一个监控项目(使用django开发)交接到所在项目组,需要了解python的web开发和环境搭建. 这里记录环境的搭建流程 ...

  9. Centos 6.5部署nginx+uwsgi+django

    Centos 6.5部署nginx+uwsgi+django 一.安装python3,系统默认是python2.6 1.安装依赖软件 yum -y install sqlite-devel yum - ...

最新文章

  1. 小学三年级上册计算机计划书,小学三年级班主任工作计划书
  2. 二数和,三数和,四数和的优化总结
  3. 深圳python指南_深圳Pythonlevel7
  4. 第十届“泰迪杯”挑战赛B题,获国家一等奖,提名国特,电力负荷预测及突变点检测分析论文、思路、程序分享
  5. 2022年中级通信工程师的考试资料,考试延期快快点刷题
  6. Android Trace View使用
  7. matlab简单函数画图例题,Matlab(十) 简单的函数画图
  8. zemax设置 像方远心_ZEMAX|如何翻转整个光学系统
  9. 使用Mousetrap处理键盘快捷键(keypress.js和jQuery.hotkeys.js的使用)
  10. python判断闰年_python如何判断闰年
  11. ROS学习笔记(2)——ROS通信机制
  12. SP603 OPPO A59 主观体验功耗对比
  13. 关于在控制面板上软件卸载失败的问题
  14. unipush+java+个推实现app消息推送
  15. paper学习笔记 - PLE
  16. 过勇 清华计算机系,16位清华学霸的简历—比你牛的人还比你努力,膝盖已跪碎...
  17. (〇)SpringCloud之SpringCloud是什么
  18. 百度统计代码怎么开通,百度统计代码如何获取?怎么在网站上添加百度统计代码?
  19. 软件外包的五点管理技巧
  20. 还是大家发生东莞十多个

热门文章

  1. AS 4.7安装yum
  2. Java volatile 的测试(Java代码实战-004)
  3. TensorFlow 官方文档中文版发布啦(持续维护)
  4. Dart 2为移动开发做出改进
  5. 用原生 js jquery 实现知乎收起答案功能
  6. windows下编译及使用libevent
  7. Winsock—I/O模型之选择模型(一)
  8. oracle Database 10g后:闪回表
  9. 布加迪、劳斯莱斯和宾利零售商开始接受BTC和BCH付款
  10. (原創) 如何正確的使用迴圈(使用for_each)? (C/C++) (STL) (template)