1、基本信息

Linux 版本:SentOS7.4

Python 版本:3.7.1

2、下载 uWSGI

pip3 install uwsgi

uwsgi 主要的任务是座位分发路由的服务器。

先写一个测试文件,测试 uwsgi 是否可以正常使用。

# test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3
#return ["Hello World"] # python2

3、测试

然后用 uwsgi 启动测试文件

uwsgi --http :8000 --wsgi-file test.py

然后访问 127.0.0.1:8000 端口,即可收到 hello word 。证明 uwsgi 启动成功。

重点来了:用 uwsgi 使用配置文件启动 Django 项目。

4、启动 Django

先不要急,先用 Django 项目自带的 wsgi.py 文件启动一下 django 试试。

uwsgi --http :8000 --wsgi-file djangp/wsgi.py

访问 127.0.0.1:8000

OK,启动成功。

接下来的任务就是写配置文件了,可以设置更加详细的参数。

文件 wsgi.ini:

[uwsgi]

# django 相关配置
# 必须全部为绝对路径 # 项目执行的端口号
# http = :8000 # 用 uwsgi 启动项目用 http
socket = :8001 # 用 nginx 启动用 socket # 项目路径 chdir = 项目路径 # Django 的 wsgi 文件的相对路径
# wsgi-file = 项目路径/wsgi.py
module = mysite.wsgi # python 虚拟环境的 路径
home = /root/pythonEnvs/virtualenvName # 进程相关设置
# 主进程
master = True
# 最大数量工作进程
processes = 4
# socket文件地址,绝对路径(不用手动创建,额nginx链接后自动创建)
#socket =
# 设置socket权限
#chmod-socket=666 # 守护进程的方式运行,log日志存在log文件里
deamonize = 项目路径/uwsgi.log
# 退出时清理环境
vacuum=True

现在用这个文件通过

uwsgi --ini wsgi.ini

就可以启动 django 项目了。

关于其中的 httpsocket 字段,当只用 uwsgi 启动 django 项目的时候,用 http 字段,因为是通过 http 请求服务器的。

如果还要使用 nginx 就使用 socket 字段。

好啦,现在 uwsgi 也配置好了。

接下来配置 nginx

5、配置 nginx

首先下载 nginx

yum install nginx

下载成功后执行 nginx 命令直接启动。

然后访问本地地址可以看到 nginx 的欢迎页面。

OK,接下来接入 nginx 就可以了,先来写 nginx 的配置文件。

events {
worker_connections 1024;
} http { upstream django {
server 127.0.0.1:8001;
} server {
# the port your site will be served on
listen 8000 ; # 端口号
# the domain name it will serve for
server_name 0.0.0.0; # 服务器 ip 或是域名
charset utf-8; # Django media
location /media {
alias 项目路径/media; # 媒体文件所在文件夹
} location /static {
alias 项目路径/static; # 静态文件所在文件夹
}
# max upload size
client_max_body_size 75M; # adjust to taste # Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /uwsgi_params; #uwsgi_params 路径
}
}
}

其中用到一个 uwsgi_params 文件,这个文件是用来链接 nginx 和 uwsgi 的。

自己建一个文件就可以,内容如下:

uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length; uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty; uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;

6、启动项目

先来部署一下静态文件,如果你的 app 下有多个静态文件的话(我没用到)。

python manage.py collectstatic

STATIC_ROOT 一定要设置好。

启动 nginx:

nginx -c 配置文件地址

配置文件地址一定要写绝对路径。

启动 uWSGI:

uwsgi --ini wsgi.ini

OK,到这里 nginx+uWSGI+Django 项目部署就完成啦。

nginx+uwsgi+djangos部署项目完整的更多相关文章

  1. Nginx+uwsgi+django部署项目

    nginx把请求转发给uwsgi,然后把uwsgi处理得到的结果返回给浏览器. 安装nginx: yum -y install gcc pcre-devel openssl-devel #安装Ngin ...

  2. 使用docker-compose+nginx+uwsgi+django部署项目

    (1)centos上下载docker + docker-compose (2)基础目录 (3)首先创建一个纯净的python+django+uwsgi的镜像,便于后期使用(也可不用创建,后期docke ...

  3. Nginx+uWSGI+Django部署web服务器

    目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py ...

  4. 学习VirtualEnv和Nginx+uwsgi用于django项目部署

    以下叙述中用到的操作系统:Linux CentOS 6.X. 最近几天了解一下VirtualEnv,Apache+Daemon mode,Nginx+uwsgi的概念,并且在项目中实验性部署了一下(目 ...

  5. nginx+uwsgi+flask+supervisor 项目部署

    环境 - Linux: Ubuntu 16.04 - uWSGI 2.0.18 - Flask 1.0.2 - supervisor 3.2.0 - nginx/1.8.1 首先区分几个概念 WSGI ...

  6. ubuntu16.4+nginx+uwsgi+Django 部署上线

    Nginx概述 Nginx是一款轻量级的HTTP服务器,采用事件驱动和异步非阻塞处理方式框架,这让其具有极好的IO性能,市场用于服务端的反向代理和负载均衡 Nginx优点 高并发连接:官方测试Ngin ...

  7. centos7下采用Nginx+uwsgi来部署django

    之前写过采用Apache和mod_wsgi部署django,因为项目需要,并且想比较一下Nginx和Apache的性能,尝试采用Nginx+uwsgi的模式来部署django. 1.安装uwsgi以及 ...

  8. Nginx+uWsgi生产部署Django

    部署得过程很简单,部署得核心在于,为什么要这样做,每一个参数代表什么意思,最终的目的是得了解,一些基概念性的东西. uWsgi简介 说Uwsgi之前,先说一下Wsgi. 什么是Wsgi? WSGI: ...

  9. nginx+uwsgi+django部署流程

    当我们在用django开发的web项目时,开发测试过程中用到的是django自带的测试服务器,由于其安全及稳定等性能方面的局限性,django官方并不建议将测试服务器用在实际生产. nginx+uws ...

随机推荐

  1. Vue + Element UI 实现权限管理系统 前端篇(十):动态加载菜单

    动态加载菜单 之前我们的导航树都是写死在页面里的,而实际应用中是需要从后台服务器获取菜单数据之后动态生成的. 我们在这里就用上一篇准备好的数据格式Mock出模拟数据,然后动态生成我们的导航菜单. 接口 ...

  2. Android 内存溢出解决方案(OOM) 整理总结<转>

    在最近做的工程中发现加载的图片太多或图片过大时经常出现OOM问题,找网上资料也提供了很多方法,但自己感觉有点乱,特此,今天在不同型号的三款安卓手机上做了测试,因为有效果也有结果,今天小马就做个详细的总 ...

  3. 根据运算符优先级解析SQL规则表达式

    1.需求 测试数据库使用Greenplum,生产库使用GBase 普通表:存储客户数据,千万级别,结构如下 stat_date代表日期:user_id代表用户id:serial_number代表手机号 ...

  4. #1 初识Python

    前言 要说现在最时髦的编程语言是什么,那么一定是Python无疑了.让我们来一起来领略其风采吧! 一.Python介绍 Python的创始人为吉多·范罗苏姆(Guido van Rossum),被大家 ...

  5. C++ 输入、输出运算符重载

    C++ 能够使用流提取运算符 >> 和流插入运算符 << 来输入和输出内置的数据类型.我们可以重载流提取运算符和流插入运算符来操作对象等用户自定义的数据类型. 在这里,有一点很 ...

  6. 关于fasterxml-jackson发生Can not deserialize instance of异常原因验证

    关于fasterxml-jackson发生Can not deserialize instance of异常原因验证 这两天线上有大量的java.lang.IllegalArgumentExcepti ...

  7. C#实现加简单的Http请求

    通过.Net中的两个类 HttpWebRequest 类, HttpWebResponse 类来实现Http的请求,响应处理. 第一个小测试是请求百度首页( http://www.baidu.com ...

  8. [转]JS组件系列——Bootstrap组件福利篇:几款好用的组件推荐

    本文转自:https://www.cnblogs.com/landeanfen/p/5461849.html#_label3 阅读目录 一.时间组件 1.效果展示 2.源码说明 3.代码示例 二.自增 ...

  9. 菜鸟入门【ASP.NET Core】10:Cookie-based认证实现

    准备工作 新建MVC项目,然后用VSCode打开 dotnet new mvc --name MvcCookieAuthSample 在Controllers文件夹下新建AdminController ...

  10. Select2异步搜索数据

    $('#countryID').select2( { placeholder: "请选择国家", ajax: { dataType: 'json', type: 'POST', d ...