uwsgi加nginx部署django restframework前后端分离项目
一.uwsgi和nginx简介
1.uwsgi(摘抄于百度百科):
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。
2.nginx(摘抄于百度百科):
Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
二.使用uwsgi启动django rest framework项目(和django一样)
1.测试:
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3
#return ["Hello World"] # python2
uwsgi --http :8000 --wsgi-file test.py,使用该命令启动测试文件test.py,然后访问8000端口,看是否成功。
2.配置.ini文件(新建,任意命名,位置也可以自己选择):
2.1我这里新建的是Label_System.ini(我放在项目根目录下),现在还未使用nginx,可以先使用http端口,不适用socket:
[uwsgi]
#http是项目启动端口
#http = :9200
#socket是于=与nginx通信的端口
socket = 127.0.0.1:8001
#the local unix socket file than commnuincate to Nginx
#socket = 0.0.0.0:8001
# the base directory (full path)项目目录
chdir = /projects/bishe
# Django's wsgi file
wsgi-file = bishe/wsgi.py
# maximum number of worker processes(进程数)
processes = 4
#thread numbers startched in each worker process(线程数)
threads = 4
#这是python虚拟环境的位置
pythonpath=/root/#ROOT/.virtualenvs/vueshop/lib/python3.5/site-packages
#缓冲大小
buffer-size=65535
#monitor uwsgi status
#这是静态文件
static-map=/static=static
#stats = 127.0.0.1:9200
# clear environment on exit
vacuum = true
#daemonize = shops/uwsgi.log
2.2启动怕配置文件(uwsgi +配置文件名):


可以很容易看出启动了四个进程和对应的进程号
2.3这时查看端口8001就可以访问了。
三.使用nginx实现反向代理:
1.在/etc/nginx/conf.d目录下创建配置文件(路径可能不同,是自己安装的位置):
我创建了一个my.conf,配置如下:
#监听的端口号
listen 9200;
server_name 127.0.0.1;
charset UTF-8;
#nginx日志位置
access_log /var/log/nginx/my_web_access.log;
error_log /var/log/nginx/my_web_error.log; client_max_body_size 75M; location / {
include uwsgi_params;
#这个很重要,是uwsgi的通信端口,即socket,而不是http
uwsgi_pass 127.0.0.1:8001;
uwsgi_read_timeout 2;
}
#静态文件
location /static {
expires 30d;
autoindex on;
add_header Cache-Control private;
alias /projects/bishe/static/;
}
#前端页面
location ~\.html$ {
root /var/mytest/index/;
index index.html index.htm;
}
#前端js,css,jpg,png等路径,可以和drf的静态文件一起配置,防止前后台有一个找不到
location ~.*\.(js|css|jpg|png)$ {
root /var/mytest/;
}

重启nginx即可,记得uwsgi和nginx中的配置文件通信端口要一致
2.这时访问nginx监听端口(9000即可),这是其中的一个界面(index.html):


当然测试的界面依旧如上(这里提一下,静态文件可能找不到,需要在设置中配置(STATIC_ROOT="路径")python manage.py collectstatic生成静态文件)
3.如何关闭测试形成json数据格式呐:
在setting.py中的rest_framework配置如下即可(默认是BrowsableAPIRenderer):
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES':
( 'rest_framework.renderers.JSONRenderer', ),
}

uwsgi加nginx部署django restframework前后端分离项目的更多相关文章
- docker-compose 部署 Vue+SpringBoot 前后端分离项目
一.前言 本文将通过docker-compose来部署前端Vue项目到Nginx中,和运行后端SpringBoot项目 服务器基本环境: CentOS7.3 Dokcer MySQL 二.docker ...
- nginx+vue+uwsgi+django的前后端分离项目部署
Vue+Django前后端分离项目部署,nginx默认端口80,数据提交监听端口9000,反向代理(uwsgi配置)端口9999 1.下载项目文件(统一在/opt/luffyproject目录) (1 ...
- Django+Vue前后端分离项目的部署
部署静态文件: 静态文件有两种方式 1:通过django路由访问 2:通过nginx直接访问 方式1: 需要在根目录的URL文件中增加 url(r'^$', TemplateView.as_view( ...
- Django + Taro 前后端分离项目实现企业微信登录
前言 还是最近在做的一个小项目,后端用的是Django搭配RestFramework做接口,前端第一次尝试用京东开源的Taro框架来做多端(目前需要做用于企业微信的H5端和微信小程序) 本文记录一下企 ...
- linux项目部署(非前后端分离crm)
参考博客 参考博客2---部署过程 导论:看参考博客1 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收 ...
- 使用 Nginx 部署前后端分离项目,解决跨域问题
前后端分离这个问题其实松哥和大家聊过很多了,上周松哥把自己的两个开源项目部署在服务器上以帮助大家可以快速在线预览(喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了 ...
- 海纳百川无所不容,Win10环境下使用Docker容器式部署前后端分离项目Django+Vue.js
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_179 随着现代化产品研发的不断推进,我们会发现,几乎每个产品线都会包含功能各异的服务,而且服务与服务之间存在也会存在着错综复杂的依 ...
- centos7部署前后端分离项目的过程
概述 本文主要讲解在安装了centos7的Linux主机中部署前后端分离项目的过程. 前端项目名为:vue_project:后端项目名为:django_project. 将这两个项目放在/opt/wh ...
- linux --- 部署前后端分离项目
vue + uwsgi +nginx 部署前后端分离项目 准备项目 1.将前端vue项目包和后端django项目包上传服务器,通过lrzsz,直接从windows拖进linux中 2.解压缩操作 前端 ...
随机推荐
- Python 属性与方法 概念理解
属性与方法 attribute(属性)是class(类)中的成员变量,而method(方法)则是class(类)中的function(函数). 也可以理解,属性就类变量,方法就是类函数. 类中的变量就 ...
- P1433 吃奶酪(搜索DFS+记忆化)
emmmmm,我还是看了题解的....尴尬,其实不用记忆化搜索也是可以的.因为我不用也是最后一个点超时.但是我是用的贪心+DFS...超时的原因是贪心....mmp,本来加贪心就是为了不超时.... ...
- Python:Day43 抽屉
1.关于inline-block和float的理解 inline-block和float都可以实现块级标签放在同一行上,inline不好设置左右对齐,只能通过margin和padding调节.而flo ...
- Ubuntu16.04安装和使用ElasticSearch
1.下载es wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/ela ...
- Linux内存管理 一个进程究竟占用多少空间?-VSS/RSS/PSS/USS
关键词:VSS.RSS.PSS.USS._mapcount.pte_present.mem_size_stats. 在Linux里面,一个进程占用的内存有不同种说法,可以是VSS/RSS/PSS/US ...
- BZOJ1069 SCOI2007 最大土地面积 凸包、旋转卡壳
传送门 在这里假设可以选择两个相同的点吧-- 那么选出来的四个点一定会在凸包上 建立凸包,然后枚举这个四边形的对角线.策略是先枚举对角线上的一个点,然后沿着凸包枚举另一个点.在枚举另一个点的过程中可以 ...
- CSS的插入和选择器介绍
一.认识CSS样式 1.定义 CSS全称:层叠样式表(Cascading Style Sheets) 主要作用:定义HTML内容在浏览器内的显示样式,比如文字大小.颜色.字体加粗等 优点:通过定义某个 ...
- 蓝牙speaker配对流程源码分析
这篇文章简单分析一下 蓝牙音箱配对流程.现在的音箱基本都支持security simple pairing.所以这里的流程基本上就是ssp的代码流程. 源码参考的是 Android 6.0 上面的bl ...
- Python_装饰器进阶_32
#带参数的装饰器 #500个函数 import time FLAGE = True def timmer_out(flag): def timmer(func): def inner(*args,** ...
- hdu 5584 LCM Walk
没用运用好式子...想想其实很简单,首先应该分析,由于每次加一个LCM是大于等于其中任何一个数的,那么我LCM加在哪个数上面,那个数就是会变成大的,这样想,我们就知道,每个(x,y)对应就一种情况. ...