Gunicorn+django部署

2023-05-16

部署前提是服务器中要有项目中所需的其他服务,例:mysql数据库,nginx,python解释器等,在其他环境搭好的情况下使用此方式可简单部署一个django项目。

至于安装上面提到的这些,有兴趣可点击前往博客查看

1、准备工作

  • 创建干净的虚拟环境
  • 执行下载命令下载所需依赖包
  • 测试数据库链接
  • 测试项目运行
  • (其中详细步骤上面博客链接中有,这里不赘述了)

2、下载Gunicorn

# workon进入项目的虚拟环境中下载
# pip install gunicorn 

4、修改配置文件

# 修改settings.py文件的:INSTALLED_APPS
INSTALLED_APPS = [
    ...
    'gunicorn',  # 把gunicorn添加到apps中
]

5、使用Gunicorn命令运行django项目

# 在manage.py 同级目录下执行命令,注:book是项目名
gunicorn book.wsgi -b 127.0.0.1:8000

基本参数列表:

-c        指定一个配置文件(py文件)
-b        与指定的socket进行绑定
-D        以守护进程形式来运行Gunicorn进程
-w        工作的进程数量,后面加数字;[gunicorn -w 2 untitled.wsgi -b 0.0.0.0:8000]
–threads  后面加数字,处理请求的最大线程数
-k        工作进程类型: sync(默认), eventlet, gevent, or tornado, gthread, gaiohttp.
–chdir    后面加路径,跳转到目录下执行
–reload   后面可加参数,默认参数false,开启为true,开启时当代码发生改变,会重新加载修改的代码,并启动程序,(热加载)
-proxy-protocol
–worker-connections
–access-logfile

6、测试运行

# 执行命令curl后查看返回状态,这里未开启守护进程,加载需要再开一个终端执行命令
curl 127.0.0.1:8000

7、运行可能报错

# 如果使用参数 -k gevent 有可能报错,错误大致信息就是缺少gevent或者gevent版本低,pip下载一下就好,或者更换版本
# 同理使用其它 -k 参数也是如此

8、配置脚本文件启动django项目

在manage.py同级目录创建配置文件gunicorn.conf.py

# gunicorn_config.py
import logging
import logging.handlers
from logging.handlers import WatchedFileHandler
import os
import multiprocessing

bind = '127.0.0.1:8000'      # 绑定ip和端口号
# chdir = '/opt/workspace/bookstore'  # 目录切换
# backlog = 500              # 监听队列
timeout = 60                 # 超时
worker_class = 'gevent' # 使用gevent模式,还可以使用sync 模式,默认的是sync模式
workers = multiprocessing.cpu_count() * 2 + 1    # 进程数
threads = 2  # 指定每个进程开启的线程数
loglevel = 'info'  # 日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
accesslog = "/opt/workspace/bookstore/log/gunicorn_access.log"  # 访问日志文件
errorlog = "/opt/workspace/bookstore/log/gunicorn_error.log"    # 错误日志文件

9、运行命令

# gunicorn.conf.py 是配置文件
# bookstore 是项目名
# gunicorn -c gunicorn.conf.py bookstore.wsgi:application

10、nginx简单部署示例

找到nginx配置文件打开添加站点

http {
    include       mime.types;
    default_type  application/octet-stream;
    
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  www.flag.space, 109.39.89.199;
        location / {
            proxy_pass http://127.0.0.1:8000;
            #root   html;
            #index  index.html index.htm;
        }
        location /static {
            alias /opt/workspace/bookstore/static;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

其中的 location / 中配置项目的url地址

location /static 中配置静态文件路径

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gunicorn+django部署 的相关文章

  • 将自定义操作添加到 UserModel 的管理页面

    是否有可能在 django UserModel 的管理页面中创建自定义操作 我希望自动将用户添加到组中 例如将他添加到员工中 设置一些额外的值等 当然还要创建收回这些更改的操作 感谢您的帮助 Import User在你的 admin py
  • Django Rest Framework 嵌套序列化器不显示相关数据

    我使用 Django Rest Framework 进行了基本设置 我有两个模型和一个嵌套序列化器设置 models py from django db import models class Plan models Model name
  • 为现有数据库/sql 视图创建 django 模型?

    我已在 template dir sql someTableName sql 文件中插入视图的定义 创建或替换视图 所以每次我运行syncdb 创建数据库视图 我可以在 models py 中创建一个访问该视图的 python 类吗 使用
  • 使用 django-cas-ng 在管理站点上进行身份验证

    我在用着Django Cas NG https github com mingchen django cas ng用于验证用户身份的框架 主要问题是管理页面仍然使用默认的登录视图 到目前为止使用的方法 1 使用环境变量 来自文档 CAS A
  • Airbrake 抛出错误“pybrake - 错误 - strconv.ParseInt:解析“None”:无效语法”

    我正在尝试按照中描述的步骤在 Django 项目中使用 Airbrake 记录器https github com airbrake pybrake django integration https github com airbrake p
  • Sentry django 配置 - 记录器

    我正在尝试使用简单的日志记录并希望将错误 异常发送到 Sentry 我按照文档配置了 Sentry 并在我的开发人员上成功运行了测试 python manage py raven test 我添加了日志记录配置 如下所示哨兵文档 https
  • Django 可重用应用程序配置

    我有一些连接到数据库的 Django 中间件代码 我想将中间件变成可重用的应用程序 app 这样我就可以将其打包以分发到许多其他项目中 而无需复制和粘贴 我不明白可重用应用程序应该在哪里配置自身 由于它是用于重新分发的 所以我无法自己编写中
  • Django 压缩器和模板继承

    我正在使用Django 压缩器 https github com mintchaos django compressorDjango 1 2 3 中的 app 用于缩小和合并许多包含的 CSS 和 JS 文件 在基本模板中 我有 load
  • 检查 Django 模板内的权限

    我可以在 Django 模板内使用 Auth 应用程序的权限检查吗 我想在模板末尾为特权用户显示一个简单的表单 更重要的是 我应该这样做还是这不是 Django 方式 如果您要检查模板中的权限 以下代码就足够了 if perms app l
  • Django 分页和“当前页面”

    我目前正在开发一个 Django 应用程序 它将利用臭名昭著的 分页 技术 我试图弄清楚 django core paginator 模块是如何工作的 我有一个带有问题模型的应用程序 我将使用此分页器列出所有问题 每页有 20 个问题 de
  • 测试抽象模型 - django 2.2.4 / sqlite3 2.6.0

    我正在尝试使用 django 2 2 4 sqlite3 2 6 0 python 3 6 8 测试一些简单的抽象混合 目前 我在使用架构编辑器从测试数据库中删除模型时遇到问题 我有以下测试用例 from django test impor
  • 自定义 django 标签返回列表?

    我需要创建一个返回列表的自定义标签 然后我可以使用 for item in custom tag returning list 现在我使用以下方法进行了黑客攻击分配标签方法 但怀疑这是否是正确的方法 from django import t
  • 在“git pull”我的 Django 项目后重新启动/重新加载 Gunicorn(通过 Upstart)的更好方法

    我正在寻找比sudo restart projectname每次我发出git pull origin master 它会下载我对 Django 项目的最新更改 这restart我相信该命令与 Upstart 有关 我用它来启动 停止我的 G
  • Django ModelForm 不保存数据

    我已经尝试过以下帖子中的解决方案 从 ModelForm 保存数据 https stackoverflow com questions 13046488 saving data from modelform 没起作用 ModelForm数据
  • 如何在 Django ORM 中更改 PostgreSQL 的默认空排序行为

    默认情况下 PostgreSQL 将 NULL 值视为最高值 因此对于降序查询 首先对它们进行排序 对于升序查询 最后对它们进行排序 您可以通过指定 NULLS LAST 或 NULLS FIRST 在每个查询或创建索引时修改此行为 如何将
  • 找不到满足 pkg-resources==0.0.0 要求的版本

    我的应用程序部署在heroku 当我通过推送我的代码时git push heroku master 它给了我这个错误 Collecting pkg resources 0 0 0 from r requirements txt line 1
  • 如何将 Mercurial 存储库克隆到已存在的目录中?

    我有一个客户的 Django 项目 正在本地开发 使用 Mercurial 进行版本控制 我将本地存储库推送到我的个人远程服务器 我保存所有项目的地方 然后当我部署它时 在任何 Web 服务器上 我从我的个人服务器克隆该存储库 这在大多数服
  • 如何测试我的 Redis 缓存是否正常工作?

    我已经安装了 django redis cache 和 redis py 我遵循了 Django 的缓存文档 据我所知 以下设置就是我所需要的 但我如何判断它是否正常工作 设置 py CACHES default BACKEND redis
  • 是否可以在 django 模板中检查对象是否包含在列表中

    我对 django 很陌生 大约一周了 我正在制作一个网站 用户可以在其中输入内容 然后其他用户可以投票决定他们是否喜欢这些内容 我知道这并不是那么新颖 但这是一个学习一堆工具的好项目 我有一个多对多表来存储谁喜欢或不喜欢什么 在渲染页面之
  • Django 管理中的嵌套内联?

    好吧 我有一个相当简单的设计 class Update models Model pub date models DateField title models CharField max length 512 class Post mode

随机推荐

  • 4.AI人工智能大模型汇总:类GPT系列模型、模型中转站Auto-GPT、多模态大模型、视觉模型、自然语言模型

    AI人工智能大模型汇总 类GPT系列模型 模型中转站Auto GPT 多模态大模型 视觉模型 自然语言模型 模型名称 发布方 类型 开源类型 原始模型框架 paddle版本 模型能力 模型语言 模型参数 简介 模型链接 体验链接 paddl
  • Prompt learning 教学[技巧篇]:通过增加示例、引导词、特殊符号指令等方式让chatgpt输出更好的答案

    Prompt learning 教学 技巧篇 xff1a 通过增加示例 引导词 特殊符号指令等方式让chatgpt输出更好的答案 技巧1 xff1a To Do and Not To Do 在问答场景里 xff0c 为了让 AI 回答更加准
  • Prompt learning 教学[案例篇]:文生文案例设定汇总,你可以扮演任意角色进行专业分析

    Prompt learning 教学 案例篇 xff1a 文生文案例设定汇总 xff0c 你可以扮演任意角色进行专业分析 1 角色扮演 行为Prompt写法 牙医 我想让你扮演一名牙医 我会向你提供有关寻找牙科服务 xff08 例如 X 光
  • win10系统vs2017+1060配置CUDA安装tensorflow-gpu

    笔者最开始安装的是推荐的cuda10后来虽然vs实例能成功运行 xff0c 但是tf的import还是报错 xff0c 后来安装的9 2 xff0c 运行无误 xff0c 各下载链接在文后可自行查看 检查显卡驱动是否为最新版本 非常重要 安
  • python3-端口扫描(TCP connect扫描,SYN扫描,FIN扫描)

    利用python3进行端口扫描 xff0c TCP的方式有connect扫描 xff0c SYN扫描 xff0c FIN扫描 xff0c NULL扫描 xff0c ACK扫描 xff0c Xmas xff0c windows扫描 本次展示前
  • CSDN 编写数学公式参考文档

    CSDN markdown 编辑器使用的是 katex 来完成对 TeX 公式的解析 公式得紧挨两个 符内部 xff0c 而且第一个 后面不能有空格 xff0c 第二个 前面不能有空格 想要换行居中的话 xff0c 得使用两次 来将公式框起
  • 1、AI系统简介及AI系统的分类

    AI系统简介 AI这个缩写在越来越多的出现在公众面前 但是AI到底是什么就和AI这个词一样 大部分都能举一些例子 但是都却很难说清楚AI到底是什么 AI是Artificial Intelligence的简称 中文叫做人工智能 但是要找到一个
  • 六关节机器人工具坐标系位姿计算函数

    span class token keyword void span span class token function clacToolPose span span class token punctuation span RcEuler
  • ORB-SLAM2项目数据集运行(一)

    作为一名学习一年的机器视觉的学生 xff0c 一直以来都没有写过像样点的自己的东西 xff0c 真的是不像话 xff0c 虽然有时候觉得会占用一些时间 xff0c 但是能很大程度上帮助自己理解 从github上可以下载到源码 xff1a h
  • string是否以‘\0’结尾

    今天刷题 xff0c 刷着刷着发现了一个问题 xff0c 我好想对string这个了解不是很深 xff0c 我之前是把它跟C语言中的char类型总是分不清 xff0c 所以今天题也不刷了 xff0c 试着了解它们俩到底有什么区别 在C语言中
  • Matlab中函数fopen、fread、fseek和fwrite的用法

    1 fopen 打开文件或获取关于打开文件的信息 xff0c 下面以使用最多的情况为例 xff1a fileID 61 fopen filename permission xff1a 打开文件 xff0c 成功时 xff0c 返回一个大于或
  • PCB设计-四层板变两层板

    四层板变成两层板原本思路是 xff1a 从原理图导出一份asc文件 xff0c 将原先四层板的PCB封装全部保存到一个库里面去 xff0c 然后在PADS里导入asc文件 xff0c 然后将原先的结构定位从原来的PCB板上复制过来 xff0
  • Pycharm导入Django项目

    Pycharm导入Django项目 添加项目 xff1a file gt open 找到项目所在的位置打开项目 添加django后台项目路径 file gt settings gt Languages amp Frameworks 找到Dj
  • Windows安装多个python解释器

    Windows安装多个python解释器 注 xff1a 此方法仅仅是针对安装多个需要配置环境变量的解释器 xff0c 意思是可以在cmd中可以使用并完美切换的 xff1b 针对一个环境变量的解释器无效 xff0c 只有一个环境变量的主解释
  • Go语言开发环境搭建

    一 Windows下安装 安装Go开发包 官网下载Go语言开发包 xff0c 安装方法就是next xff0c 除了安装位置选择 安装目录选定一个好记的 尽量不要放在C盘中 xff0c 除非你盘空间很大 xff0c 完全够用 此路径需要自己
  • Django Rest Framework的使用整理

    Django Rest Framework 一 Rest Framework的基本介绍 程序的客户端有很多 xff1a 硬件设备 xff0c 游戏 xff0c APP xff0c 软件 xff0c 其他的外部服务端 1 Web应用模式 在开
  • Linux部署Python项目

    项目部署 项目部署的操作通常是由运维人员来进行统一管理装配的 xff0c 但是对于一个开发人员来讲 xff0c 基础的项目部署还是要会的 这里我主要讲解python的项目是如何部署的 xff0c 至于项目哪里来的 xff0c 这就要看观众如
  • 2、机器学习简介及其分类

    简介 机器学习是指让机器从数据中自动学习规律和知识 并利用这些规律和知识进行预测或决策的技术 机器学习包括监督学习 无监督学习 强化学习 其中监督学习也被称作有监督的学习 有监督的意思就是预先知道据有什么样的目标 通过一些已经知道结果的数据
  • VScode启动Vue项目

    VScode启动Vue项目 1 使用VScode打开文件夹 2 找到运行按钮 3 判断有没有默认的配置文件存在 4 若文件夹存在就检查配置文件是否存在 xff08 1 xff09 打开launch json xff0c 把如下代码粘贴到里面
  • Gunicorn+django部署

    部署前提是服务器中要有项目中所需的其他服务 xff0c 例 xff1a mysql数据库 xff0c nginx xff0c python解释器等 xff0c 在其他环境搭好的情况下使用此方式可简单部署一个django项目 至于安装上面提到