Django Nginx+Gunicorn 部署教程

这篇具有很好参考价值的文章主要介绍了Django Nginx+Gunicorn 部署教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在部署前

  1. 导出requirements.txt 文件:运行pip freeze > requirements.txt命令来生成requirements.txt文件,以便在安装依赖项时使用。

  2. 收集静态文件

在settings.py里面最后一行添加

STATIC_URL = '/static/'  --nginx 会通过static为开头访问指定静态资源文件
STATIC_ROOT  = os.path.join(BASE_DIR, 'static') #指定样式收集目录 
或者 
STATIC_ROOT = '/datadrive/workspace/django_site/static/' -- 我们手动指定目录

运行命令

python manage.py collectstatic
  1. 配置数据库:配置生产环境所需的数据库。常见的数据库是MySQL

  2. 修改setting.py
DEBUG = False

ALLOWED_HOSTS = ['*']

如果你使用了数据库,那么修改为服务器数据库信息

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'database',
        'USER': 'root',
        'PASSWORD': '****',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

在Linux上使用Nginx和Gunicorn部署Django应用程序,需要以下步骤:

  1. 安装Django、Gunicorn和Nginx 在Linux服务器上安装Django、Gunicorn和Nginx。您可以使用以下命令来安装:
复制代码
pip install django gunicorn
sudo apt-get install nginx
  1. 创建Django项目 创建一个新的Django项目或使用现有的Django项目。

创建和激活虚拟环境 在进行Django项目开发时,最好使用虚拟环境来隔离各种依赖项。您可以使用以下命令创建和激活一个虚拟环境:

python3 -m venv myvenv
source myvenv/bin/activate
  1. 配置Gunicorn 在Django项目的根目录中创建一个名为gunicorn.conf.py的Gunicorn配置文件,并添加以下内容:

复制代码
bind = "0.0.0.0:8000"
workers = 3

这里的“bind”指定Gunicorn将在所有网络接口上监听端口8000,而“workers”指定Gunicorn将启动3个工作进程来处理传入的请求。可以根据需求调整这些值。

  1. 测试Gunicorn 在Django项目的根目录中运行以下命令以测试Gunicorn是否能够正确启动:
复制代码
gunicorn project_name.wsgi:application -c gunicorn.conf.py

这里“project_name”是您的Django项目的名称。

  1. 配置Nginx 在Nginx的配置文件中添加以下内容:
复制代码
server {
    listen 80;
    server_name yourdomain.com;
    location /static/ {
        alias /path/to/static/files/;
    }

    location /media/ {
        alias /path/to/media/files/;
    }
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

该配置文件将所有静态资源请求(如CSS、JavaScript和图像)都代理到本地文件系统上的对应目录。其中,“/static/”和“/media/”是静态文件和媒体文件的URL前缀,而“/path/to/static/files/”和“/path/to/media/files/”是对应的本地路径。这里的“yourdomain.com”应替换为您的域名,而“127.0.0.1:8000”应替换为Gunicorn监听的IP地址和端口。此外,proxy_set_header指令将一些HTTP头信息发送到后端服务器,包括主机名和客户端IP地址。

  1. 使用systemd将Gunicorn配置为系统服务

将Gunicorn配置为系统服务,可以确保它在Linux服务器启动时自动启动,并在意外关闭或崩溃时自动重启。以下是如何使用systemd创建Gunicorn服务的步骤:

  1. 创建一个.service文件 在/etc/systemd/system目录下创建一个新文件,命名为gunicorn.service,并添加以下内容:
复制代码
[Unit]
Description=Gunicorn daemon for Django Project
After=network.target

# 定义虚拟环境路径
Environment="PATH=/home/wwwroot/abc.com/myvenv/bin"

# 激活虚拟环境
ExecStartPre=/bin/bash -c 'source /home/wwwroot/abc.com/myvenv/bin/activate'

[Service]
User=www
Group=www-data
WorkingDirectory=/home/wwwroot/abc.com/
ExecStart=/home/wwwroot/abc.com/myvenv/bin/gunicorn name.wsgi:application -c /home/wwwroot/abc.com/gunicorn.conf.py

[Install]
WantedBy=multi-user.target

这里,“Description”指定服务的描述性名称,“User”和“Group”指定以哪个用户身份运行Gunicorn进程。而“WorkingDirectory”指向项目的根目录,“ExecStart”指定Gunicorn的启动命令和参数。

  1. 重新加载systemd守护程序配置文件 使用以下命令重新加载systemd守护进程配置文件:
复制代码
sudo systemctl daemon-reload
  1. 启动Gunicorn服务 使用以下命令启动Gunicorn服务:
复制代码
sudo systemctl start gunicorn
  1. 自动启动 使用以下命令将Gunicorn配置为系统自动启动:
复制代码
sudo systemctl enable gunicorn

完成以上步骤后,Gunicorn服务将以systemd的方式在Linux服务器上运行。您可以使用以下命令来管理Gunicorn服务:

  • 启动服务:sudo systemctl start gunicorn
  • 停止服务:sudo systemctl stop gunicorn
  • 重启服务:sudo systemctl restart gunicorn
  • 禁用自动启动:sudo systemctl disable gunicorn

注意,对于新配置的systemd服务,必须重新加载systemd守护程序配置文件才能使更改生效。文章来源地址https://www.toymoban.com/news/detail-512596.html

到了这里,关于Django Nginx+Gunicorn 部署教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里云服务器部署flask项目「gunicorn + nginx + 支持https」

    最近做了一个微信小程序,使用 flask 实现了对应的后台,上线需要部署到服务器上,之前只是了解并没有全链路试过,靠着网上的资料最终完成部署上线,但中间遇到了较多的一些问题,网上的资料也比较零碎,所以整理了这篇文章,一方面是作为记录方便后续查阅,另一方

    2024年02月06日
    浏览(46)
  • Flask结合gunicorn和nginx反向代理的生产环境部署及踩坑记录

    个人博客:https://xzajyjs.cn 之前自己写的flask使用gunicorn上线生产环境没有什么问题,但是最近搭建了一个现成的flask项目,当使用python直接运行时不会有问题,而使用gunicorn时则会出现一些问题。 这里使用pyenv创建了一个虚拟环境,并安装好依赖 下面是入口函数 run.py : 其中

    2024年02月16日
    浏览(45)
  • FastAPI + NGINX + Gunicorn:一步一步教你部署一个高性能的Python网页应用

    部署一个 FastAPI 应用到你的服务器是一项复杂的任务。如果你对 NGINX 、 Gunicorn 和 Uvicorn 这些技术不熟悉,可能会浪费大量的时间。如果你是刚接触 Python 语言不久或者希望利用 Python 构建自己的Web应用程序,本文的内容可能会让你第一次部署时更节省时间。 FastAPI 是用于开发

    2024年02月05日
    浏览(62)
  • Django笔记四十四之Nginx+uWSGI部署Django以及Nginx负载均衡操作

    本文首发于公众号:Hunter后端 原文链接:Django笔记四十四之Nginx+uWSGI部署Django以及Nginx负载均衡操作 这一篇笔记介绍如何使用 Nginx + uWSGI 来部署 Django。 上一篇笔记中有介绍直接使用 uWSGI 作为 web 服务器来部署 Django,这一篇笔记介绍如何使用 Nginx 来部署。 使用 Nginx 来部署相

    2024年02月05日
    浏览(55)
  • 【Django】在Linux上部署Django(nginx+uwsgi)

    1.说明 关于在Linux上使用uwsgi部署Django的项目的过程并不难,主要是配置文件的写法,尤其是nginx的配置文件,本文在Ubuntu20.04上通过uwsgi和nginx部署Django项目 2.安装环境 安装环境主要有Nginx、Python、MySQL、Redis,可以根据你的实际情况进行安装 2.1 安装nginx 大多数发行版Linux都支

    2024年02月12日
    浏览(45)
  • docker-compose部署django+nginx+minio

    总体文件结构   docker-compose.yml文件    Dockerfile文件   start.sh文件   uwsgi.ini文件   nginx配置文件  

    2024年02月08日
    浏览(94)
  • Django使用uwsgi+nginx部署,admin没有样式解决办法

    若在服务器上部署的项目admin没有样式,则检查下一下配置: settings uwsgi.ini urls nginx.conf } 如果使用了虚拟环境则修改nginx.conf文件中的/static/路径为你虚拟环境的路径,没有使用虚拟环境则改为你python安装路径下的static 修改完后,cd/usr/sbin,使用./nginx -s reload,重启nginx,重启项目

    2024年02月14日
    浏览(40)
  • Ubuntu纯净服务器系统使用Nginx+uwsgi部署django项目

    当前文章依赖最新的ubuntu-22.04.3-live-server-amd64服务器系统,python3-10版本,django为5.0版! 该服务器系统我们可以通过虚拟机来在本地安装,也可以使用云服务器,操作方式方法大同小异! 这里我们以开源项目baykeshop为基础来演示! 开源地址:baykeShop: baykeshop是一款python栈采用

    2024年01月17日
    浏览(46)
  • fastAPI+gunicorn+supervisor模式部署配置文件

    gunicorn conf配置内容 supervisord 配置内容

    2024年02月15日
    浏览(43)
  • Windows服务器,通过Nginx部署VUE+Django前后端分离项目

    基本说明 安装 Nginx 部署 VUE 前端 部署 Django 后端 Django admin 静态文件(CSS,JS等)丢失的问题 总结 本文介绍了在 windows 服务器下,通过 Nginx 部署 VUE + Django 前后端分离项目。本项目前端运行在 80 端口,服务器端运行在 8000 端口。因此本项目使用 Django 的 runserver 命令进行部署

    2024年02月05日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包