一、打包Django应用

1.创建setup.py文件

  1. from setuptools import setup
  2. import glob
  3. setup(name='blog',
  4. version='1.0',
  5. description='blog project',
  6. author='Keith',
  7. author_email='329640305@qq.com',
  8. url='https://www.python.org/',
  9. packages=['blog', 'user', 'post'],
  10. py_modules=['manage'],
  11. data_files=glob.glob('templates/*.html') + ['requirements']
  12. )

2.保存项目中使用的库

  1. pip freeze > requirements

3.打包源码

  1. python3 setup.py sdist

二、在部署server上安装依赖包

  1. pip3 install -r requirements

三、修改Django配置文件

  1. sed -i -e 's/DEBUG.*/DEBUG = False/' -e 's/ALLOWED_HOSTS.*/ALLOWED_HOSTS = ["*"]/' blog/settings.py

四、测试运行

  1. python3 manage.py runserver 0.0.0.0:8001

第一种部署方式,直接以http方式启动

1.安装uwsgi

  1. pip3 install uwsgi

2.运行app

  1. 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,放在项目根目录下

  1. [uwsgi]
  2. socket = 127.0.0.1:8001
  3. chdir = /opt/blog-1.0/
  4. wsgi-file = blog/wsgi.py
  5. master = true
  6. workers = 3
  7. stats = 127.0.0.1:8002
  8. stats-http = true

2.运行app

  1. uwsgi blog.ini

第三种部署方式,使用systemd管理uwsgi

1.创建service文件

  1. vim /usr/lib/systemd/system/blog.service
  2. [Unit]
  3. Description=uWSGI Emperor
  4. After=syslog.target
  5. [Service]
  6. ExecStart=/usr/local/bin/uwsgi --ini /opt/blog-1.0/blog.ini
  7. # Requires systemd version 211 or newer
  8. RuntimeDirectory=uwsgi # 会创建/var/run/uwsgi目录
  9. Restart=always
  10. KillSignal=SIGQUIT
  11. Type=notify
  12. StandardError=syslog
  13. NotifyAccess=all
  14. [Install]
  15. WantedBy=multi-user.target

2.启动服务

  1. systemctl start blog.service
  2. systemctl status blog.service
  3. systemctl enable blog.service

还有一个重要的部分,那就是提供Nginx代理

1、安装tengine,很简单,过程略...

2、修改Nginx配置

  1. server {
  2. listen 80;
  3. server_name localhost;
  4. # http代理
  5. # location ^~ /api/ {
  6. # rewrite ^/api(/.*) $1 break;
  7. # proxy_pass http://127.0.0.1:8001;
  8. # }
  9. # socket代理
  10. location ^~ /api/ {
  11. rewrite ^/api(/.*) $1 break;
  12. include uwsgi_params;
  13. uwsgi_pass 127.0.0.1:8001;
  14. }
  15. # 根路径,通常是前端SPA单页面应用的入口
  16. location / {
  17. root html;
  18. index index.html index.htm;
  19. }
  20. }

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应用的更多相关文章

  1. 填坑!!!virtualenv 中 nginx + uwsgi 部署 django

    一.为什么会有这篇文章 第一次接触 uwsgi 和 nginx ,这个环境搭建,踩了太多坑,现在记录下来,让后来者少走弯路. 本来在 Ubuntu14.04 上 搭建好了环境,然后到 centos7. ...

  2. nginx + uwsgi 部署 Django+Vue项目

    nginx + uwsgi 部署 Django+Vue项目 windows 本地 DNS 解析 文件路径 C:\Windows\System32\drivers\etc 单机本地测试运行方式,调用dj ...

  3. Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统

    Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...

  4. nginx + uwsgi 部署django项目

    因项目需求,需要部署django项目,这里是基础的nginx配合uwsgi部署django,后续会采用docker部署的方式 环境: centos7 python3.5.4 django2.1.4 u ...

  5. 使用uWSGI部署django项目

    先说说什么是uWSGI吧,他是实现了WSGI协议.uwsgi.http等协议的一个web服务器,那什么是WSGI呢? WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx)与应用服务 ...

  6. 生产环境使用Nginx+uwsgi部署Django

    在本地运行django应用相对来说还是挺方便的,使用自带的runserver启动即可.如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等 在网上找到了不错的部署的教 ...

  7. 跨过Nginx上基于uWSGI部署Django项目的坑

    先说说他们的关系,Nginx和uWSGI都是Web服务器,Nginx负责静态内容,uWSGI负责Python这样的动态内容,二者配合共同提供Web服务以实现提高效率和负载均衡等目的.uWSGI实现了多 ...

  8. Nginx + uWSGI 部署Django 项目,并实现负载均衡

    一.uWSGI服务器 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI ...

  9. CENTOS7 使用 Nginx + Uwsgi 部署 Django 项目

    写在前面的话 最近总是见到有新学 Django 的朋友在部署自己的项目到 Linux 上面的时候运行不起来,所以就动手写了这篇博客. 对于不会搭建 Python 3 环境的朋友可以参考前面的博客[CE ...

  10. 使用Nginx+uWSGI部署Django项目

    1.linux安装python3环境 参考链接:https://www.cnblogs.com/zzqit/p/10087680.html 2.安装uwsgi pip3 install uwsgi l ...

随机推荐

  1. vue 过滤器基本使用

    Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化,例如时间戳格式化. 过滤器可以用在: 双花括号插值 v-bind 表达式 (2.1.0+ 开始支持). 过滤器应该被添加在 JavaSc ...

  2. elaticsear no [query] registered for [filtered] 错误

    1.问题描述 执行语句: GET /megacorp/employee/_search { "query" : { "filtered" : { "f ...

  3. 任务(task)

    任务概述 线程(Thread)是创建并发的底层工具,因此有一定的局限性(不易得到返回值(必须通过创建共享域):异常的捕获和处理也麻烦:同时线程执行完毕后无法再次开启该线程),这些局限性会降低性能同时影 ...

  4. CentOS7下安装Docker-Compose操作记录

    Docker-Compose是一个部署多个容器的简单但是非常必要的工具.安装Docker-Compose之前,请先安装 python-pip 一.安装 python-pip [root@workben ...

  5. E. Binary Numbers AND Sum

    链接 [http://codeforces.com/contest/1066/problem/E] 题意 给你长度分别为n,m的二进制串,当b>0时,对a,b,&运算,然后b右移一位,把 ...

  6. Linux内核设计与实现 第三章

    1. 进程和线程 进程和线程是程序运行时状态,是动态变化的,进程和线程的管理操作都是由内核来实现的. Linux中的进程于Windows相比是很轻量级的,而且不严格区分进程和线程,线程不过是一种特殊的 ...

  7. nginx+tpmcat+redis实现session共享

    nginx+tpmcat+redis实现session共享 版本:nginx nginx-1.8.0.tar.gztomcat apache-tomcat-7.0.78.tar.gzredis  re ...

  8. eclipse jee使用

    eclipse jee 安装 已经安装过elipse for Java,不知道会不会冲突? 查过,原来,你就算安装多个elipse for java都没事,更不用说jee.我选择的是eclipse-i ...

  9. Mark 韦氏拼音 邮政式拼音 和汉语拼音

    一直感觉很多大学名字不像是汉语拼音也不像是英文,百度了下原来是三种不同的拼音方式: 转载百度百科: 邮政式拼音和威妥玛拼音法并未完全消失.北京大学(Peking University).清华大学(Ts ...

  10. s-axis-config-tdata