17.2 部署方案配置
Django 6部署方案配置:详细教程从WSGI服务器到HTTPS
本教程详细指导如何将Django 6应用部署到生产环境,涵盖Gunicorn和uWSGI的WSGI服务器配置、Nginx反向代理和静态文件托管、使用Let's Encrypt配置HTTPS证书,以及Django settings.py的优化策略,适合新人学习。
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_ROOT和MEDIA_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编写,内容仅供参考,实际操作时请根据具体环境调整。