近期文章

Navicat 如何连接 Docker 里的数据库?

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

上一篇复盘了从 HTTPS 到对象存储,再到 Docker 部署和数据库初始化。博客具备上线条件后,很快会遇到一个实际维护问题:我想用 Navicat 看一下 Docker 里的数据库,应该怎么连?

这个需求很常见。比如确认表是否创建成功,检查迁移有没有执行,看管理员账号是否初始化,排查某条数据为什么没写进去,导出部分数据,或者临时执行一条 SQL。NavicatDataGripDBeaver 这类工具确实方便。

但前提必须明确:不要为了让数据库工具连上,就直接把数据库端口暴露到公网

MySQL 服务在哪儿?

先看 Docker 里...

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

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

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

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

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

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

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

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

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

具备上线条件,意味着核心链路已经打通:能访问,能通过 HTTPS 访问,能运行,能存数据,...

博客部署后,我遇到的数据库、迁移和管理员初始化问题

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

上一篇,把个人博客通过 Docker 部署起来了:

  • 项目目录有了,代码拉下来了

  • .env 配好了

  • Dockerfile 和 Compose 文件也整理了
  • 应用容器和数据库容器跑起来
  • 全局 Nginx 能转发请求
  • 域名和 HTTPS 也开始接入

到这一步,博客已经算基本部署成功。

但接着做下来我发现:容器跑起来,不等于博客真的可用,这篇文章主要记录下使用过程中踩到坑的问题,供大家参考下,避免再次踩坑。

遇到的问题

问题1 数据库容器正常运行,但应用连不上

查看容器日志,日志里可能会出现 connection refusedac...

我是如何用 Docker 部署个人博客的

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

前面已经处理了服务器、域名、备案、安全边界、Docker 选型、全局 Nginx、HTTPS 和对象存储

到这一篇,能想到的处理步骤已经都处理了,大家还有更好的见解,欢迎评论区友好交流一下。

进入主线动作:用 Docker 容器部署个人博客。

部署思路

这篇不是传统意义上的教程,而是按我的部署思路,把博客从

代码目录、环境变量、数据库、Docker Compose、启动检查,到接入全局 Nginx

的流程串起来。

具体命令要按项目调整,重点是理解一个博客项目要稳定运行,哪些东西必须放到可维护的位置。

部署过程

这一篇的目标是:把个人博...

对象存储桶策略、JSON 配置和域名访问控制实战

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

上一篇讲了为什么个人博客也需要对象存储。

图片、附件、项目截图和静态资源会随着文章不断增长,如果全部放在服务器本地,后面会遇到磁盘膨胀、迁移麻烦、备份边界不清晰和带宽压力等问题

但对象存储真正有坑的地方,是文件权限到底该怎么开?

  1. 图片既要能被文章访问,也要不能被别人随便访问
  2. 图片等相关资源能通过自己的域名访问,但又不希望任何地方都无限制引用
  3. 桶策略、JSON 配置、访问域名、防盗链、CORS 混在一起,很容易出错

我刚开始使用对象存储时,就把它当成云端文件夹:

创建桶,上传图片,复制链接,放进文章里,图片能打开,好像就结束了。

应该...

为什么个人博客也需要对象存储?

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

前面几篇把 HTTPS 这段基本走完了:

  1. 先讲为什么个人网站需要 HTTPS
  2. 再写 SSL 证书申请、下载和部署
  3. 最后用通配符证书和 acme.sh 解决多域名证书管理。

到这里,个人博客的访问入口已经比较完整:

服务器、域名、备案、安全边界、部署架构、全局 Nginx 和 HTTPS 都有了基本方案。

一个不起眼的问题

接下来要处理一个容易被忽略的问题:图片、附件和静态资源应该放在哪里?

最简单、粗暴的做法是放在服务器本地。

博客项目本身也有上传目录,图片传到上传目录里,文章直接引用本地资源。

这很简单直接,运行没问题。但项目要...

通配符证书和 acme.sh:我如何解决多域名证书管理

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

上一篇写了单域名 SSL 证书从申请、下载到部署的完整流程。

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

这条链路适合把 HTTPS 跑通,对整个流程有个完整的理解。

接下来,又会遇到一个问题,

假如我有多个子域名,我该如何处理呢,难道说,也是一个一个的申请?

多个子域名应如何处理?

业务发展需要,会产生多个服务,比如 blog.aicultiv.comwww.aicultiv.comapi.aicultiv.comadmin.aicu...

SSL 证书申请、下载、部署完整流程

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

上一篇讲了为什么个人网站需要 HTTPS

它不仅仅只是地址栏里的小锁,还关系到访问安全、浏览器提示、后台登录、现代 Web 能力、搜索和分享体验。

对一个准备长期运行的博客来说,网站不能只做到“能访问”,还要能通过可信连接访问。

这一篇进入实际操作:SSL 证书怎么申请、下载,并部署到 Nginx

完整链路

我这里会以阿里云为例(域名在阿里买的),在哪个平台购买不重要,不同平台页面布局多少会有一些差异。

更重要的是理解流程:申请证书,完成域名验证,下载证书,放到服务器,配置 Nginx,检查配置,重载服务,最后验证 HTTPS 是否正...

个人网站为什么也需要 HTTPS?

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

上一篇复盘了部署架构:

  • Docker 管项目运行
  • Docker Compose 管项目内部服务
  • 全局 Nginx 容器 管公网入口
  • 数据库不暴露公网
  • 多个项目通过统一入口对外访问

到这里,服务器安全和部署架构都有了基本方案。

但个人博客还不能算真正准备好上线,因为还差一个关键环节:HTTPS

HTTPS(超文本传输安全协议)

从技术上说,HTTP也能访问网站。

输入域名,浏览器能打开页面,文章能看,接口能请求,似乎已经够了。

问题是,如果这个网站准备长期公开访问,尤其以后还会承载博客、官网、作品站和后台管理,HTTPS 就不该被当成...

从 Conda 到 Docker,再到全局 Nginx,我终于理清了部署架构

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

从第 18 篇到第 24 篇,我一直在处理一个问题:

个人博客到底应该怎么部署

这个问题看起来只是技术选型,但会直接影响后续维护。如果部署架构一开始就很散,后面新增项目、修改配置、迁移服务器、排查故障,都会消耗大量精力。所以这一阶段我没有急着把博客跑起来,而是先把部署方式理清楚。

这几篇大致走过三步

  • 先在 Conda 和 Docker 之间做选择
  • 再复盘为什么放弃 Conda 部署,转向 Docker
  • 最后确定用全局 Nginx 统一管理多个项目入口

到现在,我的基本方案可以概括为一句话:

Docker 管项目运行,Docker ...

发现更多