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 项目了。
关于其中的 http 和 socket 字段,当只用 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部署项目完整的更多相关文章
- Nginx+uwsgi+django部署项目
nginx把请求转发给uwsgi,然后把uwsgi处理得到的结果返回给浏览器. 安装nginx: yum -y install gcc pcre-devel openssl-devel #安装Ngin ...
- 使用docker-compose+nginx+uwsgi+django部署项目
(1)centos上下载docker + docker-compose (2)基础目录 (3)首先创建一个纯净的python+django+uwsgi的镜像,便于后期使用(也可不用创建,后期docke ...
- Nginx+uWSGI+Django部署web服务器
目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py ...
- 学习VirtualEnv和Nginx+uwsgi用于django项目部署
以下叙述中用到的操作系统:Linux CentOS 6.X. 最近几天了解一下VirtualEnv,Apache+Daemon mode,Nginx+uwsgi的概念,并且在项目中实验性部署了一下(目 ...
- 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 ...
- ubuntu16.4+nginx+uwsgi+Django 部署上线
Nginx概述 Nginx是一款轻量级的HTTP服务器,采用事件驱动和异步非阻塞处理方式框架,这让其具有极好的IO性能,市场用于服务端的反向代理和负载均衡 Nginx优点 高并发连接:官方测试Ngin ...
- centos7下采用Nginx+uwsgi来部署django
之前写过采用Apache和mod_wsgi部署django,因为项目需要,并且想比较一下Nginx和Apache的性能,尝试采用Nginx+uwsgi的模式来部署django. 1.安装uwsgi以及 ...
- Nginx+uWsgi生产部署Django
部署得过程很简单,部署得核心在于,为什么要这样做,每一个参数代表什么意思,最终的目的是得了解,一些基概念性的东西. uWsgi简介 说Uwsgi之前,先说一下Wsgi. 什么是Wsgi? WSGI: ...
- nginx+uwsgi+django部署流程
当我们在用django开发的web项目时,开发测试过程中用到的是django自带的测试服务器,由于其安全及稳定等性能方面的局限性,django官方并不建议将测试服务器用在实际生产. nginx+uws ...
随机推荐
- ABP框架
https://aspnetboilerplate.com/ https://aspnetboilerplate.com/Pages/Documents http://www.cnblogs.com/ ...
- Django Rest Framework之认证
代码基本结构 url.py: from django.conf.urls import url, include from web.views.s1_api import TestView urlpa ...
- thinkphp链接多个数据库时怎么调用M方法?
老项目tp3.1.3,有N个数据库,thinkphp好久没用了,不知道怎么用M方法了,代码测验成功! 数据库名称: 2.直接上代码 $custom = M('base','branch_','shop ...
- inheritCombinedParasitic.js
// 寄生组合式继承 // 其基本思路是通过借用构造函数来继承属性,通过原型链的混成形式来继承方法,就是为了不必为了子类型的原型去调用父类型的构造函数 function inheritPrototyp ...
- Docker-compose 编排工具安装
介绍 Compose 是一个定义和管理多容器的工具,使用Python语言编写,使用Compose配置文件描述多个容器应用的架构, 比如什么镜像,数据卷,网络,映射端口等:然后一条命令管理所有服务,比如 ...
- DOM事件-调用函数
通过调用函数改变其内容: <!DOCTYPE html> <html lang="en" dir="ltr"> <head> ...
- IDEA项目搭建八——使用MybatisPlus简化数据库交互
一.MybatisPlus简化数据库交互 我们使用Mybatis发现需要在mapper.xml中写很多重复的简单CRUD(增删改查),使用MybatisPlus可以大大简化这部分代码,官方文档http ...
- python自动化开发-7
socket编程 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对 ...
- WebLogic登录管理控制台、以及相关问题解决
1.控制台的登录 登录地址是: http://管理实例IP:端口号/console 其中,管理实例的IP或者是管理实例所在主机的主机名 端口号默认7001 因此通过http://localhost:7 ...
- 基于InfluxDB实现分页查询功能
InfluxDB作为时序数据库中的翘楚,应用范围非常广泛,尤其在监控领域. 最近做了一个功能,将InfluxDB中的数据查询出来后,在前台分页展现,比如每页10条,一共100页,可以查看首页.末页,进 ...