Django学习记录11——利用uwsgi在ubuntu18.04server上部署

2024-05-27 21:18

本文主要是介绍Django学习记录11——利用uwsgi在ubuntu18.04server上部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.安装各种东西

首先在能够在本地通过python manage.py runserver实现Django服务器的启动的情况下,通过安装uwsgi服务器进行部署。如果安装了宝塔,记得ssh登录的时候先将权限切换至sudo su

  • 假设安装了Anaconda,那么安装uwsgi的过程应该如下:
conda install uwsgi
  • 如果是普通的Python的话,直接:
pip3 install uwsgi

二.配置uwsgi

在任意一个目录,推荐在Django的项目的根目录下,也就是有manage.py的目录下进行配置,创建uwsgi.ini(当然名字随便取):
Django项目名称为Kanna

[uwsgi]
chdir=/home/kanna/django_ws/Kanna
wsgi-file=Kanna/wsgi.py
py-autoreload=1
module=Kanna.wsgi.application
master=true
max-requests=5000
vacuum=true
pidfile=/home/kanna/django_ws/Kanna/log/pid/uwsgi.pid
logto=/home/kanna/django_ws/Kanna/log/log/web.log
http=0.0.0.0:80
uid=root
gid=root
enable-threads=true
harakiri=30
processes=4
threads=2
post-buffering=4096
virtualenv=/home/kanna/anaconda3/envs/django/

这里是解释一下各行参数的意思:

  • chdir=/home/kanna/django_ws/Kanna这个是项目目录,填绝对路径
  • wsgi-file=Kanna/wsgi.py 指定加载WSGI文件,填Django项目里的wsgi模块
  • py-autoreload=1修改了Django源码后,uwsgi会自动重启,避免手动重启
  • module=Kanna.wsgi.application 这个就填settings里的WSGI_APPLICATION字符串的内容
  • master指定启动主进程,到时候uwsgi多进程的父进程是这个启动的pid
  • max-requests 最大访问数量
  • vacuum 服务器退出时,自动删除socket文件和pid文件
  • pidfile=/home/kanna/django_ws/Kanna/log/pid/uwsgi.pid这个是当前进程的绝对路径,同时以后重启,停止也是基于操作该pid文件进行的。
  • daemonize=/home/kanna/django_ws/Kanna/log/log/web.log 以守护进程的方式启动,且日志文件的绝对路径。会造成systemd阻塞,所以不用。
  • logto=/home/kanna/django_ws/Kanna/log/log/web.log 记录日志文件
  • http=0.0.0.0:80 服务器的ip地址。若要用nginx反向代理,则不用该字段,用socket
  • uid=root gid=root 服务器的用户id和用户组id
  • enable-threads 启用线程
  • harakiri 自动中断时间
  • processes 多进程数目
  • threads 单进程线程数
  • post-buffering=4096 开启http请求体的缓存。uWSGI将所有大于限定大小的HTTP请求体保存到磁盘中
  • virtualenv=/home/kanna/anaconda3/envs/django/ 可填。若环境默认python不是该项目使用的python,则需要把其他环境的python的绝对路径填上。

更多的参数内容,可以看看这篇大佬的博客:

uWSGI参考资料(1.0版本的配置选项列表)

三.运行

在配置文件的目录下

uwsgi --ini uwsgi.ini

手动重启

uwsgi --reload xxx.pid

关闭

uwsgi --stop xxx.pid

四.开机自启

在ubuntu18.04的环境下,以下代码测试无误
使用systemd服务。更多的systemd介绍在该博客下有详细介绍:

Systemd及service文件解析

4.1 创建.service文件

sudo vim /etc/systemd/system/web_uwsgi.service

4.2 写入内容

uwsgi的绝对路径建议使用whereis uwsgi来查看

[Unit]
Description=HTTP Interface Server For Django[Service]
#自己修改一下路径
ExecStart=/usr/local/bin/uwsgi --ini /www/wwwroot/Kanna/uwsgi.ini
ExecReload=/usr/local/bin/uwsgi --reload /www/wwwroot/Kanna/log/pid/uwsgi.pid
ExecStop=/usr/local/bin/uwsgi --stop /www/wwwroot/Kanna/log/pid/uwsgi.pid[Install]
WantedBy=multi-user.target

4.3 运行服务

sudo systemctl enable /etc/systemd/system/web_uwsgi.service

4.4 管理服务

因为已经配置好,startreloadstop,所以用systemd命令也可以操作uwsgi
systemctl stop web_uwsgi.service 关闭uwsgi服务
systemctl start web_uwsgi.service 开启uwsgi服务
systemctl restart web_uwsgi.service 重启uwsgi服务

这篇关于Django学习记录11——利用uwsgi在ubuntu18.04server上部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

SQL Server身份验证模式步骤和示例代码

《SQLServer身份验证模式步骤和示例代码》SQLServer是一个广泛使用的关系数据库管理系统,通常使用两种身份验证模式:Windows身份验证和SQLServer身份验证,本文将详细介绍身份... 目录身份验证方式的概念更改身份验证方式的步骤方法一:使用SQL Server Management S

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

Spring AI 实现 STDIO和SSE MCP Server的过程详解

《SpringAI实现STDIO和SSEMCPServer的过程详解》STDIO方式是基于进程间通信,MCPClient和MCPServer运行在同一主机,主要用于本地集成、命令行工具等场景... 目录Spring AI 实现 STDIO和SSE MCP Server1.新建Spring Boot项目2.a

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx