python manage.py runserver 0.0.0.0:80 ,一定不要用这个轻量级Server作为你的生产环境下的Server,因为它只能用于开发自测阶段。它既没有安全审计功能,而且又是单线程的。

生产坏境部署当然是Docker+Uwsgi+Nginx。

准备条件:

  一个完整的项目文件。

1.安装uwsgi

  uwsgi是python的一个模块,安装uwsgi只需简单的pip命令就可以了,pip3 install uwsgi

2.启动项目

uwsgi --http :80 --chdir /path/to/project --home=/path/to/env --module project.wsgi

--home 指定virtualenv 路径,如果没有可以去掉。project.wsgi 指的是 project/wsgi.py 文件  

3. ini 配置文件启动

[uwsgi]
socket = :8000 # http = :8000
chdir = /path/to/project
wsgi-file = project/wsgi.py processes = 4 # 与服务器cpu数相同即可
threads = 2

这里我要讲一下http 和socket的区别:

http:nginx 和 uwsgi 中间走的是 http 协议,文本。
socket:nginx 和 uwsgi 中间走的是 wsgi 协议,二进制

性能的话是socket更优,但是如果是前后端分离的场景,我们就需要采用http了。

修改nginx default.conf

server {
listen 80;
server_name localhost;
charset utf-8; client_max_body_size 75M; location /media {
alias /path/to/project/media/;
} location /static {
alias /path/to/project/static/;
} location = /favicon.ico {
rewrite (.*) /static/images/favicon.ico;
} location / {
# proxy_pass http://127.0.0.1:8000;
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000; }
}

uwsgi 常用配置参数

chdir=/xxx/xxx # 指定项目目录
home=/xxx/xxx # 指定虚拟环境变量
wsgi-file=xxx # 指定加载WSGI文件
socket=xxx # 指定uwsgi的客户端将要连接的socket的路径(使用UNIX socket的情况)或者地址(使用网络地址的情况)。
callable=xxx # uWSGI加载的模块中哪个变量将被调用
master=true # 指定启动主进程
processes=4 # 设置工作进程的数量
threads=2 # 设置每个工作进程的线程数
vacuum=true # 当服务器退出时自动删除unix socket文件和pid文件
logfile-chmod=644 # 指定日志文件的权限
daemonize=%(chdir)/xxx.log # 进程在后台运行,并将日志打印到指定文件
pidfile=%(chdir)/xxx.pid # 在失去权限前,将主进程pid写到指定的文件
uid=xxx # uWSGI服务器运行时的用户id
gid=xxx # uWSGI服务器运行时的用户组id
procname-prefix-spaced=xxx # 指定工作进程名称的前缀

  

Dockerfile环节:

FROM python:3.6
ENV TZ "Asia/Shanghai" # 设置时区 RUN pip3 install -r /root/requirement.txt -i https://pypi.doubanio.com/simple/ \
&& pip3 install uwsgi \
&& pip3 install https://codeload.github.com/sshwsfc/xadmin/zip/django2 CMD uwsgi /code/uwsgi.ini

  

Django + Uwsgi +Nginx生产环境部署的更多相关文章

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

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

  2. django+vue+nginx生产环境部署配置

    部署环境: 1. linux redhat 7.1 2.python 3.6.3 3. vue 4. nginx 5. gunicorn 6. supervisord 安装: 一. 基础环境安装 1. ...

  3. django项目的生产环境部署,利用nginx+uwsgi

    1.坏境准备 centos6.5 django项目 python坏境(python3.6,) 所需的各种模块(django,uwsgi,sqlite3)具体看坏境 我的测试django项目的数据库用的 ...

  4. django+nginx+uwsgi的生产环境部署(Ubuntu16.04)

    一,准备工作: 代码一定要能本地跑起来! 各种基础包的安装略默认已经安装python3,nginx,uwsgi等基础依赖,注意版本问题. 本地setting.py文件修改如下(改为生产模式,把debu ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. [Python]Python Class 中的 函数定义中的 self

    In [80]: class MyClass001: ....: def selfDemo(self): ....: print 'My Demo' ....: In [81]: p = MyClas ...

  2. virtual box问题记录

    1.已存在的虚拟机打开错误,可能是版本不一样的问题,我5.2.16版本,原虚拟机所属版本为4.3.12,换回4.3.12版本virtual box即可.

  3. mysql大数据量下的分页

    mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 测试实验 1.   直接用limit start, count分页语句, 也是我程序中用的方法: select * from p ...

  4. Beta版本发布报告

    项目名称 学霸系统写手机客户端 项目版本 Beta版本 负责人 北京航空航天大学计算机学院 hots团队 联系方式 http://www.cnblogs.com/hotsbuaa/ 要求发布日期 20 ...

  5. C程序设计教学小结(选择结构)

    1. 函数使用的三个问题 函数声明语句   void add();   或  int add(int x,int y); 函数调用            add();     c=add(a,b) 函 ...

  6. SpringMVC视图解析器概述

    不论控制器返回一个String,ModelAndView,View都会转换为ModelAndView对象,由视图解析器解析视图,然后,进行页面的跳转. 控制器处理方法---->ModelAndV ...

  7. SQL Server 递归查询上级或下级组织数据(上下级数据通用查询语法)

    查询上级组织数据: WITH OCTE AS ( AS LVL FROM IOV_Users U LEFT JOIN IOV_Organization O ON U.OrgId=O.ID UNION ...

  8. [日常工作]WorkStation 使用端口转发的方式使用宿主机IP地址提供服务

    1. 虚拟机内的地址如果经常变化,或者是想使用宿主机进行网络服务 但是又不想有人能够访问具体的服务器提供机器.. 可以使用宿主机转发虚拟机的端口的方式来进行处理. workstation 比较好实现 ...

  9. Smarty 变量修饰器

    为了更方便的实现 功能与显示分离,通常会用 smarty 将功能代码中的数据 assign 到页面中,在页面中合理使用 smarty 的修饰方法,会使页面显示更美观! 一个数据可同时使用多个修饰函数, ...

  10. 软件开的目录规范+sys,os,time模块

    —————————————————————————————————————————————————————————————————— start.py import sys,os # print(__ ...