新闻详情

新闻详情

首页 / 资讯中心 / 详情

Django入门教程(二十九):博客项目实战(十)——打包上线部署到Railway

发布时间:2026/11/15 21:49:21来源:尧图网络
Django入门教程(二十九):博客项目实战(十)——打包上线部署到Railway
一、生产环境配置开发环境中DEBUGTrueDjango 会显示详细的错误信息和调试页面。生产环境中必须关闭DEBUG并正确配置安全选项。python# 文件路径blog_project/settings.py import os # 安全密钥从环境变量读取不要硬编码在代码中 SECRET_KEY os.environ.get(SECRET_KEY, 开发环境默认密钥) # DEBUG 通过环境变量控制 DEBUG os.environ.get(DEBUG, True).lower() true # 允许访问的主机名 ALLOWED_HOSTS os.environ.get(ALLOWED_HOSTS, 127.0.0.1,localhost).split(,) # 静态文件收集目录 STATIC_ROOT os.path.join(BASE_DIR, staticfiles) STATIC_URL /static/配置项解析配置项开发环境生产环境SECRET_KEY可硬编码从环境变量读取DEBUGTrueFalseALLOWED_HOSTS[]或[localhost]必须配置域名STATIC_ROOT不需要必须配置重要提醒SECRET_KEY是 Django 最重要的安全密钥用于加密 session、CSRF token 等。绝对不能硬编码在代码中或提交到 Git。生产环境中通过环境变量注入。代码解析os.environ.get(DEBUG, True).lower() true从环境变量读取DEBUG默认True。字符串True转小写后与true比较得到布尔值。.split(,)将逗号分隔的字符串转为列表方便配置多个域名。二、依赖管理与 requirements.txt生成依赖列表部署平台用它来安装项目所需的包。bash(venv) $ pip freeze requirements.txt检查文件内容确保包含以下关键依赖textDjango5.0,6.0 gunicorn21.0 # 生产级 WSGI 服务器 whitenoise6.0 # 静态文件服务可选如果没有 gunicorn先安装bash(venv) $ pip install gunicorn (venv) $ pip freeze requirements.txt各依赖的作用包名作用DjangoWeb 框架本体gunicorn生产级 WSGI 服务器替代runserverwhitenoise让 Gunicorn 直接提供静态文件服务三、配置 Gunicorn WhitenoiseDjango 自带的runserver不适合生产环境。Gunicorn是 Python 生产级 WSGI 服务器处理并发请求。Whitenoise让 Gunicorn 能直接提供静态文件服务CSS、JS、图片。python# 文件路径blog_project/settings.py # Whitenoise 中间件必须放在 SecurityMiddleware 之后其他中间件之前 MIDDLEWARE [ django.middleware.security.SecurityMiddleware, whitenoise.middleware.WhiteNoiseMiddleware, # 新增静态文件中间件 django.contrib.sessions.middleware.SessionMiddleware, django.middleware.common.CommonMiddleware, django.middleware.csrf.CsrfViewMiddleware, django.contrib.auth.middleware.AuthenticationMiddleware, django.contrib.messages.middleware.MessageMiddleware, django.middleware.clickjacking.XFrameOptionsMiddleware, ]Whitenoise 中间件的顺序要求textSecurityMiddleware → WhiteNoiseMiddleware → 其他所有中间件必须放在SecurityMiddleware之后、其他中间件之前否则静态文件可能无法正常服务。在项目根目录创建 Procfiletextweb: gunicorn blog_project.wsgi --log-file -Procfile 解析部分含义web:声明这是一个 Web 服务进程gunicorn使用 Gunicorn 启动blog_project.wsgiWSGI 入口模块路径--log-file -日志输出到标准输出平台可捕获四、收集静态文件生产环境下Django 不自动提供静态文件服务需要用collectstatic收集到统一目录。bash(venv) $ python manage.py collectstatic这个命令会把 Admin 后台的静态文件、blog 应用的静态文件都复制到STATIC_ROOT目录staticfiles/。开发环境 vs 生产环境环境静态文件处理开发环境一般不需要运行collectstaticDjango 自动查找各 App 的static目录生产环境部署前必须运行确保所有静态文件集中到一个目录五、将项目推送到 GitHub1. 创建 .gitignore确保敏感文件和临时文件不被提交textvenv/ __pycache__/ *.pyc db.sqlite3 staticfiles/ .env各条目说明条目原因venv/虚拟环境体积大且可重建__pycache__/Python 字节码缓存*.pyc编译后的 Python 文件db.sqlite3开发数据库不应提交staticfiles/收集的静态文件部署时重新生成.env环境变量文件含敏感信息2. 推送到 GitHubbash$ git init $ git add . $ git commit -m 初始化 Django 博客项目 $ git branch -M main $ git remote add origin https://github.com/你的用户名/django-blog.git $ git push -u origin main六、Railway 部署Railway 是新兴的云部署平台对 Django 这类全栈应用支持良好。部署步骤访问 railway.app用 GitHub 账号登录。点击New Project→Deploy from GitHub repo→ 选择django-blog仓库。Railway 会自动检测Procfile识别启动命令。在Variables中设置环境变量。点击Deploy等待构建和部署完成。环境变量配置变量名值说明SECRET_KEY随机生成的长字符串Django 安全密钥DEBUGFalse关闭调试模式ALLOWED_HOSTS.railway.app允许 Railway 域名访问快速生成 SECRET_KEYbash$ python -c import secrets; print(secrets.token_urlsafe(50))部署成功后获得链接如https://django-blog.up.railway.app温馨提示Railway 免费额度有限每月 $5 或 500 小时。如果只是测试学习用完记得暂停项目。Heroku 已取消免费计划所以本教程推荐 Railway 作为替代。七、部署流程图八、常见部署问题排查问题现象可能原因解决方案部署后 500 错误DEBUGFalse且未配ALLOWED_HOSTS设置ALLOWED_HOSTS.railway.app静态文件 404未运行collectstatic或未配 Whitenoise检查中间件顺序确认已收集DisallowedHost域名不在ALLOWED_HOSTS添加 Railway 域名应用启动失败Procfile 路径错误确认blog_project.wsgi与实际项目名一致SECRET_KEY报错环境变量未设置在 Railway Variables 中添加数据库报错未执行迁移在部署命令中加入migrate构建超时依赖过多精简requirements.txt在 Procfile 中加入迁移命令textweb: python manage.py migrate --noinput gunicorn blog_project.wsgi --log-file -说明--noinput表示不提示确认适合自动化部署。九、下一步学习方向学习方向适合谁推荐起点Django REST Framework (DRF)需要为前端框架Vue3/React构建 API 后端学习 Serializer ViewSet将博客改造为 API 服务PostgreSQL需要生产级数据库替换 SQLite使用django-environ管理数据库配置Celery 异步任务需要后台任务发邮件、生成报表接入 Redis Celery实现异步任务队列Django Vue3/React 前后端分离想要前后端分离架构用 DRF 构建 API 后端Vue3/React 构建前端通过 fetch 通信十、小结本章你完成了博客项目的最后一步生产环境配置SECRET_KEY、DEBUG、ALLOWED_HOSTS通过环境变量管理。依赖管理pip freeze requirements.txt生成依赖清单。生产服务器Gunicorn Whitenoise 替代runserver。Procfile定义启动命令让平台识别如何运行应用。静态文件collectstatic收集到统一目录。GitHub 推送.gitignore排除敏感文件。Railway 部署关联仓库、配置环境变量、一键上线。至此你的 Django 博客已经从零到一完整上线。整个系列走完了从环境搭建、模型设计、视图模板、用户系统到生产部署的全流程。接下来你可以基于这个项目继续扩展评论、标签、RSS 订阅等功能或转向 DRF 构建 API 服务。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/15 4:54:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/15 2:04:12

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/15 4:06:36

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉