从 HTTPS 到对象存储,我的博客终于有了上线条件

预计阅读时间:10 分钟

这是「把自己部署到互联网上」系列的第 33 篇。

从第 26 篇到第 32 篇,我把个人博客上线前很关键的一段走完了。

这一段主要解决三个问题:

  1. 网站如何可信访问
  2. 资源如何长期承载
  3. 博客如何真正跑起来

可信访问这条线包括 HTTPS、SSL 证书、通配符证书和 acme.sh

资源承载这条线包括对象存储、桶策略、JSON 配置和域名访问控制

博客运行这条线包括 Docker 部署、数据库连接、迁移和管理员初始化

写到这里,我的博客开始具备上线条件了。注意,是具备上线条件,后续还要持续完善。

具备上线条件,意味着核心链路已经打通:能访问,能通过 HTTPS 访问,能运行,能存数据,能管理内容,能承载图片和附件。

25 篇之前,我解决的是什么

在第 25 篇之前,我主要解决部署架构问题:

  • Conda 还是 Docker?
  • Docker 和 Compose 分别负责什么?
  • Nginx 装系统里还是放容器里?
  • 为什么不用每个项目一个 Nginx?
  • 全局 Nginx 如何统一管理多个项目

最后形成的结构是:Docker 管项目运行,Compose 管项目内部服务,全局 Nginx 管公网入口。

26 篇之后,部署博客项目

从第 26 篇开始,我进入博客上线阶段。

因为项目上线能跑,不代表它适合正式对外访问

正式访问还要考虑 HTTPS 是否正常、证书是否可维护、图片和附件放在哪里、对象存储权限是否安全、博客容器是否能跑、数据库是否初始化、管理员后台是否可用、数据是否持久化。

HTTPS 解决的是可信赖访问

以前我也会觉得 HTTPS 是上线后的优化,先让网站能访问,再慢慢配证书。

但对个人博客这种长期入口来说,HTTPS 应该是正式上线的一部分。

它不只是加密,还关系到浏览器提示、后台登录、现代 Web 能力、搜索和分享链接。

一个准备长期对外展示的博客,如果打开时浏览器提示“不安全”,基础体验会被直接打断。

证书管理解决的是长期维护

第 27 篇写了单域名证书申请、下载和部署流程:

申请证书,验证域名,下载证书和私钥,放到全局 Nginx 的证书目录,配置 443,检查 Nginxreload,最后验证 HTTPS

这个流程能跑通第一次 HTTPS。

通配符证书

手动证书只是第一步。如果后面有多个子域名,或者证书需要定期续期,手动处理会变成负担。

所以第 28 篇继续写了通配符证书和 acme.sh

通配符证书解决多子域名覆盖,DNS API 解决自动验证,acme.sh 解决签发、安装和自动续期,

全局 Nginx 负责统一入口和证书引用。

这样 HTTPS 才不只是“能配好一次”,而是具备长期自动维护的能力。

对象存储

对象存储解决的是资源承载。

第 29 篇写了为什么个人博客也需要对象存储。

长期写技术文章后,截图、部署图、项目预览图、附件和封面图会越来越多。如果全放服务器本地,会带来磁盘增长、迁移麻烦、备份边界混乱和带宽压力。

对象存储把图片、附件和静态资源从应用服务器拆出来,让应用服务器专注运行服务和管理内容。

对象存储访问策略

第 30 篇继续写了桶策略、JSON 配置和域名访问控制。

对象存储真正容易踩坑的地方是访问权限:

  • 公开资源可以公开读
  • 私有资源不能误公开
  • 自定义域名要配 DNS 和 HTTPS
  • 防盗链和 CORS 要按需配置

Docker 部署个人博客

第 31 篇开始真正用 Docker 部署个人博客,从目录规划、代码拉取、.envDockerfiledocker-compose.yml、数据库、启动、日志,到全局 Nginx 接入、DNS 和 HTTPS 验证。

一步一步的实施,让博客从基础设施规划进入真实运行。

理数据库、迁移和管理员初始化问题

第 32 篇继续处理数据库、迁移和管理员初始化问题:

  • 数据库地址不能写错,Docker 内部不要误用 localhost
  • 初始化变量不一定每次重新生效,迁移要执行,管理员账号要创建,数据卷要确认,初始化脚本不要重复乱跑。

这些处理完后,博客才不仅是能访问,而是开始具备能投入生产的条件:

能写文章,能保存数据,能登录后台,能持续维护。

小结:

这一阶段最大的变化,是我对“上线”的理解变得更具体。

以前可能会觉得页面能打开就是上线。现在我更倾向于这样定义:上线不是页面能打开,而是核心链路可用、可信、可维护

真正的上线条件至少包括:

域名能解析,服务器能访问,Nginx 能接流量,HTTPS 正常,证书可续期,应用容器正常,数据库连接正常,数据结构初始化完成,管理员后台可用,数据持久化明确,图片和附件有资源承载方案,基础日志能查看

踩过的几个坑

  • 把 HTTPS 当成上线后的优化。后面再补不是不行,但对长期入口来说,越早统一越好。否则文章链接、资源地址、分享链接、后台登录都会受影响。

  • 把对象存储当成云端文件夹。对象存储有权限、桶策略、公开读和私有读、自定义域名、防盗链、CORS。不了解这些,资源要么访问不了,要么开放过度。

  • 容器 running 就以为部署完成。docker compose ps 全是 running,不代表服务可用。数据库可能没初始化,迁移可能没执行,后台可能进不去,静态资源可能加载失败,数据可能没有持久化。部署完成要看业务链路,不只看容器状态

现在还剩一些收尾的工作。

本地工具如何连接 Docker 里的数据库

数据库不能直接暴露公网,但排查和维护时可能需要用 Navicat 或其他工具查看数据。

静态资源问题

页面能打开,打开 F12,还会报一些静态资源404,尤其接入对象存储后,还会有路径、权限、跨域和混合内容问题。

防爬和异常访问

博客上线后会遇到爬虫、扫描和异常请求,需要日志和基础防护。

发文流程

博客最终要服务内容发布,写文章、上传图片、发布、归档、同步到公众号或专题,这条流程也要跑顺。

所以,从 HTTPS 到对象存储,再到 Docker 部署和数据库初始化,这一阶段让我确认:博客已经不只是服务器上的一堆配置。它开始具备写文章、被访问、保存数据和长期维护的基本条件。

下一篇写一个很具体的需求:Navicat 如何连接 Docker 里的数据库。部署完成后,能否安全、方便地查看和维护数据库,会直接影响后续排查效率。


本文由 楸木 原创,转载请注明出处。

相关推荐

发现更多