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. EZ 2018 06 17 NOIP2018 模拟赛(十九)

    这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...

  2. [Spark][Python]Spark Join 小例子

    [training@localhost ~]$ hdfs dfs -cat people.json {"name":"Alice","pcode&qu ...

  3. vue 首页背景图片加载完成前增加 loading 效果 -- 使用 new Image() 实现

    1. 创建 loading 公用组件 <template> <div class="load-container"> <div class=" ...

  4. [清华集训2017]榕树之心[树dp]

    题意 题目链接 分析 首先解决 \(subtask3\) ,我们的策略就是进入子树,然后用其它子树来抵消,注意在子树内还可以抵消. 可以转化为此模型:有一个数列 \(a\) ,每次我们可以选定两个值 ...

  5. Object-Oriented(一)创建对象

    自用备忘笔记 前言 虽然可以使用 Object 和对象字面量创建对象,但是如果要创建大量相似的对象又显得麻烦.为解决这个问题,人们开始使用工厂模式的变种. 工厂模式 function person(n ...

  6. vue侧边栏导航和右边内容一样高

    vue侧边栏导航和右边内容一样高吗? 失败了,最后用做导航和上导航 定位, 右内容类似滚动条 效果: 直接把top导航和左侧导航栏display:flxed定位左边,右边内容left: top

  7. spring中通过JNDI、DBCP、C3P0配置数据源

    JNDI配置数据源 1.首先在tomcat的server.xml中配置数据源信息,找到Context,然后在里边加入如下代码 <Context docBase="SpringDemo& ...

  8. junit4实验报告

    一:题目简介 测试一个加.减.乘.除. 二:源码的github链接 https://github.com/wangyuefang/test/blob/master/daiceshilei.md htt ...

  9. Maven遇到github引用的项目有bug怎么办?

    Maven遇到github引用的项目有bug,自己想要修复/作者已经修复了但是还没有版本出来. 一个maven的做法 git clone 该项目(可能直接下载zip比较快). 在项目中mvn inst ...

  10. 现代程序设计 homework-02

    首先显示博客要求: 描述在这么多相似的需求面前, 你怎么维护你的设计 (父类/子类/基类, UML, 设计模式,  或者其它方法) 让整个程序的架构不至于崩溃的? 建议从后往前来搞,比如我通读一遍需求 ...