
早在三月份,LEB 就发表了一篇题为《向 Oracle 提问:“‘永远免费’是低端市场的未来吗?”的文章。这篇文章指出Oracle 云免费套餐的一大特点是:无需信用卡即可计费。如果没有信用卡,就意味着不太可能出现意外账单。因此,Oracle 的免费套餐与其他大型云服务提供商(例如亚马逊)截然不同,后者经常出现意外账单或账单问题。只需在 Google 上搜索“AWS 意外账单”,您就会明白我的意思。
我在 Oracle 免费套餐上运行了三个实例好几个月了,一直都很稳定,没有出现任何问题。最近,我决定把我的小型静态低端网站迁移到 Oracle 免费套餐中最小的实例类型VM.Standard.E2.1.Micro。这次迁移每年帮我节省了 60 美元——之前我每月要为运行该网站的 VPS 支付 5 美元。为了体验一下,我还决定尝试一下Oracle Linux,它是 Oracle 云免费套餐的默认操作系统镜像。
从 Apache 迁移到 Caddy
在配置好 Oracle 免费套餐/Oracle Linux 实例后,我接着安装了 Apache(在 Oracle Linux 中称为 httpd)。Apache 是领先的 Web 服务器之一。因此,多年来 Apache 一直满足我非常简单的需求也就不足为奇了。事实上,Oracle 免费套餐中的基本 Apache 安装似乎运行良好。
下一步是安装 Certbot 或 Certbun,以便获取Let's Encrypt证书。在 Google 上搜索“install certbot oracle linux”(不带引号)会显示前两个结果:
第二篇文章末尾附有指向第一篇文章的链接,并提示如果按照第一篇文章的步骤操作,可能会导致 Python 错误。第二篇文章建议使用 Certbot 的“其他 Unix”指令来获取独立证书。此外,两篇文章都以 Oracle Linux 7 为基准,而我的系统安装的是 Oracle Linux 8。
Caddy Web 服务器以其自动 HTTPS 功能而闻名。相比于在 Google 搜索到的文章中未提及的不同 Oracle Linux 版本上安装和配置 Certbot 来使用 Apache,尝试 Caddy 似乎要容易得多。所以我卸载了 Apache,转而尝试 Caddy。
安装 Caddy
Caddy 网站上有Fedora、Red Hat 和 CentOS 的安装文档。由于 Oracle Linux 也属于 Fedora/Red Hat/CentOS/Rocky/Alma 系列,我猜想 Caddy 网站上的安装说明可能也适用于 Oracle Linux。按照 Caddy 网站上的说明操作后,安装成功了。
[opc@instance-20220717-1620 ~]$ sudo dnf update
sudo dnf install 'dnf-command(copr)'
Last metadata expiration check: 0:13:50 ago on Sun 18 Sep 2022 04:38:59 AM GMT.
Package dnf-plugins-core-4.0.21-11.0.1.el8.noarch is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[opc@instance-20220717-1620 ~]$ sudo dnf copr enable @caddy/caddy
Enabling a Copr repository. Please note that this repository is not part
of the main distribution, and quality may vary.
Fedora 项目除了文档中概述的规则外,不会对该存储库的内容行使任何权力,并且软件包不受任何质量或安全级别的约束。
请不要在 Fedora 系统中提交关于这些软件包的错误报告。
Bugzilla。如果遇到问题,请联系此仓库的所有者。
您确定要启用 copr.fedorainfracloud.org/@caddy/caddy 吗?[y/N]: y
存储库已成功启用。
[opc@instance-20220717-1620 ~]$ sudo dnf install caddy
Copr 仓库(Caddy 所有者:@caddy) 2.5 kB/s | 1.5 kB 00:00
依赖关系已解决。
===================================================================
包裹
Arch 版本仓库大小
===================================================================
安装:
球童 x86_64 2.5.2-1.el8 copr:copr.fedorainfracloud.org:group_caddy:球童 12 M
交易概要
===================================================================
安装 1 个软件包
总下载大小:12 MB
安装尺寸:45 米
这样可以吗?[y/N]:y
正在下载软件包:
caddy-2.5.2-1.el8.x86_64.rpm 7.7 MB/s | 12 MB 00:01
-------------------------------------------------------------------
总速度 7.7 MB/s | 12 MB 00:01
Copr 仓库(Caddy 所有者:@caddy) 7.5 kB/s | 994 B 00:00
正在导入 GPG 密钥 0xD605147E:
用户 ID:"@caddy_caddy(无)"
指纹:4A76 F92F F6D4 0440 F8FC 4F36 C521 91B1 D605 147E
来源:https://download.copr.fedorainfracloud.org/results/@caddy/caddy/pubkey.gpg
这样可以吗?[y/N]:y
密钥已成功导入
运行交易检查
交易检查成功。
运行事务测试
交易测试成功。
运行交易
准备中:1/1
运行脚本:caddy-2.5.2-1.el8.x86_64 1/1
正在安装:caddy-2.5.2-1.el8.x86_64 1/1
运行脚本:caddy-2.5.2-1.el8.x86_64 1/1
正在验证:caddy-2.5.2-1.el8.x86_64 1/1
已安装:
caddy-2.5.2-1.el8.x86_64
完全的!
[opc@instance-20220717-1620 ~]$
检查 Caddy 是否正常工作
Caddy 运行正常,足以显示其版本,所以我启动了它。由于我没有启用Caddy(使用sudo systemctl enable caddy ),所以重启后 Caddy 不会自动重启。但我打算在进行更多测试之前再启用 Caddy。
[opc@instance-20220717-1620 ~]$ caddy version
v2.5.2 h1:eCJdZyEyAl2zuQTab8Mh3gETnYWDClo1Ljtg42q9RNZrs=
[opc@instance-20220717-1620 ~]$ sudo systemctl start caddy
接下来,我向 systemd 查询了 caddy 的状态。
[opc@instance-20220717-1620 ~]$ sudo systemctl status caddy
● caddy.service - Caddy
Loaded: loaded (/usr/lib/systemd/system/caddy.service; disabled; vendor preset:>
Active: active (running) since Sun 2022-09-18 05:14:22 GMT; 16s ago
Docs: https://caddyserver.com/docs/
Main PID: 2177906 (caddy)
Tasks: 7 (limit: 3853)
Memory: 15.6M
CGroup: /system.slice/caddy.service
└─2177906 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
9月18日 05:14:22 instance-20220717-1620 caddy[2177906]: JOURNAL_STREAM=9:59150281
9月18日 05:14:22 instance-20220717-1620 caddy[2177906]: {“level”:”info”,”ts”:166347>
9月18日 05:14:22 instance-20220717-1620 caddy[2177906]: {“level”:”info”,”ts”:166347>
9月18日 05:14:22 instance-20220717-1620 caddy[2177906]: {“level”:”warn”,”ts”:166347>
9月18日 05:14:22 instance-20220717-1620 caddy[2177906]: {“level”:”info”,”ts”:166347>
9月18日 05:14:22 instance-20220717-1620 caddy[2177906]: {“level”:”info”,”ts”:166347>
9月18日 05:14:22 instance-20220717-1620 caddy[2177906]: {“level”:”info”,”ts”:166347>
9 月 18 日 05:14:22 instance-20220717-1620 systemd[1]: 已启动 Caddy。
9月18日 05:14:22 instance-20220717-1620 caddy[2177906]: {“level”:”info”,”ts”:166347>
9月18日 05:14:22 instance-20220717-1620 caddy[2177906]: {“level”:”info”,”ts”:166347>
第 1-20/20 行(结束)
[opc@instance-20220717-1620 ~]$
然后我在Lynx 命令行浏览器中查看了 Caddy 的默认网页。

后续步骤
Caddy 的默认网页很贴心地告诉我,要让我的网站完全使用自动颁发的安全证书,还需要哪些额外步骤。这些步骤包括:更新DNS 记录以指向新服务器,将网站文件从旧服务器迁移到新服务器,调整 Caddyfile 中的配置,以及重启 Caddy。
文件传输完成后, SELinux最初阻止了 Caddy 访问这些文件。后续文章将介绍文件传输过程以及如何调整 SELinux 的初始阻止设置。
此外,虽然 Caddy 的默认网页上没有提到,但我还是想启用日志记录功能。启用日志记录需要对 Caddyfile 文件进行额外修改,并解决另一个 SELinux 问题。关于日志记录和第二个 SELinux 问题的更多信息,我们将在另一篇文章中详细介绍!
其他有用的参考资料
如何在 Oracle Linux 8 上安装和配置带有 PHP 的 Caddy Web 服务器