目录

0.uwsgi简述

1.使用uwsgi+django运行demo

2.nginx+uwsgi+django跑pythonav项目

0.uwsgi简述

1.什么是wsgi

WSGI,全称Web Server Gateway Interface,是作为python语言定义的web服务器和web应用程序之间的一种简单通用的接口。

WSGI的官方定义,the Python Web Server Gateway Interface。从名字就可以看出来,这是一个Gateway网关。name网关的作用就是在协议之间进行切换

也就是说,WSGI就像是一座桥梁,一边连着web服务器,另一边连着web应用程序

2.什么是uWSGI

uWSGI实现了WSGI、HTTP等数据交换协议、简单来说,我们将项目通过uwsgi方式运行,就可以直接对外提供服务,而无需依托于nginx。

3.uWSGI为什么需要nginx?

通常情况下Python中的django框架或Flask框架可以通过uwsgi方式对外提供服务。为什么还需要nginx呢?

1.安全:后端服务直接以http对外提供访问,往往会暴露后端的真实服务,如果使用nginx可以很好的隐藏后端的服务,并且nginx能够实现安全限制、Rewrite、HTTPS等功能。(这些都是uwsgi无法实现的)

2.效率:nginx可以直接处理静态资源,然后将动态内容通过uwsgi协议转发给后端django,实现动静分离,提供更好的请求与响应。

1.使用uwsgi+django运行demo

step1.安装python3环境

yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel \
sqlite-devel gcc gcc-c++ openssl-devel zlib zlib-devel python3 python3-devel -y

step2.安装django框架和uwsgi

pip3 install -i https://mirrors.aliyun.com/pypi/simple/ --upgrade pip
pip3 install -i https://mirrors.aliyun.com/pypi/simple/ django==2.1.8
pip3 install -i https://mirrors.aliyun.com/pypi/simple/ uwsgi

step3.配置django工程

[root@oldboy-pythonedu demosite]# cd /opt/
[root@oldboy-pythonedu opt]# django-admin.py startproject demosite
[root@oldboy-pythonedu opt]# cd demosite/
[root@oldboy-pythonedu demosite]# python3 manage.py runserver 0.0.0.0:9999 # 启动测试

step4.配置uwsgi

[root@oldboy-pythonedu opt]# cat /opt/demosite/uwsgi.ini
[uwsgi]
#uwsgi监听的端口
socket = 127.0.0.1:9999
#uwsgi启动进程数
workers = 2
#最大接收的请求数
max-requests = 1000
#buffer缓冲区大小
buffer-size = 30000
#进程pid存放路径
pidfile = /run/uwsgi.pid
#uwsgi日志存储路径
daemonize = /var/log/uwsgi.log [root@oldboy-pythonedu demosite]# uwsgi --ini /opt/demosite/uwsgi.ini
[root@oldboy-pythonedu demosite]# netstat -lntp | grep 9999
tcp 0 0 127.0.0.1:9999 0.0.0.0:* LISTEN 9827/uwsgi

step5.配置nginx

[root@oldboy-pythonedu opt]# cat /etc/nginx/conf.d/uwsgi.oldboyedu.com.conf
server {
listen 80;
server_name uwsgi.oldboyedu.com;
client_max_body_size 100M;
index index.html; #默认返回页面 location / {
uwsgi_pass 127.0.0.1:9999;
uwsgi_param UWSGI_CHDIR /opt/demosite; #工程所在的路径
uwsgi_param UWSGI_SCRIPT demosite.wsgi; #demosite/wsgi接口文件
include uwsgi_params;
}
}

2.nginx+uwsgi+django跑pythonav项目

step1.下载项目包文件

cd /code/
wget http://cdn.xuliangwei.com/pythonav.zip
unzip pythonav.zip
pip3 install -i https://pypi.doubanio.com/simple/ -r /code/pythonav/requirements.txt

step2.在10.0.0.202创建一个名字为pythonav的数据库

create database pythonav;

step3.更改pythonav项目的配置文件(配置数据库)

vim pythonav/pythonav/settings.py
# ################### MySQL ###################
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'pythonav',
'USER': 'all',
'PASSWORD': 'Oldxu.com123',
'HOST': '10.0.0.202',
'PORT': '3306',
}
}

step4.更改pythonav项目的配置文件:ALLOW_HOST

ALLOW_HOST=['*']

step5.数据库迁移+创建超级用户+收集静态资源

python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py createsuperuser
python3 manage.py collectstatic

step6.修改pythonav项目中的uwsgi的配置文件

vim pythonav_uwsgi.ini
[uwsgi]
#uwsgi监听的端口
socket = 127.0.0.1:8811
chdir = /code/pythonav/
wsgi-file = pythonav/wsgi.py
#uwsgi启动进程数
processes = 4
threads = 10
#最大接收的请求数
max-requests = 1000
#buffer缓冲区大小
buffer-size = 30000
#进程pid存放路径
pidfile = /run/uwsgi-pythonav.pid
#uwsgi日志存储路径
daemonize = /var/log/uwsgi-pythonav.log

step7.修改nginx配置文件

[root@oldboy-pythonedu pythonav]# cat /etc/nginx/conf.d/pythonav.oldboyedu.com.conf
server {
listen 80;
server_name pythonav.oldboyedu.com;
client_max_body_size 100M; location /static {
alias /code/pythonav/static;
} location / {
uwsgi_pass 127.0.0.1:8811;
include uwsgi_params;
}
}

Tip:一个停止指令

kill $(ps -ef |grep bbs_uwsgi | grep -v grep  | awk '{print $2}' | xargs )

总结

当用Linux+nginx+uwsgi+django跑项目时,只需完成这五个步骤即可。

  1.安装模块

  2.配置数据库连接

  3.初始化数据库

  4.配置uwsgi

  5.配置nginx

day66:Linux:nginx+uwsgi+django跑python项目的更多相关文章

  1. Linux - nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    目录 Linux - nginx+uWSGI+django+virtualenv+supervisor发布web服务器 crm django项目部署流程 使用supervisro启动uwsgi,退出虚 ...

  2. Nginx+uwsgi+django+vue部署项目

    购买服务器 # 购买阿里云服务器 # 短期或是测试使用,创建 按量收费 服务器,可以随时删除,删除后不再计费,但要保证账户余额100元以上 连接服务器 1)账号 >: ssh root@39.9 ...

  3. Nginx+uWSGI+Django+Python+ MySQL 搭建可靠的Python Web服务器

    一.安装所需工具 yum -y install gcc gcc-c++ rpm-build mysql* libtool-ltdl* libtool automake autoconf libtool ...

  4. python部署到服务器(2) 一一 nginx+uwsgi+Django

    参考菜鸟教程,https://blog.csdn.net/qq_42314550/article/details/81805328, 和 https://www.cnblogs.com/chenice ...

  5. Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器

    Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器 闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的. 准备工作 我使用的系统是Ubuntu16 ...

  6. Nginx+uwsgi+Django 的web应用环境部署-完整记录

    Python作为当前最火爆最热门,也是最主要的Web开发语言之一,在其二十多年的历史中出现了数十种Web框架,比如Django.Tornado.Flask.Twisted.Bottle和Web.py等 ...

  7. Nginx+uWSGI+Django部署web服务器

    目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py ...

  8. 五步教你实现使用Nginx+uWSGI+Django方法部署Django程序

    Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.ng ...

  9. 安装Nginx+uWSGI+Django环境

    Ubuntu Server 12.04 安装Nginx+uWSGI+Django环境 今天要介绍的是利用APT源直接apt-get install安装配置我们所需要的环境,首先按惯例先安装MySQL和 ...

  10. nginx+uwsgi+django开发环境搭建

    Nginx+uWSGI+Djangoi开发环境搭建 Django简介,环境搭建 uWSGI简介,安装与配置 Nginx安装与配置 Nginx+uWSGI+Django原理解析 1.django简介,环 ...

随机推荐

  1. Java代码结构

    Java代码结构 顺序结构 Java的基本结构为顺序结构,除非特别指明,否则从上到下一句一句执行 选择结构 if单选择结构 if(condition){ doSomething(); } if双选择结 ...

  2. Spring Cloud netty

    <properties> <spring.boot.version>2.3.2.RELEASE</spring.boot.version> <spring.c ...

  3. c语言动态数组

    动态数组根据用户的需要开创空间 避免造成空间的浪费 #include<stdio.h> #include<stdlib.h> typedef struct { int *par ...

  4. SQL Network Interfaces, error: 50 - 发生了 Local Database Runtime 错误。无法创建自动实例

    1. sqllocaldb delete MSSQLLocalDB 2. sqllocaldb create

  5. C知识点

    1.变量在内存中所占存储空间的首地址,称为该变量的地址:而变量在存储空间中存放的数据,即变量的值. C语言中,指针就是变量的地址.一个变量的值是另一个变量的地址,且变量类型相同,则称该变量为指针变量. ...

  6. SQL语句用法总结

    use quan56_goods; 使用数据库 show tables; 展示数据表 模糊查询 select * from tb_brand where name like '%林%'; 顺序 书写顺 ...

  7. DRF_基本使用

    基本使用 视图内 from rest_framework.viewsets import ModelViewSet from app01 import models from app01 import ...

  8. pom文件信息的解析

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  9. python字符操作超全总结

    在python中,字符串是数据类型之一,属于不可变序列. 转义字符的使用 转义字符是指使用反斜杠"\"对一些特殊字符进行转义.几个常用的转义字符如下: \   -续行 \n -换行 ...

  10. 如何使用webgl(three.js)实现3D消防、3D建筑消防大楼、消防数字孪生、消防可视化解决方案——第十八课(一)

    序: 又是很久没出随笔文章了,一篇文章有时候整理一天,实在是抽不出来时间. 最近在回顾几年前的项目时,发现这个智慧三维消防可视化项目很有回顾价值,索性就拿出来讲讲. 首先,我们要知道消防里的知识,不是 ...