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 ...
随机推荐
- C#效率优化(2)-- 方法内联
一.JIT编译器可以通过将方法内联展开(Method Inline Expansion)来提升效率,类似C++中的内联函数(Inline Function),与C++的内联函数不同的是,C#并不支持内 ...
- nginx介绍(五) - 高可用
前言 即便想 nginx 这么牛B的服务器, 也不能保证他不挂啊, 就算不是机器出故障, 比如, 停电了, 那么机器挂了, 很正常啊. 这时候, 没有分发服务器, 网站就不能正常访问了, 咋搞? 网站 ...
- orcal10g下载地址
http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_database.zip https://updates.orac ...
- [APC001] D Forest
Description 给定\(n\)个点\(m\)条边组成的森林,每个点有权值\(a_i\).现在需要将森林连成一棵树,选择两个点\(i,j\)连边的代价是\(a_i+a_j\),每个点最多被选择连 ...
- SQL SERVER 数据库面试题
1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name kecheng fenshu 张三 语文 81张三 数学 75李四 语文 ...
- HTML5仿微信公众号界面
jQuery连接: https://pan.baidu.com/s/1Qj948NPMDmcqzcMyKm8nMw 密码:vewr 图片连接: https://pan.baidu.com/s/1Fha ...
- [android] 手机卫士设备管理权限锁屏
设备管理员 Device Admin 获取DevicePolicyManager对象,通过getSystemService(DEVICE_POLICY_MANAGER),设备策略管理器 调用Devic ...
- slf4j日志的使用
slf4j(simple logging facade for Java)是Java的简单的日志门面,它不是具体的日志解决方案,它只服务于各种各样slf4j-logo的日志系统.这里的slf4j-lo ...
- JDK源码解析之Java SPI机制
1. spi 是什么 SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件. 系统设计的各个抽象,往往 ...
- Best way to learn android and java?
Question: I have been getting my feet wet with android sdk, eclipse, and other various beginner step ...