使用uwsgi部署Django应用
一、打包Django应用
1.创建setup.py文件
from setuptools import setup
import glob
setup(name='blog',
version='1.0',
description='blog project',
author='Keith',
author_email='329640305@qq.com',
url='https://www.python.org/',
packages=['blog', 'user', 'post'],
py_modules=['manage'],
data_files=glob.glob('templates/*.html') + ['requirements']
)
2.保存项目中使用的库
pip freeze > requirements
3.打包源码
python3 setup.py sdist
二、在部署server上安装依赖包
pip3 install -r requirements
三、修改Django配置文件
sed -i -e 's/DEBUG.*/DEBUG = False/' -e 's/ALLOWED_HOSTS.*/ALLOWED_HOSTS = ["*"]/' blog/settings.py
四、测试运行
python3 manage.py runserver 0.0.0.0:8001
第一种部署方式,直接以http方式启动
1.安装uwsgi
pip3 install uwsgi
2.运行app
uwsgi --http :8001 --wsgi-file blog/wsgi.py --stats :8002 --stats-http
3.测试访问
http://ip:8001/post/?page=1&size=2
4.查看server状态
http://ip:8002/
第二种部署方式,提供配置文件,以socket方式运行
1.创建配置文件blog.ini,放在项目根目录下
[uwsgi]
socket = 127.0.0.1:8001
chdir = /opt/blog-1.0/
wsgi-file = blog/wsgi.py
master = true
workers = 3
stats = 127.0.0.1:8002
stats-http = true
2.运行app
uwsgi blog.ini
第三种部署方式,使用systemd管理uwsgi
1.创建service文件
vim /usr/lib/systemd/system/blog.service
[Unit]
Description=uWSGI Emperor
After=syslog.target
[Service]
ExecStart=/usr/local/bin/uwsgi --ini /opt/blog-1.0/blog.ini
# Requires systemd version 211 or newer
RuntimeDirectory=uwsgi # 会创建/var/run/uwsgi目录
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
2.启动服务
systemctl start blog.service
systemctl status blog.service
systemctl enable blog.service
还有一个重要的部分,那就是提供Nginx代理
1、安装tengine,很简单,过程略...
2、修改Nginx配置
server {
listen 80;
server_name localhost;
# http代理
# location ^~ /api/ {
# rewrite ^/api(/.*) $1 break;
# proxy_pass http://127.0.0.1:8001;
# }
# socket代理
location ^~ /api/ {
rewrite ^/api(/.*) $1 break;
include uwsgi_params;
uwsgi_pass 127.0.0.1:8001;
}
# 根路径,通常是前端SPA单页面应用的入口
location / {
root html;
index index.html index.htm;
}
}
3、启动Nginx服务
到这里,后端应用基本部署完成。
再把前端文件部署好,通过Nginx动静分离就完整了,这里就不说前端应用了。
另外,还有一种常见的部署方式,就是通过supervisord等这类进程管理服务来运行app,这里也不细说了。
参考:
https://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html#deploying-django
https://uwsgi-docs.readthedocs.io/en/latest/StatsServer.html
https://uwsgi-docs.readthedocs.io/en/latest/Systemd.html
https://uwsgi-docs.readthedocs.io/en/latest/Configuration.html
http://nginx.org/en/docs/http/ngx_http_uwsgi_module.html
使用uwsgi部署Django应用的更多相关文章
- 填坑!!!virtualenv 中 nginx + uwsgi 部署 django
一.为什么会有这篇文章 第一次接触 uwsgi 和 nginx ,这个环境搭建,踩了太多坑,现在记录下来,让后来者少走弯路. 本来在 Ubuntu14.04 上 搭建好了环境,然后到 centos7. ...
- nginx + uwsgi 部署 Django+Vue项目
nginx + uwsgi 部署 Django+Vue项目 windows 本地 DNS 解析 文件路径 C:\Windows\System32\drivers\etc 单机本地测试运行方式,调用dj ...
- Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统
Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...
- nginx + uwsgi 部署django项目
因项目需求,需要部署django项目,这里是基础的nginx配合uwsgi部署django,后续会采用docker部署的方式 环境: centos7 python3.5.4 django2.1.4 u ...
- 使用uWSGI部署django项目
先说说什么是uWSGI吧,他是实现了WSGI协议.uwsgi.http等协议的一个web服务器,那什么是WSGI呢? WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx)与应用服务 ...
- 生产环境使用Nginx+uwsgi部署Django
在本地运行django应用相对来说还是挺方便的,使用自带的runserver启动即可.如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等 在网上找到了不错的部署的教 ...
- 跨过Nginx上基于uWSGI部署Django项目的坑
先说说他们的关系,Nginx和uWSGI都是Web服务器,Nginx负责静态内容,uWSGI负责Python这样的动态内容,二者配合共同提供Web服务以实现提高效率和负载均衡等目的.uWSGI实现了多 ...
- Nginx + uWSGI 部署Django 项目,并实现负载均衡
一.uWSGI服务器 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI ...
- CENTOS7 使用 Nginx + Uwsgi 部署 Django 项目
写在前面的话 最近总是见到有新学 Django 的朋友在部署自己的项目到 Linux 上面的时候运行不起来,所以就动手写了这篇博客. 对于不会搭建 Python 3 环境的朋友可以参考前面的博客[CE ...
- 使用Nginx+uWSGI部署Django项目
1.linux安装python3环境 参考链接:https://www.cnblogs.com/zzqit/p/10087680.html 2.安装uwsgi pip3 install uwsgi l ...
随机推荐
- mysql 常用的几个函数
IF 函数 语法:`IF`(expr1,expr2,expr3); 当expr1为ture时,值为expr2,当expr1为false时,值为expr3. 如: IFNULL 函数 语法:IFNULL ...
- 【持续更新中···】Linux下的小技巧
1.Linux回到上级文件的命令: cd ..回到上一级目录(注意:cd 和..中间有空格) cd ~回到home目录 cd -回到某一目录
- vsftpd虚拟账户配置
1. 概述 FTP是文件传输协议,在内外网的文件传输中使用广泛. 本篇博客主要介绍FTP服务器的部署和测试. 2. 软件环境部署 查看系统是否安装FTP软件(vsftpd),执行命令:rpm -qa ...
- Zabbix监控系统部署:基本功能测试
1. 概述2. 登陆2.1 登陆账号密码2.1 设置中文语言环境3. 创建用户3.1 用户创建入口3.2 添加用户信息3.3 用户报警媒介3.4 用户权限4. 创建监控主机4.1 添加一台监控主机4. ...
- IDEA启动服务阻塞,断点过程十分慢的问题
使用debug无法启动项目但是使用run就可以启动程序,而且启动比以前的debug模式快的多 原因: 启动不了的原因是在项目中的方法上打了断点,导致项目无法继续编译 取消方法断点就可以了 在idea官 ...
- linux-流程控制语言
if: for: 增强for循环 while: 统计这个目录下所有文件的大小 编写脚本 执行 help text:
- C_数据结构_循环队列
# include <stdio.h> # include <malloc.h> typedef struct Queue { int * pBase; int front; ...
- C++STL——优先队列
一.相关定义 优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素.但是它有一个特性,就是队列中最大的元素总是位于队首,所以出队时,并非按照先进先出的原则进行,而是将当前队列中最大的元素出队.这 ...
- <构建之法>8,9,10章的读后感
第八章 这一章主要讲的是需求分析,主要介绍在客户需求五花八门的情况下,软件团队如何才能准确而全面地找到这些需求. 第九章 问题:我们现在怎样培养才能成为一名合格的PM呢? 第十章 问题:如果典型用户吴 ...
- 分布式版本控制系统Git的安装与使用(作业2)
(本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2103) 分布式版本控制系统Git的安装与使用 一.安装Git b ...