17.1 部署环境搭建
Django 6 部署环境搭建完整教程:Linux服务器配置、Python环境隔离、数据库与Redis部署
这篇详细教程教您如何搭建Django 6项目的部署环境,包括Linux服务器(CentOS/Ubuntu)配置、Python环境隔离与依赖安装、数据库(MySQL/PostgreSQL)部署与配置、Redis(用于缓存和Celery消息代理)部署,适合初学者从零开始学习。
Django 6 部署环境搭建完整指南
引言
Django 6 是一个强大的Python Web框架,但在部署项目之前,需要正确配置服务器环境。本教程将逐步指导您搭建一个完整的部署环境,从Linux服务器设置到依赖安装,确保您的Django项目能够稳定运行。本教程面向新手,力求简单易懂。
1. Linux 服务器配置(CentOS/Ubuntu)
1.1 选择操作系统
- CentOS:适合企业级应用,稳定性高。
- Ubuntu:易用性强,社区支持好。
1.2 更新系统
更新包管理器以确保软件最新。
CentOS 7/8示例:
sudo yum update -y
sudo yum upgrade -y
Ubuntu 20.04/22.04示例:
sudo apt update
sudo apt upgrade -y
1.3 配置防火墙和安全
- 启用防火墙:允许必要端口(如HTTP 80、HTTPS 443、SSH 22)。
- CentOS:
sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --reload - Ubuntu:
sudo ufw allow 22/tcp && sudo ufw enable
- CentOS:
- 创建非root用户:避免使用root账户以提高安全性。
2. Python 环境隔离与依赖安装
Django 6 需要Python 3.8或更高版本,推荐使用虚拟环境隔离项目依赖。
2.1 安装Python 3
如果系统中没有Python 3,先安装。
CentOS:
sudo yum install python3 python3-pip -y
Ubuntu:
sudo apt install python3 python3-pip python3-venv -y
2.2 创建虚拟环境
虚拟环境可以隔离项目依赖,避免冲突。
python3 -m venv myenv # 创建名为myenv的虚拟环境
source myenv/bin/activate # 激活虚拟环境(在Linux中)
激活后,命令行提示符会显示环境名称,如(myenv) user@server。
2.3 安装Django 6和依赖
在虚拟环境中安装Django和其他包。
pip install --upgrade pip
pip install django==6.0 # 安装Django 6最新版本
pip install -r requirements.txt # 如果有依赖文件,安装其他包
requirements.txt示例:
Django==6.0
mysqlclient==2.1.0 # 如果需要MySQL支持
psycopg2-binary==2.9.5 # 如果需要PostgreSQL支持
redis==4.5.4 # 用于缓存和Celery
celery==5.3.0 # 用于异步任务
3. 数据库部署(MySQL/PostgreSQL)与配置
Django 支持多种数据库,这里介绍MySQL和PostgreSQL。
3.1 MySQL部署
安装MySQL:
# CentOS
sudo yum install mysql-server mysql-devel -y
sudo systemctl start mysqld
sudo systemctl enable mysqld
# Ubuntu
sudo apt install mysql-server mysql-client -y
sudo systemctl start mysql
sudo systemctl enable mysql
配置数据库:
- 运行安全脚本:
sudo mysql_secure_installation,设置root密码。 - 登录MySQL:
sudo mysql -u root -p。 - 创建Django数据库和用户:
CREATE DATABASE djangodb;
CREATE USER 'djangouser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON djangodb.* TO 'djangouser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Django设置: 在settings.py中配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'djangodb',
'USER': 'djangouser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '3306',
}
}
3.2 PostgreSQL部署
安装PostgreSQL:
# CentOS
sudo yum install postgresql-server postgresql-contrib -y
sudo postgresql-setup --initdb
sudo systemctl start postgresql
sudo systemctl enable postgresql
# Ubuntu
sudo apt install postgresql postgresql-contrib -y
sudo systemctl start postgresql
sudo systemctl enable postgresql
配置数据库:
- 切换到postgres用户:
sudo -u postgres psql。 - 创建Django数据库和用户:
CREATE DATABASE djangodb;
CREATE USER djangouser WITH PASSWORD 'password';
ALTER ROLE djangouser SET client_encoding TO 'utf8';
ALTER ROLE djangouser SET default_transaction_isolation TO 'read committed';
ALTER ROLE djangouser SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE djangodb TO djangouser;
\q
Django设置: 在settings.py中配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'djangodb',
'USER': 'djangouser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '5432',
}
}
4. Redis部署(缓存、Celery消息代理)
Redis可以作为Django的缓存后端和Celery的消息代理。
4.1 安装Redis
# CentOS
sudo yum install redis -y
sudo systemctl start redis
sudo systemctl enable redis
# Ubuntu
sudo apt install redis-server -y
sudo systemctl start redis-server
sudo systemctl enable redis-server
4.2 配置Redis作为缓存
在settings.py中添加缓存设置:
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/1', # 使用数据库1
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
}
}
4.3 配置Redis作为Celery消息代理
Celery用于处理异步任务,如发送邮件。
安装Celery: 已在第2步安装。
配置Django项目:
- 在
settings.py中添加:
CELERY_BROKER_URL = 'redis://localhost:6379/0' # 使用数据库0作为消息代理
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
- 在项目根目录创建
celery.py:
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
app = Celery('myproject')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
- 在
__init__.py中导入:
from .celery import app as celery_app
__all__ = ('celery_app',)
4.4 测试部署
- 运行Django开发服务器测试:
python manage.py runserver 0.0.0.0:8000(确保防火墙允许端口8000)。 - 创建超级用户:
python manage.py createsuperuser。 - 运行Celery worker:
celery -A myproject worker --loglevel=info。
总结
通过本教程,您已成功搭建了Django 6的部署环境,包括Linux服务器配置、Python环境隔离、数据库和Redis部署。记得在实际部署中,使用生产服务器如Nginx或Apache,并设置安全措施。后续可以学习部署到云服务或使用Docker容器化。
如有问题,请参考官方文档或社区论坛。祝您部署顺利!