Django 6中文教程

17.2 部署方案配置

Django 6部署方案配置:详细教程从WSGI服务器到HTTPS

Django 6中文教程

本教程详细指导如何将Django 6应用部署到生产环境,涵盖Gunicorn和uWSGI的WSGI服务器配置、Nginx反向代理和静态文件托管、使用Let's Encrypt配置HTTPS证书,以及Django settings.py的优化策略,适合新人学习。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

Django 6部署方案配置

引言

在Django开发完成后,将应用部署到生产环境是至关重要的一步。部署不仅能确保应用的稳定性、安全性和性能,还能提升用户体验。本教程将详细讲解从WSGI服务器配置到HTTPS证书的全过程,帮助新手轻松上手。

1. WSGI服务器配置

WSGI(Web Server Gateway Interface)服务器是Django应用与Web服务器之间的桥梁。在Django 6中,我们常用Gunicorn或uWSGI作为WSGI服务器。

1.1 Gunicorn配置

Gunicorn是一个简单易用的Python WSGI HTTP服务器,适合初学者。

步骤1:安装Gunicorn 在虚拟环境中运行以下命令:

pip install gunicorn

步骤2:基本配置 创建一个gunicorn_config.py文件(可选),配置参数如工作者数:

bind = "0.0.0.0:8000"
workers = 3

步骤3:启动Gunicorn 在项目目录下运行:

gunicorn your_project.wsgi:application --config gunicorn_config.py

替换your_project为你的Django项目名称。

1.2 uWSGI配置

uWSGI是一个高性能的WSGI服务器,支持更多自定义选项。

步骤1:安装uWSGI

pip install uwsgi

步骤2:创建配置文件 创建一个uwsgi.ini文件:

[uwsgi]
chdir = /path/to/your/project
module = your_project.wsgi:application
socket = /tmp/uwsgi.sock
chmod-socket = 660
vacuum = true
workers = 4

步骤3:启动uWSGI

uwsgi --ini uwsgi.ini

2. Nginx配置

Nginx是一个高性能的HTTP和反向代理服务器,常用于托管静态文件和代理动态请求到WSGI服务器。

2.1 反向代理配置

配置Nginx将请求转发到WSGI服务器(以Gunicorn为例)。

步骤1:安装Nginx 在Ubuntu上:

sudo apt update
sudo apt install nginx

步骤2:创建站点配置文件/etc/nginx/sites-available/中创建文件,例如your_project

server {
    listen 80;
    server_name your_domain.com www.your_domain.com;

    location / {
        proxy_pass http://unix:/tmp/gunicorn.sock;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

替换socket路径为你的Gunicorn或uWSGI配置。

步骤3:启用站点

sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/
sudo nginx -t  # 测试配置
sudo systemctl reload nginx

2.2 静态文件托管

Django的静态文件(如CSS、JS)和媒体文件(如用户上传的文件)应由Nginx直接服务以提升性能。

步骤1:收集静态文件 在Django中运行:

python manage.py collectstatic

这会收集到STATIC_ROOT指定的目录(如/path/to/static)。

步骤2:配置Nginx 在站点配置文件中添加:

location /static/ {
    alias /path/to/static/;
    expires 30d;
}

location /media/ {
    alias /path/to/media/;
    expires 30d;
}

确保Django的settings.py中设置好STATIC_ROOTMEDIA_ROOT

3. HTTPS证书配置

使用HTTPS加密数据传输,提升安全性。Let's Encrypt提供免费的SSL/TLS证书。

3.1 Let's Encrypt配置

步骤1:安装Certbot 在Ubuntu上:

sudo apt install certbot python3-certbot-nginx

步骤2:获取证书 运行以下命令(替换域名):

sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Certbot会自动配置Nginx更新证书,并设置自动续订。

步骤3:验证配置 访问https://your_domain.com,检查证书是否生效。

4. Django生产环境配置

优化settings.py以确保生产环境的安全和性能。

4.1 settings.py优化

安全设置

  • 设置DEBUG = False
  • 使用环境变量存储密钥:
import os
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')
  • 配置数据库:使用生产级数据库如PostgreSQL,并设置连接池。
  • 添加允许的主机:ALLOWED_HOSTS = ['your_domain.com']

性能优化

  • 静态文件:设置STATIC_ROOT并确保使用Nginx服务。
  • 缓存:配置缓存后端,如Redis:
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.redis.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379',
    }
}
  • 日志:配置日志以监控错误:
LOGGING = {
    'version': 1,
    'handlers': {
        'file': {
            'level': 'ERROR',
            'filename': '/var/log/django/error.log',
        },
    },
}

通过以上步骤,你可以成功将Django 6应用部署到生产环境。记得定期维护和更新证书。


本教程基于Django 6编写,内容仅供参考,实际操作时请根据具体环境调整。

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包