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 ...
随机推荐
- Oracle-创建用户不带C##(Oracle 19c)
由于oracle从12c开始引入了容器(PDB和CDB).租户的概念.直接连接sysdba用户创建新用户时,会默认在CDB中创建公有用户,用户名需要以"C##"或"c## ...
- JS leetcode 存在重复元素 II 题解分析,记一次震惊的负向优化
壹 ❀ 引 整理下今天做的算法题,题目难度不高,但在优化角度也是费了一些功夫.题目来自219. 存在重复元素 II,问题描述如下: 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i ...
- Linux 中竖线“|”与双竖线“||”的意思
linux中竖线'|',双竖线'||',&和&&的意思 对于初学者来说这几个意思可能只知道其中几个的意思,下面我们来看一下. 1.竖线'|' ,在linux中是作为管道符的,将 ...
- 【OpenGL ES】渐变凸镜贴图
1 前言 正方形图片贴到圆形上 中将正方形图片上的纹理映射到圆形模型上,凸镜贴图 中介绍了将圆形图片上的纹理映射到凸镜模型上.如果将原图片逐渐变为凸镜效果,中间的变化过程又是什么样的? 图片的 ...
- centos7安装postgresql9.6
1.安装yum源 yum install -y https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg- ...
- 通过结巴分词 sklearn判断语句和例句集合最相近的句子
` import jieba from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pair ...
- Hi3516开发笔记(八):Hi3516虚拟机交叉开发环境搭建之配置QtCreator开发交叉编译环境
海思开发专栏 上一篇:<Hi3516开发笔记(七):Hi3516虚拟机交叉开发环境搭建之交叉编译Qt>下一篇:<Hi3516开发笔记(九):在QtCreator开发环境中引入海思sd ...
- 【LeetCode链表#8】翻转链表(双指针+递归)/K个一组翻转
翻转链表 力扣题目链接(opens new window) 题意:反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4-> ...
- npm模块全局安装后无法使用解决方案
好家伙 npm模块全局安装后无法使用 估计是少配了环境变量 1.使用命令: npm config get prefix 找到全局包的安装位置 2.随后我们右键"我的电脑"打 ...
- Linux查看文件大小、磁盘使用情况
1.显示磁盘的可用情况: df -h 2.显示文件夹大小 du -ka folder | sort -rnk 1 | head -n 10