1.坏境准备

  1. centos6.5
  2. django项目
  3. python坏境(python3.6,)
  4. 所需的各种模块(django,uwsgi,sqlite3)具体看坏境

我的测试django项目的数据库用的是sqlite,这里只是做部署,

重点是nginx的关于Django项目+uwsgi配置文件

本次的项目:teacher.zip

安装各种坏境

1.安装sqlite3

  1. https://sqlite.org/2017/sqlite-autoconf-3180000.tar.gz
  2.  
  3. tar sqlite-autoconf-3180000.tar.gz
  4.  
  5. cd sqlite-autoconf-3180000
  6.  
  7. ./configure --prefix=/usr/local/sqlite3 && make && make install
  8.  
  9. export LD_LIBRARY_PATH=/usr/local/lib

  

2.安装python3.6

  1. 安装Python依赖包
  2. yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
  3.  
  4. linux下载python
  5. wget https://www.python.org/downloads/release/python-361/
  6.  
  7. 解压和安装软件包
  8. tar -xzvf /opt/Python-3.6.1.tgz -C /usr/local/src/ # src目录是存放源码的目录解压到src目录
  9. cd /usr/local/src/Python-3.6.1
  10. ./configure --prefix=/usr/local/python3
  11. make && make install
  12.  
  13. 添加环境变量
  14. cd /etc/profile.d/
  15. 新建一个文件python3.sh内容如下
  16. export PATH="$PATH:/usr/local/python3/bin"
  17. source ../profile # 重载文件,使其生效
  18. echo $PATH # 查看当前环境变量是否添加

  

安装django和uwsgi模块

  1. pip3 install -i http://pypi.douban.com/simple/ django --trusted-host pypi.douban.com
  2. pip3 install -i http://pypi.douban.com/simple/ uwsgi --trusted-host pypi.douban.com
  3. 默认的是用的国外的pip源比较慢,这里指定用豆瓣源

  

2.基于django和uwsgi实现访问请求

在opt下面新建一个目录,存放django项目名字叫django-project

把django项目(teacher.zip,记得解压)上传到/opt/django-project下面

使用uwsgi命令启动项目

  1. 进入的django项目里面
  2. cd /opt/django-project/teacher/
  3.  
  4. 命令测试启动
  5. uwsgi --http 192.168.14.41:8080 --file teacher/wsgi.py --static-map=/static=static

  

参数说明:

--http 这个就和runserver一样指定IP 端口
--file 这个文件就里有一个反射,如果你在调用他的时候没有指定Web Server就使用默认的
-- static 做一个映射,指定静态文件目录

效果如下:

使用配置文件启动django项目

在存放django项目同级目录创建一个script目录,用来存发uwsgi配置文件

创建uwsgi.ini文件,内容如下:

  1. # uwsig使用配置文件启动
  2. [uwsgi]
  3. # 项目目录
  4. chdir=/opt/django-project/teacher/
  5. # 指定项目的application
  6. module=teacher.wsgi:application
  7. # 指定sock的文件路径
  8. socket=/opt/django-project/script/uwsgi.sock
  9. # 进程个数
  10. workers=5
  11. pidfile=/opt/django-project/script/uwsgi.pid
  12. # 指定IP端口
  13. http=192.168.14.41:8080
  14. # 指定静态文件
  15. static-map=/static=/opt/django-project/teacher/static
  16. # 启动uwsgi的用户名和用户组
  17. uid=root
  18. gid=root
  19. # 启用主进程
  20. master=true
  21. # 自动移除unix Socket和pid文件当服务停止的时候
  22. vacuum=true
  23. # 序列化接受的内容,如果可能的话
  24. thunder-lock=true
  25. # 启用线程
  26. enable-threads=true
  27. # 设置自中断时间
  28. harakiri=30
  29. # 设置缓冲
  30. post-buffering=4096
  31. # 设置日志目录
  32. daemonize=/opt/django-project/script/uwsgi.log

启动项目:

  1. uwsgi --ini /opt/django-project/script/uwsgi.ini

  

再次访问:

至此,uwsgi+django就完美结合了,但是,光有uwsgi还不够,uwsgi处理动态请求能力高,但对于静态请求(如static文件,css,js文件等)处理能力差,此时就要结合nginx一起使用,利用nginx来实现动静分离

3.利用nginx+uwsgi来实现动静分离请求

安装nginx就不用说了

在nginx的/etc/nginx/conf.d目录下新建一个启动关于配置文件teacher.conf,内容如下:

  1. server { # 这个server标识我要配置了
  2. listen 80; # 我要监听那个端口
  3. server_name 192.168.14.41 ; # 你访问的路径前面的url名称
  4. access_log /var/log/nginx/access.log main; # Nginx日志配置
  5. charset utf-8; # Nginx编码
  6. gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; # 支持压缩的类型
  7.  
  8. error_page 404 /404.html; # 错误页面
  9. error_page 500 502 503 504 /50x.html; # 错误页面
  10.  
  11. # 指定项目路径uwsgi
  12. location / { # 这个location就和咱们Django的url(r'^admin/', admin.site.urls),
  13. include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
  14. uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
  15. uwsgi_pass unix:/opt/django-project/script/uwsgi.sock; # 指定uwsgi的sock文件所有动态请求就会直接丢给他
  16. }
  17.  
  18. # 指定静态文件路径
  19. location /static/ {
  20. alias /opt/django-project/teacher/static/;
  21. index index.html index.htm;

  

重启nginx,再次访问

uwsgi和nginx都要启动

django项目的生产环境部署,利用nginx+uwsgi的更多相关文章

  1. Python生产环境部署(fastcgi,uwsgi)

    Python部署web开发程序的几种方法 fastcgi ,通过flup模块来支持,在nginx里对应的配置指令是 fastcgi_pass http,nginx使用proxy_pass转发,这个要求 ...

  2. Django + Uwsgi + Nginx 的生产环境部署实战

    目录 Django + Uwsgi + Nginx 的生产环境部署实战 安装Uwsgi 一.使用命令来启动django项目 二.使用配置文件来启动我们的Django项目 安装Nginx 配置Nginx ...

  3. 学习项目部署Django+uwsgi+Nginx生产环境部署

    绪论 项目生产环境部署,是很重的一个知识点.第一,Django自带的服务器很简陋,由于测试和开发环境尚可,无法用于生产环境,保障安全性和可靠性.以及性能.此外,学习部署方式,还有利于了解生产部署后的项 ...

  4. Django + Uwsgi + Nginx 的生产环境部署

    使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇文章总结归 ...

  5. 第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置

    第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置 软件版本  uwsgi- ...

  6. ubuntu Django + Uwsgi + Nginx 的生产环境部署

    一.概述 使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇 ...

  7. 10: Django + Uwsgi + Nginx 的生产环境部署

    1.1 一些重要概念 1.Web协议介绍 Web协议出现顺序: CGI -> FCGI -> WSGI -> uwsgi 1. CGI:  最早的协议 2. FCGI:  比CGI快 ...

  8. 11: Django + gunicorn + Nginx 的生产环境部署

    1.1 gunicorn介绍   1.Gunicorn 1. Gunicorn是使用Python实现的WSGI服务器, 直接提供了http服务, 并且在woker上提供了多种选择, gevent, e ...

  9. Django+Nginx+uWSGI生产环境部署

    生产环境中的数据流 参考文档: wsgi详解:https://blog.csdn.net/li_101357/article/details/52748323 wsgi协议介绍(萌新版):https: ...

随机推荐

  1. html5获取当前的位置..在地图中

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. HDU1269 迷宫城堡 2016-07-24 13:47 84人阅读 评论(0) 收藏

    迷宫城堡 Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的 ...

  3. Scala包和引用

    1.包 Scala包的命名方式有两种.一种和Java一样,通过把package子句放在文件顶端的方式,把整个文件的内容放进包里.如: package scala.actors.Actor 另一种方式可 ...

  4. 【LeetCode】 Valid Sudoku

    Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...

  5. Android-Android/APP-理解

    Android 1.Google Android 给出的官方Android架构图就是大家都知道的四层,第一层是应用层(就是很多能够看得到的应用),第二层是应用框架层(为application提 供各种 ...

  6. DBCC--EXTENTINFO/IND/PAGE--显示数据页信息

    DBCC EXTENTINFO得到对象分配的区DBCC EXTENTINFO(<dbname|dbid>,<tabelname|tableid>[,{indexname|ind ...

  7. ADO.NET系列之Command对象

    ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 上一篇<ADO.NE ...

  8. .net core 生成二维码

    其实生成二维码的组件有很多种,如:QrcodeNet,ZKWeb.Fork.QRCoder,QRCoder等 我选QRCoder,是因为小而易用.支持大并发生成请求.不依赖任何库和网络服务. 既然是. ...

  9. Mac OS 10.12 - 如何能够像在Windows一样切换中英文输入法和大小写键?

    最开始,我切换中英文输入法和大小写键是按照下面博客做到的: http://www.cnblogs.com/sunylat/p/6415563.html 但是当我安装完毕搜狗输入法后,切换中英文输入法和 ...

  10. zoj4020 Traffic Light(bfs+状态压缩)

    题意:每个点有两种状态,0/1,0表示只能上下方向走,1表示只能左右方向走.每走一步整个图的状态改变一次(即0->1,1->0). 数据范围:n,m<=1e15 开始迷之因为数组太大 ...