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 ...
随机推荐
- Spring Boot初识(1)-了解Spring Boot
写在前面:半年工作经验的Java程序员一枚,奈何公司用的是自研的Web框架和RPC框架,本着good good study,day day up的精神和为以后发展的考虑觉得自己需要学点开源的东西,写的 ...
- php手撸轻量级开发(二)框架加载
先上图,有图有真相 1. 加载index文件 index文件是整个项目的唯一入口,任何请求进入项目都是走的index,只是带的参数不一样,然后再在index文件里加载其他文件,相当于把其他文件整个复制 ...
- POJ 3037 Skiing(如何使用SPFA求解二维最短路问题)
题目链接: https://cn.vjudge.net/problem/POJ-3037 Bessie and the rest of Farmer John's cows are taking a ...
- SpringMVC4+MyBatis+SQL Server2014实现读写分离
前言 基于mybatis的AbstractRoutingDataSource和Interceptor用拦截器的方式实现读写分离,根据MappedStatement的boundsql,查询sql的sel ...
- 清除电脑垃圾.bat
echo.title delete cachecolor 0aecho.echo please enter any key start.....@echo offecho execuing delet ...
- ssh介绍
一.SSH概念(百度) SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH ...
- 【协议】3、HTTP 协议入门
HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 更是让它成为技术热点. 本文介绍 HTTP 协议的历史演变和设计思路. 一.HTTP/0.9 HTTP 是基于 TCP ...
- Java集合之Hashtable源码分析
概述 Hashtable也是基于哈希表实现的, 与map相似, 不过Hashtable是线程安全的, Hashtable不允许 key或value为null. 成员变量 Hashtable的数据结构和 ...
- HTML--Canvas基础入门
一 HTML5画布基本介绍 1.HTML5专门为画布功能提供的标签:<canvas>,所以画布相关的功能都是基于这个标签来完成的; <canvas id="canvas&q ...
- 【读书笔记】iOS-WiFi长连接
如果你的应用需要一个持久的WiFi长连接,你可以通过设置应用的Info.plist文件中的UIRequiresPersistentWiFi配置项的Boolean值来达到目的.如果这个配置项的值为YES ...