折腾侠
项目实战

从零搭建个人博客系统:全栈开发实战指南

本文记录了从 0 到 1 搭建 blog.railx.cn 博客系统的完整过程,涵盖技术选型、架构设计、核心功能实现、部署上线等全流程。基于 Next.js 14 + TypeScript + Tailwind CSS + PostgreSQL + Prisma 技术栈,适合作为全栈开发入门实战项目参考。

折腾侠
2026/03/15 发布
17约 3 分钟420 字 / 289 词00

五、部署上线

5.1 Docker 配置

Dockerfile
FROM node:20-alpine AS base
FROM base AS deps
WORKDIR /app
COPY package.json package-lock.json* ./
RUN npm ci

FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build

FROM base AS runner
WORKDIR /app
ENV NODE_ENV production
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
COPY --from=builder /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
USER nextjs
EXPOSE 3000
CMD ["node", "server.js"]

5.2 Nginx 配置

Nginx
server {
    listen 80;
    server_name blog.railx.cn;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name blog.railx.cn;
    ssl_certificate /etc/nginx/ssl/blog.railx.cn.crt;
    ssl_certificate_key /etc/nginx/ssl/blog.railx.cn.key;
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

六、项目成果

指标目标实际
首屏加载< 1s0.6s ✅
Lighthouse> 9096 ✅
文章数量30+31 ✅

功能清单

  • ✅ 文章 CRUD 管理
  • ✅ 分类标签系统
  • ✅ Markdown 渲染 + 代码高亮
  • ✅ SEO 优化(Sitemap、Meta 标签)
  • ✅ RSS 订阅
  • ✅ 响应式设计 + 深色模式
  • ✅ Docker 容器化部署
  • ✅ HTTPS 支持

七、经验总结

踩过的坑

  1. Next.js 14 App Router 学习曲线:需要时间熟悉新路由约定
  2. Prisma 迁移管理:生产环境迁移需谨慎,先测试环境验证
  3. 图片优化:初期忘记压缩,导致加载慢

最佳实践

  1. 类型安全:全程 TypeScript,减少运行时错误
  2. 组件拆分:保持单一职责,易于复用测试
  3. 渐进增强:先核心功能,再高级特性
  4. 文档先行:写代码前先写文档理清思路

八、后续规划

  1. 评论系统:集成 Giscus 或自建
  2. 搜索功能:使用 Meilisearch 全文搜索
  3. 数据分析:集成 Umami 或 Plausible
  4. 邮件订阅:RSS to Email 定期推送
  5. 多语言支持:i18n 中英文切换

结语

从零搭建博客系统是一个很好的全栈练手项目,涵盖前端、后端、数据库、部署等各个环节。通过这个项目,我不仅拥有了一个完全可控的内容平台,也系统性地实践了现代 Web 开发的最佳实践。

如果你也想搭建自己的博客,不妨参考本文的技术选型和实现思路。当然,也可以直接使用现成的博客系统(如 Ghost、Hexo),但自建的乐趣在于过程中的学习和成长。

折腾不止,学习不息。 希望这篇文章对你有所帮助!


本文是 blog.railx.cn 第 32 篇文章,属于「项目实战」分类。

分享到:

如果这篇文章对你有帮助,欢迎请作者喝杯咖啡 ☕

加载评论中...