Django 使用 Nginx + uWSGI 启动
一、前言
购买了腾讯云服务器练习 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 启动的更多相关文章
- centos6.5+Django+mysql+nginx+uwsgi
centos6.5+Django+mysql+nginx+uwsgi 1.nginx的安装.这里采用nginx-1.6.0, 建立一个shell脚本然后执行. #!/bin/bash nginx_ve ...
- Nginx+uWSGI启动Django
在之前的几篇博客中对Django的功能做了初步实践,这里链接贴一下: Django的安装和启动 Django之--网页展示Hello World! Django之--通过MVC架构的html模板展示H ...
- nginx+uwsgi启动Django项目
1.安装项目环境 系统环境:ubuntu16.04 python环境:python3.5.2 Django版本:django1.11.7 nginx环境:nginx_1.10.3 虚拟环境:virtu ...
- centos7下部署Django(nginx+uwsgi+python3+django)
系统版本 centos7 python版本 使用官方python3.6.3正式版 django版本 使用本文发布时最新的1.11.7 uwsgi版本 使用本文发布时最新的2.0.15 nginx版本 ...
- SLAM+语音机器人DIY系列:(八)高阶拓展——2.centos7下部署Django(nginx+uwsgi+django+python3)
0.安装步骤预览(1)系统默认自带python2.x,所以需要先安装python3.x(2)python2对应pip,python3对应pip3,用源码安装python3后pip3也自动安装了(3)用 ...
- django在nginx uwsgi和tornado异步方案在项目中的体验
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://rfyiamcool.blog.51cto.com/1030776/1397495 ...
- Django 部署(Nginx+uwsgi)
使用 uwsgi 来部署 安装 uwsgi sudo pip install uwsgi --upgrade 使用 uwsgi 运行项目 uwsgi --http :8001 --chdir /pat ...
- CentOS下 Django部署 nginx+uWSGI+Django(二)
该篇内容承接CentOS下 Django部署 uWSGI+Django(一),细节流程可参考此篇内容. 1. 当前系统 CentOS Linux release 7.6.1810 Python 2.7 ...
- 三 nginx+uWSGI+django+virtualenv+supervisor发布web服务器
https://www.cnblogs.com/pyyu/p/9481344.html?tdsourcetag=s_pcqq_aiomsg 一 uwsgi安装 1.安装uwsgi,进入到一个虚拟机环境 ...
- nginx+uwsgi 和nginx+gunicorn区别、如何部署
[线上环境部署Django,nginx+uwsgi 和nginx+gunicorn,这两种方案,应该如何选择?] 大家是采用的何种部署方式? 第一种,高并发稳定一点 我们公司使用的是nginx+gun ...
随机推荐
- Typora Mac中文破解版获取
作为程序员,markdown是非常好用的文本编辑语言,而Typora是非常好用的一款markdown编辑工具.Typora提供读者和作家的无缝体验.它删除了预览窗口,模式切换器,降低源代码的语法符号以 ...
- 手把手带你上手swagger3
配置POM 只需要加一个依赖,并且要注意,swagger3在springboot2.5版本以上会出现问题 <dependency> <groupId>io.springfox& ...
- Hadoop组件兼容性
(1)HBase和Hadoop.zookeeper.JDK兼容版本 参考网址: https://hbase.apache.org/book.html 1)JDK和Hbase的兼容版本 对于JDK,最 ...
- eclipse安装UML插件
安装AmaterasUML AmaterasUML 是一个用于 Eclipse 的轻量级 UML 和 ER 图编辑器. 将AmaterasUML的3个jar包拷到Eclpise的plugins文件下: ...
- 如何设置mysql root密码
如何设置mysql root密码: 1.首次安装 root初始密码为空,注意就是没有密码,直接敲回车即可进入 D:\wamp\bin\mysql\mysql5.6.17\bin> mysql - ...
- 玩转SpringBoot:动态排除Starter配置,轻松部署
引言 在软件开发中,进行本地单元测试是一项常规且必要的任务.然而,在进行单元测试时,有时需要启动一些中间件服务,如Kafka.Elasticjob等.举例来说,我曾经遇到过一个问题:项目中使用了Red ...
- 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 ...
- git 多系统复用账号
重装系统前请备份~/.ssh下的公钥私钥文件,重装系统后,请使用以下方法复用好之前的key 将备份好的key copy至~/.ssh下 将私钥id_rsa的文件属性改为600:sudo chmod 6 ...
- 【Azure K8S】演示修复因AKS密钥过期而导致创建服务不成功的问题(The provided client secret keys for app ****** are expired)
问题描述 在Azure Kubernetes 服务中,创建一个Internal Load Balancer服务,使用以下yaml内容: internallb.yaml apiVersion: v1 k ...
- 手把手教你蜂鸟e203协处理器的扩展
NICE协处理器 赛题要求: 对蜂鸟E203 RISC-V内核进行运算算子(譬如加解密算法.浮点运算.矢量运算等)的扩展,可通过NICE协处理器接口进行添加,也可直接实现RISC-V指令子集(譬如 ...