Nginx+Uwsgi+Django以及解决的一些问题
1.pip3 install uwsgi,项目目录路径:/data/my_env1/monitor1/,
项目名:monitor1,app名:show
测试启动:
ln -s /data/linkdood/im/vrv/python36/bin/uwsgi /user/bin/uwsgi
uwsgi --http 192.168.165.10:8000 --file monitor1/wsgi.py --static-map=/static=static
访问http://192.168.165.10:8000 ,页面可以正常访问,表示项目启动成功。
2.使用uwsgi配置文件启动django项目:
在项目同级目录创建script目录,用于存放配置文件、生成的pid、socket,
创建uwsgi.ini,内容如下:
[uwsgi]
chdir=/data/my_env1/monitor1
wsgi-file=/data/my_env1/monitor1/monitor1/wsgi.py
socket=/data/my_env1/monitor1/script/uwsgi.sock
workers=4
pidfile=/data/my_env1/monitor1/script/uwsgi.pid
http=192.168.165.10:8000
static-map=/static=/data/my_env1/monitor1/static
uid=root
gid=root
master=true
vacuum=true
enable-threads=true
post-buffering=4096
daemonize=/data/my_env1/monitor1/script/uwsgi.log
uwsgi常用的三个命令,注意这里的停止和启动,文件后缀是pid不是ini
uwsgi --ini uwsgi.ini
uwsgi --stop uwsgi.pid
uwsgi --reload uwsgi.pid 重载配置
至此,uwsgi+django就完美结合了,但是,光有uwsgi还不够,uwsgi处理动态请求能力高,
但对于静态请求(如static文件,css,js文件等)处理能力差,此时就要结合nginx一起使用
3.centos7用yum下载较新的nginx
# vi /etc/yum/repo.d/nginx.repo
[nginx]
nginx=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
# yum -y install nginx
查看版本:nginx -v
启动:nginx
停止:nginx -s stop
重启:nginx -s reload
在nginx配置文件中添加内容如下:
# vi /etc/nginx/conf.d/default.conf
listen 80;
server_name 192.168.165.10;
location / {
include uwsgi_params;
uwsgi_pass unix:/data/my_env1/script/uwsgi.sock;
}
location /static {
alias /data/monitor1/static;
}
修改Django项目的settings配置,DEBUG = False,此时访问页面会发现无法加载static文件,所以得有以下步骤:
# mkdir -p /data/monitor1/static
在settings文件中添加一行
STATIC_ROOT = '/data/monitor1/static'
# python manage.py collectstatic
但是参考的这篇博客把monitor1目录给了777,我没给,怕不安全,
就按照上面的做了,如果后续有什么错的话,再参考这样的做法.
# cd /data/
# mkdir monitor1
# chmod 777 monitor1
# cd monitor1/
# mkdir static
4.让nginx去处理图片:
location /media {
autoindex on;
alias /data/monitor1/media;
}
在没有nginx,自己做调试DEBUG=Ture时,想让Django去处理图片,一般这么写:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
然后在url.py中添加:
from django.conf import settings
from django.conf.urls.static import static
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
我觉得在settings.py中,MEDIA_ROOT可以写绝对路径,虽然我没试过,但应该可以;
这样写的:MEDIA_ROOT = os.path.join(BASE_DIR, '../media')
也就是在图片存放在项目目录的上一层.
参考博客地址:https://blog.csdn.net/Duke10/article/details/80971453
Nginx+Uwsgi+Django以及解决的一些问题的更多相关文章
- 五步教你实现使用Nginx+uWSGI+Django方法部署Django程序
Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.ng ...
- Nginx+uWSGI+Django+Python+ MySQL 搭建可靠的Python Web服务器
一.安装所需工具 yum -y install gcc gcc-c++ rpm-build mysql* libtool-ltdl* libtool automake autoconf libtool ...
- 安装Nginx+uWSGI+Django环境
Ubuntu Server 12.04 安装Nginx+uWSGI+Django环境 今天要介绍的是利用APT源直接apt-get install安装配置我们所需要的环境,首先按惯例先安装MySQL和 ...
- debian完整部署 Nginx + uWSGI + Django
手工部署一个Django服务器真心不容易,需要安装很多东西.从头开始搭建服务器,主要是为了梳理一下后续开发中一般为碰到的平台部署.对后续问题的解决有一定帮助. 通常部署有2中方式: 一种是使用现成提供 ...
- nginx+uWSGI+django+virtualenv+supervisor发布web服务器
nginx+uWSGI+django+virtualenv+supervisor发布web服务器 导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以 ...
- Nginx+uwsgi+Django 的web应用环境部署-完整记录
Python作为当前最火爆最热门,也是最主要的Web开发语言之一,在其二十多年的历史中出现了数十种Web框架,比如Django.Tornado.Flask.Twisted.Bottle和Web.py等 ...
- Nginx+uWSGI+Django部署web服务器
目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py ...
- 使用Nginx+uWSGI+Django方法部署Django程序
第一步先解决uwsgi与django的桥接.解决在没有nginx的情况下,如何使用uwsgi+DJANGO来实现一个简单的WEB服务器. 第二步解决uwsgi与Nginx的桥接.通过nginx与uws ...
- 使用Nginx+uWSGI+Django方法部署Django程序(上)
Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.ng ...
随机推荐
- iOS开发遇到的坑之一: 开发遇见如下错误:Undefined symbols for architecture arm64
博客处女作,写得不好望谅解! “for architecture arm64”就是说没有支持arm64,在Build settings里architecture相关的几项需要配置正确 在最近升级coc ...
- Swift 中 String 与 CChar 数组的转换
在现阶段Swift的编码中,我们还是有很多场景需要调用一些C函数.在Swift与C的混编中,经常遇到的一个问题就是需要在两者中互相转换字符串.在C语言中,字符串通常是用一个char数组来表示,在Swi ...
- C\C++对于字符串输入处理
1.scanf scanf以%s格式符读入字符串,会以空格为结束,也就是无法将空格读入.如果换成%c就可以读入,但是无法一次性读入一整行字符. 2.fgets 显然,fgets是一个读取带空格字符串的 ...
- 【动态规划】loj#2485. 「CEOI2017」Chase
有意思的可做dp题:细节有点多,值得多想想 题目描述 在逃亡者的面前有一个迷宫,这个迷宫由 nnn 个房间和 n−1n-1n−1 条双向走廊构成,每条走廊会链接不同的两个房间,所有的房间都可以通过走廊 ...
- Linux内核 ——进程管理之进程诞生(基于版本4.x)
<奔跑吧linux内核>3.1笔记,不足之处还望大家批评指正 进程是Linux内核最基本的抽象之一,它是处于执行期的程序.它不仅局限于一段可执行代码(代码段),还包括进程需要的其他资源.在 ...
- verilog random使用
“$random函数调用时返回一个32位的随机数,它是一个带符号的整形数...”,并给出了一个例子: _________________________________________________ ...
- hashlib模块,hmac模块
6.11自我总结 1.hashlib模块(文件传输中将传输内容用指定算法进行处理) hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1.S ...
- vs实用插件
Live Share 强烈推荐的一款插件,能在VS程序中打开文件并且显示他的效果.非常非常实用!,具体功能介绍在你搜索该插件时候有说明,非常非常好用的一款插件! 后续插件推荐转载参考与其他博主 1.C ...
- Python中怎么进行单元测试
既然是测试,那我们得有被测试的代码,我们先定义一个简单的函数,这个函数的功能就是接收一个姓名,并返回一句问候语句. say_hello_function.py def hello_name(name) ...
- MySQL之单表查询、多表查询
一.单表查询: 单个表的查询方法及语法顺序需要通过实际例子来熟悉 先将表数据创建下: mysql> create database singe_t1; # 建个数据库singe_t1 Query ...