介绍 MongoDB 是现代 Web 应用程序中常用的免费开源 NoSQL 文档数据库。本教程将帮助您在服务器上为生产应用程序环境设置 MongoDB。 先决条件 要学习本教程,您需要: 按照此初始服务器设置教程设置了一台 Ubuntu 16.04 服务器,包括 sudo 非 root 用户和防火墙。 第 1 步 – 添加 MongoDB 存储库 MongoDB 已经包含在 Ubuntu 软件包存储库中,但官方 MongoDB 存储库提供了最新版本,并且是推荐的安装软件的方式。在这一步中,我们将这个官方存储库添加到我们的服务器。 Ubuntu 通过验证软件包是否使用 GPG 密钥进行签名来确保软件包的真实性,因此我们首先必须为官方 MongoDB 存储库导入它们的密钥。 wget -qO – https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add – 成功导入密钥后,您将看到: 输出 OK 接下来,我们必须添加 MongoDB 存储库详细信息,以便apt知道从哪里下载包。 发出以下命令为 MongoDB 创建列表文件。 ..
Category : 教程系列
Nginx,发音为engine-x,是一个开源 Web 服务器,用于为静态或动态网站提供服务、反向代理、负载平衡以及其他 HTTP 和代理服务器功能。 Nginx 由 Igor Sysoev 于 2004 年创建,用于处理大量并发连接,是一种流行的 Web 服务器,用于托管 Internet 上一些最大和最高流量的站点。 要了解有关 Nginx 的更多信息,请访问我们与 Nginx 相关的综合资源列�..
介绍 云计算提供按需计算资源,与物理硬件和必要的底层配置解耦。自治软件系统在云中提供这些计算资源,以实现云计算提供的自动化。由于这种自动化,可以通过与云提供商的接口以编程方式控制和操作可用资源。通过这种方式,基础设施变更(例如资源扩展)可以更快、更可靠地实施,并且在大多数情况下无需手动交互即可运行,但仍然能够监督整个过程并在某些事情没有按计划进行时恢复更改。 基础设施即代码(IaC) 是一种通过在代码中定义所需资源状态及其相互关系来自动化基础设施部署和更改的方法。代码是用专门的、人类可读的 IaC 工具语言编写的。当您执行代码时,会创建(或修改)云中的实际资源。然后,这会提示该工具代表您与云提供商或部署系统交互以应用必要的更改,而无需使用云提供商的 Web 界面。代码可以在需要时进行修改——在代码执行时,IaC 工具将负责查找代码中所需的基础设施与云中的实际基础设施之间的差异,采取措施使实际状态等于所需的状态。 对于IAC在实践工作中,创建资源不能手动后(修改一个不变的基础设施),因为这会产生代码的预期基础设施和实际状态在云之间的不和谐。此外,手动修改的资源可能会在未来的代码执行期间重新创建或删除,并且所有此类自定义都将丢失。对此的解决方案是将修改合并到基础设施代码中。 在这篇概念性文章中,我们将探讨 IaC 方法、它的好处以及实际实现的示例。我们还将介绍Terraform,这是一个开源 IaC 配置工具。我们将回顾 Terraform 在这种方法中的作用以及它与其他 IaC 工具的比较。 IaC 的好处 借助 IaC,您可以根据需要在多个提供者区域中从单一事实来源(您的声明性代码)快速创建整个基础架构的多个实例。这具有许多优势,可确保您始终如一地创建资源而不会出错,同时减少管理和手动设置时间。 IaC 的主要优点是: 部署:消除与云提供商的手动配置交互意味着更快的部署速度。 恢复:识别配置中的问题可能意味着从故障中快速恢复。 一致性:每次部署资源都是一样的,解决基础设施的脆弱性。 修改:修改资源可以有一个快速的周转时间。 可重用性:在未来的项目中重用部分基础架构架构。 版本控制:将基础架构代码存储在版本控制系统中。 可见性:将配置作为代码编写作为基础设施的文档。 在 IaC 工作流中,您可以以标准化方式反复启动基础设施,这意味着软件开发和测试是一个更快的过程,因为开发、登台、质量保证测试和生产环境是分开的。您可以根据需要多次部署基础架构,从而重复编写代码并对其进行实时测试的过程。一旦您的书面基础设施满足所有要求,您就可以将其部署在所需的云环境中。当出现新需求时,您可以重复该过程。 IaC 基于代码,应始终与版本控制软件 (VCS) 相结合,例如Git。将基础架构声明存储在 VCS 中使其易于检索,更改对团队中的每个人都可见,并提供历史点的快照,因此如果新修改产生错误,您始终可以回滚到早期版本。高级 VCS 可以配置为在添加批准的更改时自动触发 IaC 工具以更新云中的基础架构。 您现在知道 IaC 方法是什么,以及它带来的好处。您现在将了解状态,即 IaC 中使用的资源跟踪机制。然后,您将使用 IaC 跟进 Terraform 和其他工具的作用。 什么是“状态”? ..
介绍 Node.js 是用于服务器端编程的 JavaScript 运行时。它允许开发人员使用 JavaScript 创建可扩展的后端功能,许多人已经从基于浏览器的 Web 开发中熟悉了这种语言。 在本指南中,我们将向您展示在 CentOS 8 服务器上安装 Node.js 的三种不同方法: 使用dnf安装nodejs从CentOS的默认AppStream库包 安装nvmNode 版本管理器,并使用它来安装和管理多个版本的node node从源代码构建和安装 大多数用户应该dnf用来安装 Node.js 的内置预打包版本。如果您是开发人员或需要管理多个已安装的 Node 版本,请使用该nvm方法。大多数用户很少需要从源代码构建。 先决条件 要完成本教程,你需要运行的CentOS 8的服务器,我们将假定你登录到该服务器作为非根,sudo使能的用户。要进行设置,请参阅我们的 CentOS 8 初始服务器设置指南。 选项 1 — 从 CentOS AppStream 存储库安装 Node Node.js 可从 CentOS 8 的默认AppStream软件存储库中获得。有多个版本可用,您可以通过启用适当的模块流在它们之间进行选择。首先nodejs使用dnf命令列出模块的可用流: sudo dnf module list nodejs OutputName Stream Profiles Summary nodejs 10 [d] ..
作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 在TypeScript 中,枚举或枚举类型是具有常量长度的数据结构,其中包含一组常量值。这些常量值中的每一个都称为枚举的成员。在设置只能是一定数量的可能值的属性或值时,枚举很有用。一个常见的例子是一副扑克牌中单张牌的花色值。每张抽到的牌都可以是梅花、钻石、红心或黑桃;除了这四个之外,没有可能的花色值,并且这些可能的值不太可能改变。因此,枚举将是一种有效且清晰的方式来描述一张牌的可能花色。 尽管 TypeScript 的大多数功能对于在编译期间抛出错误很有用,但枚举也可用作可以为代码保存常量的数据结构。TypeScript在编译器发出的最终代码中将枚举转换为JavaScript 对象。因此,您可以使用枚举使代码库更具可读性,因为您可以将多个常量值分组在同一数据结构中,同时还使代码比仅const放置不同的变量更类型安全。 本教程将解释用于创建枚举类型的语法、TypeScript 编译器在幕后创建的 JavaScript 代码、如何提取枚举对象类型以及涉及游戏开发中位标志的枚举用例。 先决条件 要学习本教程,您需要: 您可以在其中执行 TypeScript 程序以跟随示例进行操作的环境。要在本地计算机上进行设置,您需要以下内容: 这两个节点和NPM(或丝安装才能运行的开发环境,手柄的打字稿相关的软件包)。本教程使用 Node.js 版本 14.3.0 和 npm 版本 6.14.5 进行了测试。要在 macOS 或 Ubuntu 18.04 上安装,请按照如何在 macOS 上安装 Node.js 和创建本地开发环境或如何在 Ubuntu 18.04 上安装 Node.js 的使用 PPA 安装部分中的步骤进行操作。如果您使用的是适用于 Linux的Windows 子系统 (WSL),这也适用。 此外,您将需要tsc在您的机器上安装TypeScript 编译器 ( )。为此,请参阅TypeScript 官方网站。 如果您不想在本地机器上创建 TypeScript ..
作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 大多数Let’s Encrypt证书是使用 HTTP 验证颁发的,这允许在单个服务器上轻松安装证书。但是,HTTP 验证并不总是适合颁发用于负载均衡网站的证书,也不能用于颁发通配符证书。 DNS 验证允许使用 DNS 记录来验证证书颁发请求,而不是通过 HTTP 提供内容。这意味着可以同时为在负载均衡器后面运行的 Web 服务器集群或无法通过 Internet 直接访问的系统颁发证书。使用 DNS 验证也支持通配符证书。 在极致的DNS-certbot工具是用于连接Certbot到证书验证记录可以自动通过API,当你申请一个证书设置第三方DNS服务器。这样做的好处是,您不需要将 Certbot 直接与您的 DNS 提供商帐户集成,也不需要授予它对完整 DNS 配置的无限制访问权限,这有利于安全。 委托DNS 区域用于将证书验证记录的查找重定向到第三方 DNS 服务,因此一旦完成初始设置,您就可以请求任意数量的证书,而无需执行任何手动验证。 acme-dns-certbot 的另一个主要优点是它可用于为可能在负载均衡器后面运行或无法通过 HTTP 直接访问的单个服务器颁发证书。在这些情况下不能使用传统的 HTTP 证书验证,除非您在每台服务器上设置验证文件。如果您想为无法通过 Internet 访问的服务器(例如内部系统或临时环境)颁发证书,acme-dns-certbot 工具也很有用。 在本教程中,您将使用 Certbot 的 acme-dns-certbot 挂钩来使用 DNS 验证颁发 Let’s Encrypt 证书。 先决条件 要完成本教程,您需要: 按照 ..
介绍 随着对旨在为关键系统提供服务的可靠和高性能基础设施的需求不断增加,可扩展性和高可用性这两个术语变得非常流行。虽然处理增加的系统负载是一个常见的问题,但减少停机时间和消除单点故障同样重要。高可用性是大规模基础设施设计的一种质量,可解决后面这些问题。 在本指南中,我们将讨论高可用性究竟意味着什么以及它如何提高基础设施的可靠性。 什么是高可用性? 在计算中,可用性一词用于描述服务可用的时间段,以及系统响应用户请求所需的时间。高可用性是系统或组件的一种质量,可确保在给定时间段内具有高水平的操作性能。 测量可用性 可用性通常表示为一个百分比,表示在给定的时间段内特定系统或组件的预期正常运行时间,其中 100% 的值表示系统永远不会出现故障。例如,在一年内保证 99% 可用性的系统最多可能有 3.65 天的停机时间 (1%)。 这些值是根据多种因素计算得出的,包括计划内和计划外的维护期,以及从可能的系统故障中恢复的时间。 高可用性如何工作? 高可用性用作基础设施的故障响应机制。它的工作方式在概念上非常简单,但通常需要一些专门的软件和配置。 高可用性何时重要? 在建立强大的生产系统时,最大限度地减少停机时间和服务中断通常是重中之重。不管如何可靠的系统和软件,可能会出现问题,可以降低你的应用程序或服务器。 对于您的基础架构实现高可用性是减少这类事件的影响的有用策略。高可用性系统可以自动从服务器或组件故障中恢复。 什么使系统具有高可用性? 高可用性的目标之一是消除基础架构中的单点故障。单点故障是您的技术堆栈的一个组件,如果它变得不可用,将导致服务中断。因此,这是为你的应用程序,没有冗余的正常功能的必要条件的任何部件被认为是单一故障点。 为了消除单点故障,堆栈的每一层都必须为冗余做好准备。例如,假设您的基础架构由负载均衡器后面的两个相同的冗余 Web 服务器组成。来自客户端的流量将在 Web 服务器之间平均分配,但如果其中一台服务器出现故障,负载均衡器会将所有流量重定向到其余的在线服务器。 此场景中的 Web 服务器层不是单点故障,因为: 相同任务的冗余组件已就位 该层之上的机制(负载均衡器)能够检测组件中的故障并调整其行为以及时恢复 但是如果负载均衡器离线会发生什么? 对于所描述的场景,这在现实生活中并不少见,负载平衡层本身仍然是单点故障。然而,消除这个剩余的单点故障可能具有挑战性;尽管您可以轻松配置额外的负载均衡器来实现冗余,但负载均衡器之上并没有明显的点来实现故障检测和恢复。 仅靠冗余并不能保证高可用性。必须有一种机制来检测故障并在堆栈的一个组件不可用时采取措施。 冗余系统的故障检测和恢复可以使用自上而下的方法实现:顶部的层负责监控紧邻其下方的层是否出现故障。在我们之前的示例场景中,负载均衡器是顶层。如果其中一台 Web 服务器(底层)变得不可用,负载均衡器将停止为该特定服务器重定向请求。 这种方法往往更简单,但它有局限性:在您的基础架构中,顶层可能不存在或遥不可及,负载均衡器层就是这种情况。在外部服务器中为负载均衡器创建故障检测服务只会创建一个新的单点故障。 在这种情况下,分布式方法是必要的。多个冗余节点必须连接在一起作为一个集群,其中每个节点都应该具有同等的故障检测和恢复能力。 然而,对于负载平衡器的情况,由于名称服务器的工作方式,还有一个额外的复杂性。从负载均衡器故障中恢复通常意味着故障转移到冗余负载均衡器,这意味着必须进行 DNS 更改才能将域名指向冗余负载均衡器的 IP 地址。像这样的更改可能需要相当长的时间才能在 Internet 上传播,这将导致该系统严重停机。 一种可能的解决方案是使用DNS 循环负载平衡。但是,这种方法并不可靠,因为它将故障转移留给客户端应用程序。 更强大和可靠的解决方案是使用允许灵活 IP 地址重新映射的系统,例如浮动 IP。按需 IP 地址重新映射通过提供可在需要时轻松重新映射的静态 ..
介绍 Redis是一种内存键值存储,以其灵活性、性能和广泛的语言支持而闻名。本快速入门教程演示了如何在 Ubuntu 20.04 服务器上安装、配置和保护 Redis。 先决条件 要完成本指南,您需要访问 Ubuntu 20.04 服务器,该服务器具有具有sudo特权的非 root 用户和配置为ufw. 您可以按照我们的 Ubuntu 20.04 初始服务器设置指南进行设置。 第 1 步 – 安装和配置 Redis 首先更新您的本地apt包缓存: sudo apt update 然后输入以下命令安装Redis: sudo apt install redis-server 接下来,使用您喜欢的文本编辑器打开 Redis 配置文件: sudo nano /etc/redis/redis.conf 在该文件中,找到supervised允许您声明 init 系统以将 Redis 作为服务管理的指令。由于您正在运行使用systemd init 系统的Ubuntu,请将其值从 更改no为systemd: /etc/redis/redis.conf . . . # If you run Redis ..
介绍 Terraform 是一种以有组织的方式构建和管理基础设施的工具。除了其他提供商提供的大量服务之外,您还可以使用它来管理 DigitalOcean Droplet、负载均衡器甚至 DNS 条目。Terraform 使用命令行界面,可以从您的桌面或远程服务器运行。 Terraform 通过读取描述构成应用程序环境或数据中心的组件的配置文件来工作。根据配置,它生成一个执行计划,描述它将做什么以达到所需的状态。然后使用 Terraform 执行此计划以构建基础架构。当配置发生更改时,Terraform 可以生成并执行增量计划,以将现有基础设施更新到新描述的状态。 在本教程中,您将安装并使用 Terraform 在 DigitalOcean 上创建一个基础设施,该基础设施由两个 Nginx 服务器组成,这些服务器由DigitalOcean Load Balancer 进行负载平衡。然后,您将使用 Terraform 在 DigitalOcean 上添加一个指向负载均衡器的 DNS 条目。这将帮助您开始使用 Terraform,并让您了解如何使用它来管理和部署满足您自己需求的基于 DigitalOcean 的基础设施。 本教程使用 Terraform 0.13.1。 先决条件 要完成本教程,您需要: 一个 DigitalOcean 帐户。如果您没有,请注册一个新帐户。 DigitalOcean 个人访问令牌,您可以通过 DigitalOcean 控制面板创建。可以在此链接中找到执行此操作的说明:如何生成个人访问令牌。 添加到您的 DigitalOcean 帐户的无密码 SSH 密钥,您可以按照如何使用 SSH 密钥与 DigitalOcean Droplets 进行操作。当您将密钥添加到您的帐户时,请记住您为其指定的名称,因为您将在本教程中用到它。 步骤 ..
介绍 Apache HTTP 服务器是世界上使用最广泛的 Web 服务器。它提供了许多强大的功能,包括可动态加载的模块、强大的媒体支持以及与其他流行软件的广泛集成。 在本指南中,我们将解释如何在 Ubuntu 20.04 服务器上安装 Apache Web 服务器。有关本教程的更详细版本,请参阅如何在 Ubuntu 20.04 上安装 Apache Web 服务器。 先决条件 在开始本指南之前,您应该具备以下条件: Ubuntu 20.04 服务器和具有 sudo 权限的常规非 root 用户。此外,您需要启用基本防火墙来阻止非必要端口。您可以按照我们的 Ubuntu 20.04 初始服务器设置指南了解如何配置常规用户帐户并为您的服务器设置防火墙。 当您有可用的帐户时,请以非 root 用户身份登录以开始。 第 1 步 – 安装 Apache Apache 在 Ubuntu 的默认软件存储库中可用,因此您可以使用传统的包管理工具安装它。 更新您的本地包索引: sudo apt update 安装apache2软件包: sudo apt install apache2 步骤 2 ..