【Django】Django项目部署

项目部署

1 基本概念

项目部署是指在软件开发完毕后,将开发机器上运行的软件实际安装到服务器上进行长期运行。

  1. 在安装机器上安装和配置同版本的环境[python,数据库等]

  2. django项目迁移

    scp /home/euansu/Code/Python/website euansu@xx.xx.xx.xx:/home/euansu/xxx
  3. 用uWSGI替代python3 manage.py runserver方法启动服务器。

  4. 配置nginx反向代理服务器。

  5. 用nginx配置静态文件路径,解决静态路径问题。

2 WSGI定义

WSGI(Web Server Gateway Interface)Web服务器网关接口,是Python应用程序或框架和web服务器之间的一种接口,被广泛使用。

使用Python manage.py runserver通常只在开发和测试环境中使用,当开发结束后,完善的项目代码需要在一个搞笑稳定的环境中运行,这是可以使用WSGI。

开发环境中,runserver将http协议的内容规范成WSGI规范给Django处理,将WSGI的规范转换成http规范进行返回。

3 uWSGI

3.1 uWSGI定义

uWSGI是WSGI的一种,它实现了http协议WSGI协议以及uwsgi协议。uWSGI功能完善,支持协议众多,在Python web热度极高。

uWSGI主要以学习配置为主。

3.2 uWSGI安装

pip install uwsgi==2.0.18 -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 检查是否安装成功,如果成功安装则会输出uWSGI==2.0.18
pip freeze | grep -i 'uwsgi'

3.3 uWSGI配置

添加配置文件 项目同名文件夹/uwsgi.ini,如:website/website/uwsgi.ini

文件以[uwsgi]开头,有如下配置项:

  • 套接字方式的 IP地址:端口号 【此模式需要有nginx】

    socket=127.0.0.1:8000
  • http通信方式的 IP地址:端口号

    http=127.0.0.1:8000
  • 项目当前工作目录

    chdir=/home/euansu/website
  • 项目中wsgi.py文件的目录,相对于当前工作目录

    wsgi-file=website/wsgi.py
  • 进程个数

    process=4
  • 每个进程的线程个数

    threads=2
  • 服务的pid记录文件

    pidfile=uwsgi.pid
  • 服务的日志文件,配置该选项后,说明项目后台启动,且日志输出到该文件中

    daemonize=uwsgi.log
  • 开启主进程管理模式

    master=true

特殊说明,Django的setting.py需要做如下配置:

  1. 修改settings.py,将DEBUG=True改为DEBUG=False

  2. 修改settings.py,将ALLOWED_HOSTS=[] 改为 ALLOWED_HOSTS=['网站域名/服务器监听的ip地址']

实际项目的配置文件如下:

# 项目名/uwsgi.ini
[uwsgi]
# http通信方式的 IP地址:端口号
http=127.0.0.1:8000
# 项目当前工作目录
chdir=/home/euansu/Code/Python/website
# 项目中wsgi.py文件的位置
wsgi-file=website/wsgi.py
# 进程个数
process=4
# 线程个数
threads=2
# 服务的pid记录文件
pidfile=uwsgi.pid
# 服务的日志文件,是不是由后台启动以及日志输出到哪里
daemonize=uwsgi.log
# 开启主进程管理模式
master=true

3.4 uWSGI的运行管理

  • 启动uwsgi

    # cd到uWSGI配置文件所在目录
    uwsgi --ini uwsgi.ini

    启动以及检测进程是否成功。

    网页访问。

  • 停止uwsgi

    # cd到uWSGI配置文件所在目录
    uwsgi --stop uwsgi.pid

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2780287.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

C#系列-Entity Framework 架构(18)

下图展示了EF的整体架构。现在让我们逐个地看看架构的各个组件: EF组件图 EDM(Entity Data Mode 实体数据模型):EDM 由三个主要部分组成:概念模型,映射和存储模型。 Conceptual Model(概念模型&#xff0…

【Langchain Agent研究】SalesGPT项目介绍(二)

【Langchain Agent研究】SalesGPT项目介绍(一)-CSDN博客 上节课,我们介绍了SalesGPT他的业务流程和技术架构,这节课,我们来关注一下他的项目整体结构、poetry工具和一些工程项目相关的设计。 项目整体结构介绍 我们把…

【安装记录】安装 netperf 和 perf

这是一篇发疯随笔X.X 我的环境是虚拟机debian12,出于种种原因,之前直接使用apt-get install netperf apt-get install perf指令直接安装,报错找不到包 然后上网搜了一堆教程,有说下载netperf源码编译的,那些教程里面有…

Guitarpro 8.1.1.17中文解锁版2024最新安装激活图文教程

Guitarpro 8.1.1.17中文解锁版一直备受用户喜爱和关注,但也存在一个被诟病的问题,即不支持中国专属的简谱功能。作为国人为了方便学习音乐独创的一种谱写方式,简谱在国内广受欢迎,然而在国际上使用的却很少。为了解决这一问题&…

CrossOver虚拟机软件功能相似的软件

与 CrossOver 功能相似的软件有: Wine:Wine 是一款在 Unix 和 Unix-like 系统(如 Linux、macOS)上运行 Windows 应用程序的兼容层。与 CrossOver 类似,Wine 通过模拟 Windows 的 API 来实现应用程序的兼容性。它支持大…

【新书推荐】7.4节 寄存器间接和相对寻址方式

本节内容:当指令操作数为内存操作数,且内存操作数的地址使用指针寄存器表示时,称为寄存器间接寻址方式。 ■寄存器间接寻址方式:在地址表达式中,只能使用BX、SI、DI、BP四个指针寄存器用来寻址。 7.4.1 寄存器间接寻…

《深入浅出OCR》第八章:文档任务多模态预训练

✨专栏介绍: 经过几个月的精心筹备,本作者推出全新系列《深入浅出OCR》专栏,对标最全OCR教程,具体章节如导图所示,将分别从OCR技术发展、方向、概念、算法、论文、数据集等各种角度展开详细介绍。 👨‍💻面向对象: 本篇前言知识主要介绍深度学习知识,全面总结知知识…

【Rust】使用Rust实现一个简单的shell

一、Rust Rust是一门系统编程语言,由Mozilla开发并开源,专注于安全、速度和并发性。它的主要目标是解决传统系统编程语言(如C和C)中常见的内存安全和并发问题,同时保持高性能和底层控制能力。 Rust的特点包括&#x…

C++2024寒假J312实战班2.5

题目列表: #1多项式输出 #2龙虎斗 #3表达式求值 #4解密 #1多项式输出 这是第一个题目很简单,我也作对了。 我们下来看一下题目: 我们先来看一下样例: 5 100 -1 1 -3 0 10 首先100是第一项,所以不输出加号&…

【Linux技术宝典】Linux入门:揭开Linux的神秘面纱

文章目录 官网Linux 环境的搭建方式一、什么是Linux?二、Linux的起源与发展三、Linux的核心组件四、Linux企业应用现状五、Linux的发行版本六、为什么选择Linux?七、总结 Linux,一个在全球范围内广泛应用的开源操作系统,近年来越来…

枚举(C/C++)

没有什么成套的算法&#xff0c;直接上例题&#xff01;&#xff01; 例题1&#xff1a;赢球票 代码&#xff1a; #include <bits/stdc.h> using namespace std;const int maxn 105; int n,num1[maxn],num2[maxn],cnt,cnt1,sum,ans;int check1()//检查剩余个数 {cnt1…

单片机学习笔记---蜂鸣器播放提示音音乐(天空之城)

目录 蜂鸣器播放提示音 蜂鸣器播放音乐&#xff08;天空之城&#xff09; 准备工作 主程序 中断函数 上一节讲了蜂鸣器驱动原理和乐理基础知识&#xff0c;这一节开始代码演示&#xff01; 蜂鸣器播放提示音 先创建工程&#xff1a;蜂鸣器播放提示音 把我们之前模块化的…

python学习23

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

计算机网络基础 第二章——物理层 知识点

2.1物理层和物理层协议的基本概念 1.物理层的基本服务功能和设置物理层的目的。 ●物理层考虑的是怎样才能在连接各种计算机的传输媒体上 传输数据比特流&#xff0c;而不是指具体的传输媒体。 ●物理层的主要任务是:保证比特流通过传输介质的正确传 输&#xff0c;为数据链…

蓝桥杯2023年真题(1)

1.分糖果 #include <iostream> using namespace std; int a 9, b 16, c 7, d 2, e 5; int ans 0; //u是当前第几个分糖果的小朋友&#xff0c;x和y是还剩的糖果 void dfs(int u, int x, int y){if(u > c){//如果都为0&#xff0c;就是已经分完了if(!x &&…

一个小而实用的 Python 包 pangu,实现在中文和半宽字符(字母、数字和符号)之间自动插入空格

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一个小巧的库&#xff0c;可以避免自己重新开发功能。利用 Python 包 pangu&#xff0c;可以轻松实现在 CJK&#xff08;中文、日文、韩文&#xff09;和半宽字符&#xff08;字母、数字和符号&#xf…

【开源】SpringBoot框架开发个人健康管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 健康档案模块2.2 体检档案模块2.3 健康咨询模块 三、系统展示四、核心代码4.1 查询健康档案4.2 新增健康档案4.3 查询体检档案4.4 新增体检档案4.5 新增健康咨询 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpri…

RestFul的认识

前言 RESTful 是 Representational State Transfer 的缩写&#xff0c;是一种软件架构风格&#xff0c;用于在网络上构建和整合应用程序。它基于 HTTP 协议&#xff0c;并定义了一组约束和规范&#xff0c;用于规范客户端和服务器之间的通信。 RESTful API 是遵循 REST 架构规…

Java实现河南软件客服系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理人员2.2 业务操作人员 三、系统展示四、核心代码4.1 查询客户4.2 新增客户跟进情况4.3 查询客户历史4.4 新增服务派单4.5 新增客户服务费 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的河…

JavaScript 遍历文档生成目录结构

JavaScript 遍历文档生成目录结构 要遍历 HTML 文档并生成目录结构&#xff0c;你可以使用 JavaScript 来进行 DOM 操作和遍历。以下是一个简单的示例代码&#xff0c;演示了如何遍历文档中的标题元素&#xff08;例如 <h1>、<h2>、<h3> 等&#xff09;&…