Django项目部署准备确认及部署前配置全流程咨询
Django项目部署实操指南
Q:拿到主机信息后仅上传项目文件就能完成部署吗?
不行,只上传文件远远不够,还需要完成环境配置、代码调整、静态文件处理、服务器配置等一系列操作,才能让网站正常运行。
一、代码与核心配置(settings.py)必须调整的内容
1. 基础安全与访问控制
- 强制关闭DEBUG模式:
DEBUG = False,生产环境开DEBUG会泄露敏感信息,这步你已经明确,必须执行 - 配置ALLOWED_HOSTS:必须填上你的域名,比如
ALLOWED_HOSTS = ['yourdomain.com', 'www.yourdomain.com'],不填会直接返回400错误 - 保护SECRET_KEY:别把密钥硬写在代码里,改成从环境变量读取:
然后在主机的环境变量里设置import os SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')DJANGO_SECRET_KEY的值(主机控制面板一般有环境变量设置入口)
2. 静态与媒体文件配置
Django生产环境不会自动处理静态文件,必须手动配置:
- 设置静态文件收集目录:
本地运行STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')python manage.py collectstatic,把所有静态文件(包括Admin后台的)收集到这个目录,上传时要把这个目录也传到主机 - 媒体文件(如果有用户上传功能):
后续要让web服务器(比如Nginx)指向这个目录,处理媒体文件的访问请求MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/'
3. 数据库配置
别用本地的SQLite了,生产环境换成PostgreSQL或MySQL更稳定:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', # 或mysql 'NAME': 'your_db_name', 'USER': 'your_db_user', 'PASSWORD': 'your_db_password', 'HOST': 'localhost', # 主机提供的数据库地址 'PORT': '5432', # PostgreSQL默认端口,MySQL是3306 } }
主机服务商一般会提供数据库的创建和访问信息,照着填就行
4. 日志与中间件调整
- 配置日志,方便排查生产环境的问题:
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'file': { 'level': 'INFO', 'class': 'logging.FileHandler', 'filename': os.path.join(BASE_DIR, 'django.log'), }, }, 'loggers': { 'django': { 'handlers': ['file'], 'level': 'INFO', 'propagate': True, }, }, } - 删掉开发用的中间件,比如
debug_toolbar.middleware.DebugToolbarMiddleware,避免不必要的性能损耗
二、主机端必须做的操作
- 匹配Python环境:安装和本地开发一致的Python版本,避免版本兼容问题
- 安装依赖:上传
requirements.txt(本地运行pip freeze > requirements.txt生成,记得删掉开发用的包比如django-debug-toolbar),在主机运行pip install -r requirements.txt - 数据库迁移:运行
python manage.py migrate,创建生产环境的数据库表 - 创建超级用户:如果需要访问Admin后台,运行
python manage.py createsuperuser设置账号密码 - 配置WSGI服务器:用Gunicorn或者uWSGI启动Django应用,比如安装Gunicorn后运行
gunicorn your_project_name.wsgi:application - 配置Web服务器反向代理:比如用Nginx,配置它把域名的请求转发到Gunicorn的端口,同时处理静态文件和媒体文件的访问(主机服务商如果提供托管面板,可能有一键配置的选项)
- 域名解析与HTTPS:把域名解析到主机的IP地址,然后申请并配置SSL证书(一般主机商提供免费的Let's Encrypt证书),强制HTTPS访问
三、关于网站与Admin后台的访问问题
只要上述配置都正确,网站和/admin/路径的后台都能正常访问。如果出现问题:
- 400错误:检查
ALLOWED_HOSTS是否填对了域名 - 404错误:检查URL配置是否正确,或者静态文件路径是否配置好
- 500错误:查看django.log日志,排查代码或配置问题
- Admin后台静态文件加载失败:确认已经运行
collectstatic,且web服务器指向了staticfiles目录
新手部署实用建议
- 先在本地模拟生产环境:把DEBUG设为False,配置ALLOWED_HOSTS,运行collectstatic,用Gunicorn启动,验证没问题再上传到主机
- 分步验证:先安装依赖、运行迁移,再启动服务器,每一步都检查是否成功,不要一次性操作所有步骤
- 备份:上传前备份本地项目和数据库,生产环境定期备份数据库和项目文件
内容的提问来源于stack exchange,提问作者Fausto Fernandez
相关产品推荐
相关产品推荐

