Django项目部署-uWSGI

Django运维部署框架

整体部署架构

在这里插入图片描述

操作系统: Linux 。优势:生态系统丰富,程序支持度高,如docker在linux的性能就比在windows好

数据库: Mariadb / Mysql。优势:开源,性能强劲的关系型数据库

前端web服务器: Nginx

后端app服务器: uWSGI

web服务器与web应用服务器的区别

Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL。web服务器专注http请求的处理与返回,通用性,如nginx和apache可以处理所有http请求然后返回静态文件内容

Web应用服务器是通过很多协议来为应用程序提供(serves)商业逻辑,具备解释服务端代码能力。Web应用服务器专注程序框架和动态内容的处理,专用性,如tomcat只能处理java程序而不能处理python程序

简单归纳一下两者的区别: web服务器专注提供静态文件内容,web应用(app)服务器专注提供动态内容

常见的 web服务器 、web应用服务器

软件名词是否Web服务器是否app服务器
IIS
Nginx
Apache
Tomcat
Jetty
WebSphere
WebLogic
uWSGI

部署环境准备

安装python3

卸载原有Python3

whereis python3 |xargs rm -frv

重新安装python3,新建一个脚本文件

CentOS7-installpython3.sh

#!/bin/sh
yum groupinstall -y "Development tools"
yum install -y sqlite-devel ncurses-devel ncurses-libs zlib-devel mysql-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl-devel libffi-devel
curl -O -sSL https://npm.taobao.org/mirrors/python/3.8.10/Python-3.8.10.tar.xz && xz -d Python-3.8.10.tar.xz && tar xvf Python-3.8.10.tar
cd Python-3.8.10
./configure
make&& make install
cd ..
rm -rf Python-3.8.10 Python-3.8.10.tar.xz

执行该脚本

安装mariadb

可参考该篇文章:https://blog.csdn.net/qq_44614026/article/details/128735494?spm=1001.2014.3001.5502

安装Django和相关模块

导出项目需要安装的模块:pip freeze > requirements.txt

安装需要的模块:pip install -r requirements.txt

python manage.py runserver 检查django相关的模块是否安装好

Django托管服务器uWSGI

uWSGI(Web Server Gateway Interface)

  • WSGI是Web服务器网关接口。属于web服务器和应用程序之间的通信协议
  • uwsgi协议是uWSGI服务器使用的本地协议。它是一个二进制协议,可以携带任何类型的数据。属性线路协议。
  • uWSGI是一个全功能的HTTP服务器,实现了WSGI协议、uwsgi协议、http协议等。它要做的就是把HTTP协议转化成语言支持的网络协议。比如把HTTP协议转化成WSGI协议,让Python可以直接使用。

uWSGI文档中文版:https://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/Download.html

使用uWSGI
配置

安装 pip install uwsgi

在项目根目录下创建一个uwsgi.ini文件

[uwsgi]
chdir =/data/project/autotpsite/
// 项目根目录
module = autotpsite.wsgi:application
// 指定wsgi模块下的application对象
http = 0.0.0.0:8888
// 对本机8888端口提供服务
master = true
// 主进程
pidfile = /data/project/autotpsite/uwsgi8888.pid
// pid 文件,用于脚本启动,停止该进程
daemonize = /data/project/autotpsite/uwsgi_server.log
// 日志文件

sqtp应用目录下的apps.py文件下增加path配置

from django.apps import AppConfig


class SqtpConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'sqtp'
    path = './autotpsite/sqtp'   # 增加path配置
使用
启动: uwsgi xxx.ini   #   ini是配置文件,保存启动项参数
重启: uwsgi –-reload   xxx.pid   # pid是进程文件
停止: uwsgi --stop     xxx.pid

执行命令uwsgi uwsgi.ini,会提示[uWSGI] getting INI configuration from uwsgi.ini,说明读取配置文件启动成功

在这里插入图片描述

通过ls命令,可以看到项目根目录下生成了uwsgi8888.piduwsgi_server.log文件

在浏览器中输入IP:8888/login.html,如果展示登录页面,说明项目部署成功

后续使用,如果出现-bash: uwsgi: command not found

则需要对uwsgi创建软连接

find / -name uwsgi	
# 找到uwsgi执行位置
/usr/local/python3/bin/uwsgi	
# uwsgi所在位置
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
# 建立软链接

软连接起作用后,uwsgi命令可正常使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值