一、前言

购买了腾讯云服务器练习 Django 项目时,

# 最开始用的启动 Django 项目命令

python3 manage.py runserver 0.0.0.0:80

后面发现我一旦把 xshell 窗口关闭,Django 项目就宕机了,无法访问。

之后学了一个新的启动命令,使用后台常驻模式,

# 改进后的命令

nohup python3 manage.py runserver 0.0.0.0:80 > /dev/null 2> /dev/null &

这时候关了 xshell 窗口,Django 项目也能访问了。

开心了一小阵子,
随后,发现性能差得离奇,就两个并发用户访问,都会挂掉的那种,吐血。
查阅资料发现,使用 python3 manage.py runserver 只能用于单人调试,不能用于生产环境,可怜兮兮的我居然一直以为这是正确的启动方式。

二、Django + uWSGI + Nginx 搭建

(1)uWSGI

概念性的东西,请看大神们的博客,写得很清晰明了

传送门:

https://blog.csdn.net/CHENYAoo/article/details/83055108
https://www.cnblogs.com/new-rain/p/10089941.html

下面讲一讲搭建
首先,非常遗憾的说,Windows 是无法安装使用 uWSGI 的,网上很多教程说安装 MinGW Installer 的,我试了也不行,只能运行在 Linux 上面
进入正题

# 安装模块

pip3 install uwsgi

然后在项目根目录(跟 manage.py 同一层级的)新建文件 uwsgi.ini

写入内容,备注表明了3个地方是需要根据你自己的情况来修改的

[uwsgi]
# (1)第一处修改的地方
# 这个地方有个坑,就是假如你是买的云主机,那么你的内网ip不是127.0.0.1,而是要去云服务器控制台看的
# socket = 你的服务器内网的ip地址:8889
http = 你的服务器内网的ip地址:8889
# (2)第二处修改的地方
# 项目根目录
chdir = 项目根目录的绝对路径
# (3)第三处修改的地方
wsgi-file = 项目名称/wsgi.py master = True
processes = 4
threads = 2
pidfile = uwsgi.pid
daemonize = uwsgi.log

接下来,测试一下,不再使用 python3 manage.py runserver 启动,而是改成

uwsgi --ini uwsgi.ini

用 ps aux | grep uwsgi 有没有启动进程,或者访问 你的服务器内网的ip地址:8889 能不能访问到 Django的页面
测试完了,停掉 uwsgi,使用命令

uwsgi --stop uwsgi.pid

(2)Nginx

安装 Nginx 的,网上一堆教程,这里就不写了
第一步,为了让 Nginx 接管,需要修改上面 uwsgi.ini 文件,就是把 http 换成 socket

socket = 你的服务器内网的ip地址:8889
# http = 你的服务器内网的ip地址:8889

第二步,需要改 Nginx 的配置文件,我的配置文件在 /usr/local/nginx/conf,这个路径根据个人情况而定,

vim nginx.conf

在 http{} 里面的 server{} 里面添加内容

location / {
  include uwsgi_params;
  uwsgi_pass 你的服务器内网的ip地址:8889;
}

保存,重启 Nginx,启动 uwsgi,访问 80 端口,如果看到你的项目,说明就正确了

(3)静态资源的问题
这时候,你会发现网站的图片啊、样式啊,都是无法显示的,是因为静态文件的原因
第一个要改的,项目的 settings.py
加一句

STATIC_ROOT = os.path.join(BASE_DIR, 'static_all')

然后执行命令

python3 manage.py collectstatic

第二个要改的,Nginx 的配置文件

vim nginx.conf

在 http{} 里面的 server{} 里面添加内容

location /static {
  alias 项目根目录的绝对路径/static_all/;
}

之后,重启 Nginx 和 uwsgi ,就完成了

Django 使用 Nginx + uWSGI 启动的更多相关文章

  1. centos6.5+Django+mysql+nginx+uwsgi

    centos6.5+Django+mysql+nginx+uwsgi 1.nginx的安装.这里采用nginx-1.6.0, 建立一个shell脚本然后执行. #!/bin/bash nginx_ve ...

  2. Nginx+uWSGI启动Django

    在之前的几篇博客中对Django的功能做了初步实践,这里链接贴一下: Django的安装和启动 Django之--网页展示Hello World! Django之--通过MVC架构的html模板展示H ...

  3. nginx+uwsgi启动Django项目

    1.安装项目环境 系统环境:ubuntu16.04 python环境:python3.5.2 Django版本:django1.11.7 nginx环境:nginx_1.10.3 虚拟环境:virtu ...

  4. centos7下部署Django(nginx+uwsgi+python3+django)

    系统版本 centos7 python版本 使用官方python3.6.3正式版 django版本 使用本文发布时最新的1.11.7 uwsgi版本 使用本文发布时最新的2.0.15 nginx版本 ...

  5. SLAM+语音机器人DIY系列:(八)高阶拓展——2.centos7下部署Django(nginx+uwsgi+django+python3)

    0.安装步骤预览(1)系统默认自带python2.x,所以需要先安装python3.x(2)python2对应pip,python3对应pip3,用源码安装python3后pip3也自动安装了(3)用 ...

  6. django在nginx uwsgi和tornado异步方案在项目中的体验

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://rfyiamcool.blog.51cto.com/1030776/1397495 ...

  7. Django 部署(Nginx+uwsgi)

    使用 uwsgi 来部署 安装 uwsgi sudo pip install uwsgi --upgrade 使用 uwsgi 运行项目 uwsgi --http :8001 --chdir /pat ...

  8. CentOS下 Django部署 nginx+uWSGI+Django(二)

    该篇内容承接CentOS下 Django部署 uWSGI+Django(一),细节流程可参考此篇内容. 1. 当前系统 CentOS Linux release 7.6.1810 Python 2.7 ...

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

    https://www.cnblogs.com/pyyu/p/9481344.html?tdsourcetag=s_pcqq_aiomsg 一 uwsgi安装 1.安装uwsgi,进入到一个虚拟机环境 ...

  10. nginx+uwsgi 和nginx+gunicorn区别、如何部署

    [线上环境部署Django,nginx+uwsgi 和nginx+gunicorn,这两种方案,应该如何选择?] 大家是采用的何种部署方式? 第一种,高并发稳定一点 我们公司使用的是nginx+gun ...

随机推荐

  1. Typora Mac中文破解版获取

    作为程序员,markdown是非常好用的文本编辑语言,而Typora是非常好用的一款markdown编辑工具.Typora提供读者和作家的无缝体验.它删除了预览窗口,模式切换器,降低源代码的语法符号以 ...

  2. 手把手带你上手swagger3

    配置POM 只需要加一个依赖,并且要注意,swagger3在springboot2.5版本以上会出现问题 <dependency> <groupId>io.springfox& ...

  3. Hadoop组件兼容性

    (1)HBase和Hadoop.zookeeper.JDK兼容版本 参考网址: https://hbase.apache.org/book.html 1)JDK和Hbase的兼容版本  对于JDK,最 ...

  4. eclipse安装UML插件

    安装AmaterasUML AmaterasUML 是一个用于 Eclipse 的轻量级 UML 和 ER 图编辑器. 将AmaterasUML的3个jar包拷到Eclpise的plugins文件下: ...

  5. 如何设置mysql root密码

    如何设置mysql root密码: 1.首次安装 root初始密码为空,注意就是没有密码,直接敲回车即可进入 D:\wamp\bin\mysql\mysql5.6.17\bin> mysql - ...

  6. 玩转SpringBoot:动态排除Starter配置,轻松部署

    引言 在软件开发中,进行本地单元测试是一项常规且必要的任务.然而,在进行单元测试时,有时需要启动一些中间件服务,如Kafka.Elasticjob等.举例来说,我曾经遇到过一个问题:项目中使用了Red ...

  7. Vulnhub内网渗透DC-6靶场通关

    个人博客 xzajyjs.cn IP DC-6: 192.168.168.4 Kali: 192.168.168.5 信息搜集 arp-scan -l # nmap -sn 192.168.168.0 ...

  8. git 多系统复用账号

    重装系统前请备份~/.ssh下的公钥私钥文件,重装系统后,请使用以下方法复用好之前的key 将备份好的key copy至~/.ssh下 将私钥id_rsa的文件属性改为600:sudo chmod 6 ...

  9. 【Azure K8S】演示修复因AKS密钥过期而导致创建服务不成功的问题(The provided client secret keys for app ****** are expired)

    问题描述 在Azure Kubernetes 服务中,创建一个Internal Load Balancer服务,使用以下yaml内容: internallb.yaml apiVersion: v1 k ...

  10. 手把手教你蜂鸟e203协处理器的扩展

    NICE协处理器 赛题要求:   对蜂鸟E203 RISC-V内核进行运算算子(譬如加解密算法.浮点运算.矢量运算等)的扩展,可通过NICE协处理器接口进行添加,也可直接实现RISC-V指令子集(譬如 ...