nginx+uwsgi+djangos部署项目完整

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 项目部署就完成啦。

原文地址:https://www.cnblogs.com/dongyangblog/p/9833155.html

时间: 2024-08-03 12:30:03

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

Nginx+uWSGI+Django部署web服务器

目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py 编辑luffy/luffy/urls.py 运行并测试 uWSGI部署 测试运行uWSGI 使用uWSGI运行django项目 uWSGi热加载Djangoa项目 部署nginx nginx配置uwsgi和django django部署static文件 重新加载nginx进行测试 测试nginx

Django+nginx+uwsgi架构部署

一.环境: Django版本:  Django-1.10.6.tar.gz Nginx 版本: nginx-1.11.10.tar.gz uwsgi 版本: uwsgi-2.0.14.tar.gz 二.安装部署:(在网上能搜到很多这种架构的安装,大都是千篇一律,但是在配置中有几个点说的非常模糊,不够明确.使很多人陷入迷茫之中) 1.将Django.nginx和uwsgi进行源码安装,安装步骤比较简单. # mkdir -p /data/logs          ## 创建uwsgi日志目录 安

centos7下采用Nginx+uwsgi来部署django

之前写过采用Apache和mod_wsgi部署django,因为项目需要,并且想比较一下Nginx和Apache的性能,尝试采用Nginx+uwsgi的模式来部署django. 1.安装uwsgi以及Nginx 1 pip install uwsgi --目前的版本为2.0.15 2 yum install epel-release 3 yum install nginx* --目前的版本为1.10.2 2.测试 1 # test.py 2 def application(env, start_

nginx+uwsgi+django部署流程

当我们在用django开发的web项目时,开发测试过程中用到的是django自带的测试服务器,由于其安全及稳定等性能方面的局限性,django官方并不建议将测试服务器用在实际生产. nginx+uwsgi+django是我们常用的django部署方式.nginx作为最前端的服务器,他负责接收所有的客户端请求,对于请求的静态文件,由nginx服务器自己完成,因为它具有很好处理静态文件的能力,性能进行过优化,支持高并发量:uWSGI服务器作为支持服务器,是用来服务nginx的,nginx将请求的动态

Nginx+uWsgi生产部署Django

部署得过程很简单,部署得核心在于,为什么要这样做,每一个参数代表什么意思,最终的目的是得了解,一些基概念性的东西. uWsgi简介 说Uwsgi之前,先说一下Wsgi. 什么是Wsgi? WSGI: 是一种Web服务器网关接口,它是一个Web服务器(如Nginx) 与应用服务器(如uWSGI服务器)通信的一种规范. uWSGI是一个Web服务器,它实现了WSGI协议,uwsgi,http等协议,Nginx中HttpUwsgiModul的作用是与uWSGI服务器进行交换 那么那些框架自带了Wsgi

在ubuntu16上进行nginx+uwsgi+django部署的简要步骤

网上有很多部署教程,说了一大堆,遇到坑还是要自己一个个解决,这里有几个比较重要的坑大家一定要注意. 1.首先要安装python和python-dev环境,如果没有安装python-dev后面安装有些依赖要报错.这是第一个坑. apt-get install python python-dev pip 2.安装uwsgi要先安装gcc的编译环境.这是第二个坑.如果不安装gcc运行uwsgi也不会报错,后台进程就是不启动. 我被这个坑了很久. apt-get install gcc 3.找一个目录,

Ubuntu + Django(DRF) + channels(websocket)+NGINX + uwsgi 环境部署

原来uwsgi并不能启动  asgi  呀!现在才知道,就因为这一点我花了一周时间才成功啊!!!!!!!! 是呀!你启动uwsgi 是将你的项目启动了,可是你也发现虽然启动了,但是你的websocket不能访问???why?? 原因是你的ASGI没有启动 明明你使用python manage.py runserver 是可以访问的,但是为啥部署到服务器上不能访问呢? 原因是uwsgi服务器不能启动ASGI, 但是你启动了WSGI所以可以访问HTTP请求,你可以留意一下启动的日志....坑啊! 要

nginx+uwsgi启动Django项目

1.安装项目环境 系统环境:ubuntu16.04 python环境:python3.5.2 Django版本:django1.11.7 nginx环境:nginx_1.10.3 虚拟环境:virtualenv15.1.0 uwsgi版本:uwsgi2.0.17.1 安装并进入项目虚拟环境: sudo apt-get install virtualenv virtualenv -p python3 env_my_project source env_my_project/bin/activate

ubantu+nginx+uwsgi+django部署

1.更新ubantu的apt apt-get update 必要时候更新系统:      apt-get upgrade 2.远程连接服务器 ssh 用户名@ip 上传代码 :        scp 本地文件夹/文件   用户名@ip:远程存放位置 3.安装数据库 apt-get install mysql-server mysql-client libmysqlclient-dev (ps:如果不安装libmysqlclent-dev,接下来安装mysql-python可能会报错) 安装完成以