目录

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. BGP反射器

    路由反射器是一种减少自治系统内IBGP对等体连接数量的方法. 根据BGP路由通告原则,要求一个AS内的所有BGP Speaker将建立全连接关系(BGP Speaker两两建立邻接关系).当AS内的B ...

  2. Shell脚本结构化-控制流

    脚本结构化命令 上一章给出的那些 shell 脚本里,shell 按照命令在脚本中出现的顺序依次进行处理.对顺序操作来说,这已经足够了,因为在这种操作环境下,你想要的就是所有的命令按照正确的顺序执行. ...

  3. 【项目记录】2:python3 使用MySQL 出现RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods 报错

    报错是因为缺少了一个库 cryptography  导入了就好了. ps:如果是本机,输入IP会报错,直接使用localhost可连接数据库

  4. Pycharm 2021.3 的激活破解教程,永久激活,亲测有效

    关注公众号回复 pycharm 即可获取激活脚本和教程 更新时间 2022年1月20日. 不定时更新 激活码可在公众号中回复[激活码]获取.

  5. ASP.NET Core 读取配置文件信息

    一:读取配置文件 先来看一下appsettings.json文件的内容,如下图: { "ConnectionStrings": { "ServerConnection&q ...

  6. 12、jmeter逻辑控制器-临界区控制器

    临界区:说白了就是不并发了 一个个的像独木桥 使用场景:比如提交一个数据  需要一个一个的提交  一个个的改   在数据库改操作的时候 需要用到 临界区控制器 案例:临界区控制器

  7. ROS突发限速参考资料

    MT-Rate-Limit - Datarate limitation for clients. Format is: rx-rate[/tx-rate] [rx-burst-rate[/tx-bur ...

  8. ggplot2: display every nth value on discrete axis

    every_nth = function(n) { return(function(x) {x[c(TRUE, rep(FALSE, n - 1))]}) } ggplot(mpg, aes(x = ...

  9. 记一下Linux环境SpringBoot 用OpenOffice Word转PDF

    环境 Windows或者Linux 首先安装 deb方式 tar -xvzf Apache_OpenOffice_XXXX_Linux_x86-64_install-deb_zh-CN.tar.gz ...

  10. tcpdump在wlan抓包时的可用过滤器

    抓包前使用iw命令创建一个监听模式(monitor)的接口 iw phy phy0 interface add mon0 type monitor tcpdum抓包命令: tcpdump -nei m ...