开发者生态
morning
Blog 在 Ubuntu 16.04 上运行了 10 年。我把它迁移到 FreeBSD
2026-05-21
1 阅读
speckx
这个博客已经在 Digital Ocean VPS 上运行了十多年。一台托管在纽约市、运行 Ubuntu 16.04 LTS 的计算机。至少 5 年没有得到支持的 LTS。是时候改变它了。经过一番考虑,我迁移到了一台 Hetzner 虚拟机,它比我原来的 Ubuntu 虚拟机要好得多,价格还不到我以前支付的一半,而且就在全国各地。不仅如此,我还接受了将我的堆栈迁移到 FreeBSD 的挑战。这是一篇很长的文章,但请继续阅读 FreeBSD Jails 与 Bastille 的精彩介绍以及一些有趣的站点负载基准。动机 如果你知道 Ubuntu 上的发行版是如何工作的(我自己也不是很熟悉),一旦发行版不再支持,apt 软件包存储库就会消失,所以你无法再从中获取任何更新。运行这样一个过时的系统会产生多种影响,最明显的是您的服务器不再那么安全。可能有几个机器人只是试图找到有漏洞的节点来向其引入恶意内容。幸运的是(我认为),什么也没发生。不管怎样,这并不是说里面有什么重要的东西可以被偷。但我记得很久以前,我的一个 WordPress 博客也在旧的 VPS 上运行,在帖子的文本中随机得到了许多非常可疑的赌场和赌博链接。我已经在使用 Hetzner VPS 作为远程开发机器,我可以从任何地方通过 SSH 访问,而且它对于价格而言是一个可靠的优质 VPS。所以我决定从比较规格开始。这是运行我的博客和其他网站的 Droplet:我的旧 Digital Ocean 服务器,有 2GB RAM、一个 vCPU、50GB 磁盘、2TB 每月流量,运行 Ubuntu 16.04 x64。它位于纽约市的数据中心。这可能就是它如此昂贵的原因,我每月为此支付 13 美元。 Hetzner 是一家老牌欧洲 IT 公司,在我居住的德国拥有大型数据中心。我能买到的最便宜的 Hetzner 服务器,只要 3.56 欧元,已经比我以前的服务器好多了:每月一杯咖啡 内存和 CPU 双倍,存储空间略少,但流量增加了十倍。但我决定采用更强大的设置,每月费用不到 6 欧元:每月一杯更高档的咖啡,这对于我的网站来说甚至可能有点过大,但为什么不呢?旧设置 我的旧设置为更多网站提供服务,而不仅仅是这个博客。没有什么太受欢迎的;这个博客是所有网站中最受欢迎的,每个月的页面浏览量不会超过几千。除了几篇帖子在《黑客新闻》上疯传之外,流量并不多。最后,这台机器基本上服务于静态站点,没有运行花哨的 CGI 或自定义代码。堆栈很简单。一切都由 nginx/1.10.3 静态提供。所以我基本上在 /etc/nginx/sites 中有几个配置文件,可用于每个站点。额外的必要程序,如静态站点生成器和 LaTeX 套件(例如:此博客由 Hugo 生成)是通过 apt 或 snap 安装的。事实上,我更新博客的过程是: 在本地编写文本 提交并推送到存储库 ssh 到服务器中 拉取存储库更新 运行hugo 在使用此 VPS 的头几年,我还使用它来运行一些测试并进行一些编程。所以它充满了很多我不再使用的过时软件。但它奏效了。并且工作得很好。是的,它运行的是 Linux 4.4!事实上,当我关闭它时,它的正常运行时间是 1491 天!大约有4年没有中断!为什么选择 FreeBSD 老实说,我的主要动机之一是尝试一些不同的东西。我已经阅读和观看了很多有关 BSD 的资料,而且我之前也有过使用 FreeBSD 的短暂经验,所以我认为这将是对其进行实际测试的好方法。 FreeBSD 通常因其集成设计、安全性和 Jails 的稳定性而受到称赞。我们稍后会谈到这一点。我不想听起来好像我确切地知道自己在做什么,但当我读到《监狱》时,我确切地知道自己想做什么。 Jails 是一种虚拟化/容器化形式,它已成为 FreeBSD 的一部分超过 25 年,甚至早于 Docker 出现。乍一看,它完全符合您对 Docker 容器的期望:它在其中沙箱了一个“迷你系统”,这样您就可以运行无法访问主机系统的东西。我认为主要的区别在于 Docker 和其他容器解决方案更适合“打包程序”。它是短暂且不可改变的。它将对来自容器外部的数据进行操作,但在容器内部,一切都将始终相同。而 Jails 实际上是子系统,几乎就像迷你虚拟机一样,但实际上共享相同的内核。最重要的是,它的文件系统 ZFS 实际上对于服务器来说非常好且有用。如果您来自 Linux 世界,您可能听说过 Btrfs,这是较新的文件系统