day66:Linux:nginx+uwsgi+django跑python项目
目录
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项目的更多相关文章
- Linux - nginx+uWSGI+django+virtualenv+supervisor发布web服务器
目录 Linux - nginx+uWSGI+django+virtualenv+supervisor发布web服务器 crm django项目部署流程 使用supervisro启动uwsgi,退出虚 ...
- Nginx+uwsgi+django+vue部署项目
购买服务器 # 购买阿里云服务器 # 短期或是测试使用,创建 按量收费 服务器,可以随时删除,删除后不再计费,但要保证账户余额100元以上 连接服务器 1)账号 >: ssh root@39.9 ...
- Nginx+uWSGI+Django+Python+ MySQL 搭建可靠的Python Web服务器
一.安装所需工具 yum -y install gcc gcc-c++ rpm-build mysql* libtool-ltdl* libtool automake autoconf libtool ...
- python部署到服务器(2) 一一 nginx+uwsgi+Django
参考菜鸟教程,https://blog.csdn.net/qq_42314550/article/details/81805328, 和 https://www.cnblogs.com/chenice ...
- Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器
Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器 闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的. 准备工作 我使用的系统是Ubuntu16 ...
- Nginx+uwsgi+Django 的web应用环境部署-完整记录
Python作为当前最火爆最热门,也是最主要的Web开发语言之一,在其二十多年的历史中出现了数十种Web框架,比如Django.Tornado.Flask.Twisted.Bottle和Web.py等 ...
- Nginx+uWSGI+Django部署web服务器
目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py ...
- 五步教你实现使用Nginx+uWSGI+Django方法部署Django程序
Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.ng ...
- 安装Nginx+uWSGI+Django环境
Ubuntu Server 12.04 安装Nginx+uWSGI+Django环境 今天要介绍的是利用APT源直接apt-get install安装配置我们所需要的环境,首先按惯例先安装MySQL和 ...
- nginx+uwsgi+django开发环境搭建
Nginx+uWSGI+Djangoi开发环境搭建 Django简介,环境搭建 uWSGI简介,安装与配置 Nginx安装与配置 Nginx+uWSGI+Django原理解析 1.django简介,环 ...
随机推荐
- K8S的kubectl命令详解
一.kubectl 基本命令 1.陈述式资源管理方法: 1.kubernetes集群管理集群资源的唯一入口是通过相应的方法调用apiserver的接口 2.kubectl 是官方的CLI命令行工具,用 ...
- heiamJava16IO流
Java I/O流 按流的方向分 输入输出流 I表示intput(输入),是数据从硬盘文件读入到内存的过程,称之输入,负责读. O表示output(输出),是内存程序的数据从内存到写出硬盘文件的过程, ...
- HTTPS的实现原理 ---- 核心 SSL/TLS协议
是在应用层和 传输层之间 添加的 安全层(SSL/TLS协议) 端口号 :HTTP 默认是 80,HTTPS 默认是 443. URL 前缀 :HTTP 的 URL 前缀是 http://,HTTPS ...
- drf认证与权限
1 认证 # 登录认证--->某个接口必须登录后才能房屋# 登录接口--->登录成功返回随机字符串--->携带随机字符串[认证] 通过,再继续访问某个接口# 读APIView源码时, ...
- getchar()函数的详解以及使用时需要注意的一些细节-C语言基础
这篇文章要探讨的是"getchar()函数的详解以及使用时需要注意的一些细节".涉及getchar()函数的应用和需要注意的问题.属于C语言基础篇(持续更新). 在C语言的学习过程 ...
- 9、http cache管理器
jmeter决定是否缓存的功能 2.操作步骤:
- java 循环删除数据写法
import java.util.ArrayList;import java.util.ConcurrentModificationException;import java.util.List;// ...
- 持续集成环境(4)-Jenkins凭证管理
凭据可以用来存储需要密文保护的数据库密码.Gitlab密码信息.Docker私有仓库密码等,以便 Jenkins可以和这些第三方的应用进行交互. 安装Credentials Binding插件 要在J ...
- tcpdump在wlan抓包时的可用过滤器
抓包前使用iw命令创建一个监听模式(monitor)的接口 iw phy phy0 interface add mon0 type monitor tcpdum抓包命令: tcpdump -nei m ...
- Spring--案例:百度网盘密码数据兼容处理
案例再度来袭 也就是说,在百度网盘的密码复制时,后面即使有空格也能提取成功(trim方法) 案例的实现: 也就是实现存在空格时,也能输出true: 现在的话: 那么,我们应该如何使得它忽略空格呢? 这 ...