令人惊讶的是,这不是一个骗局,尽管标题听起来像标题诱饵,但事实上它不是!我们谈论的是_Oracle 云免费套餐_。不要问我他们是如何完全免费提供它的,尤其是在这样的规格下……有什么问题吗?有可能,但我看不到。也许唯一的原因是_甲骨文_是另一家渴望获得我们数据的大公司,而我们通过使用他们看似免费的服务将其提供给他们。每个人都必须自行决定是否使用此优惠。在这篇文章中,我将逐步描述如何获得这样的_VPS_(让我们提醒自己,这个缩写词代表_Virtual Private Server_)。
我之前已经提到过这一点,但我会在这里重复一遍:像往常一样,我不会玩任何附属链接或合作伙伴计划,这意味着我不会因为向您推荐此解决方案而获得任何经济利益。我博客上的内容不受此类策略的影响,我创建博客的目的只是为了分享知识,以及从日常活动中获得创意。但是,亲爱的读者,如果您愿意在经济上支持我,我将不胜感激!您可以通过我在_Patreon_和/或_Patronite_上的帐户来执行此操作。
回到免费VPS_的主题,重点是_Oracle_有一个称为_Free Tier_计划的东西,可以在注册并通过附加信用卡或借记卡确认身份后访问该计划。您不需要做任何其他事情。一开始,您还可以获得 30 天的额外 300 美元(波兰货币为 1150PLN),可用于测试付费功能。我们不会使用它,因为我们将专注于_免费套餐_本身,这是一个**提供免费(据称永远)VPS 的计划。当然,什么是免费的、什么不是免费的有一定的限制,但我倾向于这个解决方案,因为在我看来,你可以从中****得到一台相当不错的_机器。额外的好处是,_Oracle_还提供专用的公共 IPv4 地址**,这是一个巨大的优势,甚至是其他提供商的一些付费 VPS 所不具备的。由于这个选项,我们将不必处理任何动态 DNS 配置。
这些限制是指较大的云解决方案提供商喜欢按小时收费。一方面,这对他们和用户来说都很方便,首先可以选择灵活地租用服务,其次可以轻松扩展服务。然而,另一方面,要计算一个月或一年后的实际成本确实很困难。Oracle 有两个主要转换器:OCPU 小时_和_GB 小时。OCPU_代表_Oracle计算单元,在这个转换器中,它是关于我们每月使用多少计算能力。在Oracle免费计划的情况下,我们可以选择使用最多4个配备**ARM架构的Ampere A1处理器的虚拟机,每月最多3000个_OCPU小时。_这取决于您计划在 Oracle 云中运行什么结构,但我会将所有这些参数整合到一台_机器_中,因此我将**创建一个具有 4x** **OCPU的VPS。GB_小时_转换器指的是我们使用的 RAM 量。在_免费套餐_中,我们每月获得 18000 GB 小时,除以一个月中的天数和一天中的小时数,得到每小时 25GB,因此我们可以运行一台或多台_机器_总共 24GB RAM。当然,我会将整个24GB RAM放入一台**机器**中。
_Oracle_对_免费套餐_计划施加的另一个限制是可用磁盘空间量。我们总共有高达200GB 的内存可供数据使用。_它可以在机器_之间分成 50GB 的部分,也可以作为一个整体分配给一台机器,这正是我想要做的。
还有一个选项可以并行运行最多两个基于_AMD_处理器的_实例_,但它们没有与前面提到的规格相匹配的参数,因为它们是只有1/8 **OCPU**功率和 1GB RAM 的虚拟机。因此,我们将坚持基于_ARM_架构的解决方案。_ARM_已经上市一段时间了,很难找到尚未移植到该架构且无法在其上运行的软件。提醒一下,整个_Raspberry Pi_平台及其替代品都在_ARM_上运行。
我将把这个过程简化到用截图来丰富的点,一步一步地描述整个过程。
- 访问oracle.com,找到右上角的_“查看帐户”按钮 [1],然后单击它以弹出一个窗口。_然后单击_登录云_按钮 [2]。
- 您将被重定向到登录面板。_在“还不是 Oracle 云客户?”_部分下 ,单击_注册_按钮 [3]。
- 该页面将带您进入注册表,您需要在其中提供基本信息,例如您的国家/地区 [4]、名字 [5]、姓氏 [6] 和电子邮件地址 [7]。您将在您提供的电子邮件地址中收到一封确认电子邮件,因此该电子邮件必须是有效的。请注意,在这些情况下,有些人喜欢使用临时电子邮件解决方案(例如 10 分钟的电子邮件)。最后,确认您不是机器人 [8] 并单击_电子邮件验证_按钮 [9]。
- _检查您的电子邮件收件箱中是否有来自Oracle 的_电子邮件,其中包含一个确认您的电子邮件地址的按钮 [10]。就我而言,尽管网站声明电子邮件的有效期为 30 分钟,但电子邮件还是花了相当长的时间才到达。尽管如此,最终还是成功了。您可能需要耐心等待,因为_Oracle_注册系统似乎有很多错误……不过,您可以花时间完全做其他事情,甚至关闭_Oracle Cloud_注册表选项卡,因为您将被重定向回来单击电子邮件中的链接后即可。
- 确认电子邮件并返回表格后,其范围扩大。我们两次提供该帐户的密码[11]。在_“客户类型”部分中,我们选择“个人”_ [12](有趣的是,这似乎是唯一尚未翻译成波兰语的内容)。在_“云帐户名称”_字段中,我们输入标识符 [13],我们将使用它来登录,需要注意的是,这不是登录,因为在登录过程中使用电子邮件地址作为登录名。不过这个名字在登录过程中同样重要,所以一定要记住。最后,我们需要设置我们的主要区域[14]。区域选择很重要,因为对于免费帐户,_机器_只能在我们注册时声明的区域注册。只有付费计划才能访问所有地区。我建议选择离我们居住地最近的地区,所以对于波兰来说,那就是德国法兰克福。购买过VPS的人都知道,在欧洲,最受欢迎的两个地区是赫尔辛基(芬兰)和法兰克福(德国)。
- 下一页涉及地址数据,因此我们提供居住地址 [15]、城市 [16]、邮政编码 [17] 和电话号码 [18]。之后,我们通过单击_“继续”_按钮进行确认 [19]。
- 有关地址的部分已折叠,并展开了通过支付卡进行的身份验证。这里,我不确定,因为我没有检查,但我假设卡上的卡信息必须与我们之前提供的一致。我写这篇文章是因为,如果未成年人阅读本文并在父母同意的情况下执行所有这些操作,并且还使用他们的卡,他们必须从一开始就提供父母的信息,而不仅仅是现在。点击_“添加付款验证方式”按钮[20]后,会出现一个窗口,本来应该是一个选择窗口,但实际上,它只允许我们选择信用卡选项[_ 21],我们也选择了该选项。此时,付款表格将打开,其中预先填写了之前提供的数据,在表格末尾,我们应该在一些字段中输入卡号、到期日期和 CVV 号。我们开始付款流程,每个银行的付款流程都会有所不同。我认为对于大多数人来说,我们必须通过电话或交易服务确认这笔交易。验证过程是标准的,_Oracle_向我们收取大约 1 美元的费用(我这样做时是 4.80 PLN),然后在一秒钟后返回相同的金额。在大多数银行,交易会立即被视为无效,并且根本不会出现在账单上。我还必须补充一点,_Oracle_在接受某些卡方面相当挑剔,这一点可以从互联网上找到的意见得到证实。虚拟卡或临时卡很可能会立即被拒绝。_显然, Revolut_也存在一个普遍问题。我尝试使用mBank_的卡,但没有成功,所以第二次尝试时,我使用_Citi Bank,并且成功了。验证成功后,我们将收到一个绿色窗口…
- 关闭上述窗口后,我们返回到注册表,我们的卡应该已添加到其中。我们向下滚动页面,选择激活免费试用版所需的同意 [23],然后使用“_启动我的免费试用版”_按钮 [24] 完成所有操作。
- 现在我们只需等待确认电子邮件,表明我们的帐户已成功创建,并且免费帐户的所有可用资源都已授予我们。
Oracle_将_虚拟机_称为_实例。在本章中,我们将创建一个如本文标题和上述章节中所述的_实例。_
- 就像上一章一样,我们进入oracle.com,找到右上角的“_查看账户”按钮,点击后会弹出一个窗口,我们点击“__登录云”_按钮。
- 我们将被重定向到登录面板,这次我们根据注册时在云_帐户名称字段中输入的内容填写云帐户__名称_[1] 字段(这是我之前写过的重要标识符)。我们使用_“下一步”_按钮 [2] 进行确认。
- 我们进入标准登录页面,在其中输入电子邮件地址作为登录名 [3] 和密码 [4],然后使用_登录_按钮 [5] 进行确认。
- 我们在我们的控制中心。我们通过单击左上角带有三条水平线的按钮来激活主菜单[6]。然后转到_计算选项_卡 [7],并在其中选择_实例_[8]。
- 我们将被带到管理我们的_实例_(虚拟机)的中心。首先,如果尚未选择,我们需要选择_隔间_[9],我们只有一个选择,即_[我们的帐户名] (root)。在我制作的屏幕截图中,您可以看到已经有一个_实例,在您的情况下,它不会在那里,因为我们正要创建它。我们单击_“创建实例”_按钮 [10]。
- 我们将看到一个新的实例创建者。第一步是给它一个名称 [11],它可以是任何名称,并且可能不需要在全局上下文中唯一,只需在我们的_实例_中唯一。下一步是通过单击_编辑[12] 展开__“放置”_部分。
- 在_放置_部分,我们决定在哪个_域中_创建我们的_机器_[13]。如果我们之前选择_法兰克福_作为我们的区域,我们将有三个域可供选择。在我看来,我们选择哪一个并不重要。但是,我们有可能稍后必须回到这个地方并更改域,因为在完成创建实例的过程中_,_我们可能会遇到一个错误,即没有可用的_机器_具有我们在实例中选择的参数。我们刚刚选择的一个。然后我们从 AD-2 切换到 AD-3,然后重试。
- 我们继续进行_图像和形状_部分并将其展开,就像前一个部分一样 [14]。展开后,我们可以选择操作系统和实例_参数_。我们使用“更改图像”按钮 [15]从操作系统开始。在出现的窗口中,我建议选择_Ubuntu [16],向下滚动,选择版本_22.04 [17],然后使用_“选择图像”按钮进行确认 [18]。现在我们单击“更改形状”按钮 [19],这将打开机器参数配置器。我们选择_虚拟机[20],安培[21],检查_VM.Standard.A1.Flex [22],将__OCPU数量_更改为4[23],检查_内存量(GB)_是否设置为24GB[ 24],然后使用_选择形状_按钮 [25] 进行确认。
- 我们感兴趣的下一部分是_网络_,我们当然会扩展它[26]。在本节中,我们需要设置三件事。第一个是_主网络_,可以将其可视化为包含我们所有设备的家庭 Wi-Fi 网络。我们才刚刚开始,所以让我们通过选择创建新的虚拟云网络[27] 并为其命名 [28] 来创建一个_新的虚拟云网络。第二件事是_子网,它是我们主网络的子集。这就像在家庭路由器上设置地址范围为 192.168.0.1 到 192.168.0.255 的子网一样。在这里,我们还通过选择创建新_的公共子网_[29] 并为其命名 [30] 来创建一个新子网。我们在网络设置中需要做的最后一件事是确保我们选择了_分配公共 IPv4 地址_[31],这意味着为我们的_实例_请求专用的公共_IPv4_地址。_我想再次强调,这是一个很好的选择,但许多付费VPS_都没有。
- 下一部分是_添加 SSH 密钥,您可以猜到,这是关于我们将在__SSH_通信期间用于身份验证的密钥。Oracle(正确地)不允许仅使用用户名和密码登录服务器,而是要求使用_SSH 密钥_。创建新_实例_时,我建议只需选择选项_为我生成密钥对_,允许_Oracle_为我们生成一对密钥并下载密钥 –私有[33] 和_公共_[34]。重要的是不要丢失这些密钥,因为没有它们我们将无法访问我们的服务器。
- 最后一部分是_引导卷_,我们可以在其中增加分配给该_实例_的磁盘空间。这是通过选择选项_指定自定义启动卷大小[35] 并在__启动卷大小 (GB)_字段 [36]中输入 50 到 200 之间的值来完成的。默认情况下,它是 50GB,但在_免费套餐_范围内,我们可以使用 200GB,我建议输入该值。我还建议选择本节下部的“使用传输中加密”选项 [37],因为在传输过程中加密数据始终是一个不错的选择。
- 就是这样。现在您所要做的就是通过单击_创建_[38] 按钮确认上述设置,从而在_Oracle云中创建您的第一个__虚拟机_。此时,我们可能仍然会看到我在上面第 7 点中写的消息。在这种情况下,只需选择不同的域并重试即可。
现在看这篇文章,我可以看到它已经变得巨大,而且只会变得更大,因为我想把它变成关于_Oracle Free Tier_的大型指南。我选择的形式是尽可能明确地书写,但这也无助于这篇文章变得简洁。对不起!
回到主题。在这篇文章中,我已经讨论了如何在_Oracle Cloud_中创建帐户以及如何创建第一个_虚拟机_,从而充分利用免费计划的功能。现在是时候描述如何连接到该_机器_了。
我在这篇文章中描述了如何通过_SSH_连接到服务器。同时,在这篇文章中,我解释了如何使用 SSH 密钥。我不会再描述这一切。我们将只关注特定案例中不明显的内容。要通过 SSH 连接,我们基本上需要四件事:
- 服务器的_IP地址,_
- 我们将登录的用户名,
- 公共_SSH_密钥,
- _SSH_私钥。
前两个步骤可以通过访问实例管理中心来实现(正如我们在创建_实例_章节的第 4 点中所做的那样)。成功创建实例后,我们应该在_实例_列表中看到它,所以让我们转到它的属性 [1]。
我们要查找的信息(服务器 IP 地址 [2] 和用户名 [3])可以在右侧_实例访问_部分下的_实例信息_选项卡中找到。
创建实例_时,我们已经将必要的_SSH_密钥下载到磁盘上。我们已经拥有了所需的一切,所以现在我们只需要把它们全部放入_Termius(或使用其他方法)并连接到我们全新的_VPS_即可。通过_SSH_连接后,我建议更改(设置)当前 root 和 ubuntu 用户的密码。
sudo su
passwd
[enter root password twice]
sudo passwd ubuntu
[enter ubuntu user password twice]
exit
对了,我还提醒你一下我的帖子家庭服务器-基本配置。
必须承认,Oracle_积极关注其客户的基本安全。除了我们可以在虚拟机上配置的防火墙(基于 iptables)之外,还有一个额外的防火墙,它是父基础设施的一部分。亲爱的读者,假设您已经计划好了要在服务器上运行哪些服务,以便从外部访问它们,则需要在服务器上打开端口。默认情况下,Oracle_仅为每个虚拟机打开端口_22,用于 SSH 通信。其余端口均已关闭。因此,我在这篇文章中要传达的最后一件事是如何打开虚拟机的其他端口。我将在端口80 (HTTP) 和_443 (HTTPS)的示例中展示这一点,例如,这些端口是运行网站所必需的。
首先,让我们打开前面提到的父防火墙中的端口。这是通过网络界面完成的,我之前通俗地将其称为控制中心。
1 / 8
- 要访问防火墙设置,请首先转到实例管理中心(正如我们在创建_实例_章节的步骤 4 中所做的那样)。
- _接下来,输入实例_的属性[1]。
- 在_实例详细信息_部分,有一个指向_虚拟云网络[2]的链接,这是指向我们__实例_所在的虚拟云网络的链接。在它的设置中,我们可以找到我们正在寻找的内容,即网络防火墙规则。
- 在左侧面板的网络设置中,选择_安全列表_[3]。
- 在列表上,应该有一个名称以_默认安全列表开头的项目…_ [4]。输入其属性,因为这是父防火墙的设置。
- 防火墙设置分为传入流量的规则_Ingress Rules_和传出流量的_Egress Rules_。_使用添加入口规则_按钮 [5]添加新规则。
- 在_源 CIDR_字段 [6] 中,输入值_0.0.0.0/0_,这意味着连接地址并不重要。然后在_目标端口范围_字段 [7] 中输入值_80_,并使用_添加入口规则_按钮 [8] 确认。此规则打开端口 80。
- 我们对端口_443_执行相同的操作。在_源 CIDR_字段 [9] 中,输入值_0.0.0.0/0_,然后在_目标端口范围_字段 [10] 中输入值_443_,并使用_添加入口规则_按钮 [11] 确认。
从主防火墙的层面来说,_80_和_443_端口已经开放,所以我们还需要打开最后一扇门,也就是运行在服务器上的防火墙。这是通过修改_iptables_来完成的,它是内置的 Ubuntu 防火墙。让我们从 80 端口开始:
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
sudo netfilter-persistent save
我们对端口 443 (HTTPS) 执行相同的操作:
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT
sudo netfilter-persistent save
如您所见,要打开任何其他端口,您只需更改上述第一个命令中代表端口号的数字即可。
现在让我们检查上述所有操作是否都成功。当我自己做的时候,我的第一个想法是使用在线端口扫描仪(例如这个),但结果发现除了_22_之外的所有端口仍然关闭……我想嘲笑自己,因为我浪费了将近一个小时才想到扫描仪显示该端口已关闭,因为没有服务在其上运行。我写这篇文章是为了节省您的时间,亲爱的读者。
那么我们如何检查_80_端口是否正确打开呢?我们将使用_Python运行一个简单的__HTTP_服务器。下面我准备了一套现成的命令:
mkdir /tmp/port80
echo 'Port 80 is open!' > /tmp/port80/index.html
sudo python3 -m http.server 80 --directory /tmp/port80/
简而言之:我们创建一个临时文件夹,在其中放置一个_index.html_文件,并在端口_80上运行__HTTP_服务器。现在,我们在浏览器的地址栏中输入_VPS_的_IP 地址,然后按__ENTER_确认。如果我们看到消息“端口 80 已打开!” ,这意味着一切都已按其应有的方式进行。我们返回终端并使用 CTRL+C 组合键停止_HTTP_服务器并清理其文件,以免在我们的新_虚拟机_上留下任何垃圾。
rm -rf /tmp/port80
发表这篇文章后,我想起我还应该讨论另一个主题,即启用_IPv6_支持。如果没有它,机器将正常运行,但对于我们可能想要在其上运行的某些服务,建议支持_IPv6 。此类服务的一个示例是_Mastodon实例,它仅在__IPv4_上工作,但如果没有_IPv6,它将无法与基于此寻址运行的其他实例进行通信。_Oracle为我们提供了启用 IPv6 并为我们的__实例_分配地址的能力,所以这就是我们要做的。
- 我们按照有关打开端口的章节的第 1-3 点中的操作,进入实例的虚拟云网络的设置。
- 在左侧部分中,我们在列表中找到_CIDR 块/前缀[1]。_
- 我们单击_“添加 CIDR 块/IPv6 前缀”_按钮 [2]。
- 在右侧滑出的窗口中,我们向下滚动,选择_分配 Oracle 分配的 IPv6 /56 前缀选项 [3],并使用__添加 CIDR 块/前缀_按钮 [4]进行确认。
- 一段时间后,在右上角,我们将看到一个工具提示,确认已将 IPv6 地址分配给我们的实例 [5]。
- 现在我们需要将创建的 IPv6 地址分配给我们的实例_所在的子网。在左侧部分中,我们转到_子网[6]。我们在列表中找到适当的子网 [7] 并进入其属性。
- 我们单击_“编辑”_按钮 [8]。
- 在右侧滑出的窗口中的_IPv6 前缀_部分中,我们选择_分配 Oracle 分配的 IPv6 /64 前缀_选项 [9],当我们这样做时,将出现一个附加文本字段 [10],其中我们必须输入_00_和_FF_之间的任何两位十六进制值。我们在这里输入什么并不重要,所以我们假设它是_69_ (😎)。我们只需使用_保存更改_按钮 [11] 进行确认。
- 现在我们需要正确配置_防火墙_。为此,我们返回虚拟云网络设置,在左侧,我们在列表中找到_安全列表[12]。_在显示的列表中,我们找到我们感兴趣的条目并进入其属性[13]。
- 此时,任务是在_Ingress Rules_中为传入流量打开适当的端口(就像我们在打开端口的章节中所做的那样),但这次我们为_IPv6_而不是_IPv4_执行此操作,因此我们输入:: /0 0.0.0.0/0_作为源_CIDR [14]。就像与_IPv4_相关的规则一样,我们为要打开的所有端口(80_和_443)添加它们。
- 在防火墙设置中,我们仍然需要转到_入口规则_[15] 并使用_添加出口规则[16] 按钮添加一条规则,该规则将通过__IPv6_打开所有传出流量,就像我们为_IPv4_所做的那样。
- 作为_目标 CIDR_ [17],我们输入_::/0_,从_IP 协议_下拉列表中选择_所有协议_[18] 并使用_添加出口规则_[19] 按钮进行确认。
- 配置完防火墙后,我们还需要设置_路由_。我们返回云网络设置并在左侧列表中找到_路由表[20] 部分。__从显示的列表中,我们找到以… [21] 的默认路由表_开头的条目,然后进入其属性。
- 正如我们所看到的,我们已经有了IPv4_的正确_路由,但对于_IPv6,我们需要创建它。我们单击_添加路由规则[22] 按钮。
- 在从右侧滑出的窗口中,在_协议版本_[23] 中,我们选择_IPv6_,从_目标类型_下拉列表中选择 [24],我们选择_Internet 网关_,在_目标 CIDR 块_文本字段中 [25 ],我们输入_::/0_,从_目标 Internet 网关_下拉列表 [26],选择我们的云网络并使用_添加路由规则_[27] 按钮确认所有内容。
- 最后,我们需要为我们的_实例分配一个__IPv6_地址。为此,我们转到_实例_设置(左上角的三个水平条 ->计算->实例->从列表中选择我们的_实例)。_
- 在左侧部分,我们找到_附加的 VNIC_ [28],从将显示的列表中,我们选择将显示的唯一_VNIC_(虚拟网络接口卡)[29],然后进入其属性。
- 在左侧部分,我们找到_IPv6 地址_[30] 并单击_分配 IPv6 地址_[31] 按钮。
- 在右侧出现的窗口中,从_前缀_[32] 下拉列表中选择之前创建的前缀(应该只有一个选项可供选择)。下面,我建议保留IPv6 地址分配_的默认选择[33],即_从前缀自动分配 IPv6 地址,这意味着将自动选择我们_实例_的地址。当然,如果需要,我们可以随时将此设置更改为手动并自己定义特定的地址。单击_分配_[34] 按钮进行确认。
唷,我必须承认写这篇文章对我来说并不容易。我花了很多时间来准备逐步显示所有内容的屏幕截图。尽管如此,我对最终的结果还是非常满意的。我认为在这篇文章中,我成功地以清晰的方式解释了如何使用这个无疑有趣的_Oracle_产品。而且,我从头到尾都在指导你,没有任何含糊之处。我认为这样的_VPS_对于学习等来说是一个很好的解决方案,因为它的参数足够合理,可以在上面运行许多服务