介绍 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] ..
Category : 教程系列
作者选择了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 ..
作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 在Apache Web服务器使用虚拟主机上的单个实例管理多个域。同样,PHP-FPM使用守护进程在单个实例上管理多个 PHP 版本。您可以一起使用 Apache 和 PHP-FPM 来托管多个 PHP Web 应用程序,每个应用程序都使用不同版本的 PHP,都在同一服务器上,并且都在同一时间。这很有用,因为不同的应用程序可能需要不同版本的 PHP,但某些服务器堆栈,如定期配置的 LAMP 堆栈,只能管理一个。与将每个应用程序托管在自己的实例上相比,将 Apache 与 PHP-FPM 相结合也是一种更具成本效益的解决方案。 PHP-FPM也提供配置选项,stderr以及stdout日志记录,紧急重新启动和适应过程产卵,这是重载的网站是有用的。事实上,将 Apache 与 PHP-FPM 结合使用是托管 PHP 应用程序的最佳堆栈之一,尤其是在性能方面。 在本教程中,您将在单个实例上设置两个 PHP 站点。每个站点将使用自己的域,每个域将部署自己的 PHP 版本。第一个,site1.your_domain将部署 PHP 7.3。第二个,site2.your_domain将部署 PHP 7.4。 先决条件 按照 CentOS 8的初始服务器设置设置一台至少具有 1GB RAM 的 CentOS 8 服务器,包括sudo非 root 用户和防火墙。 按照如何在 CentOS 8 ..
该系列的一部分: MongoDB 安全性:确保数据安全的最佳实践 MongoDB,也称为Mongo,是许多现代 Web 应用程序中使用的文档数据库。与任何数据库管理系统一样,负责管理 Mongo 数据库的人员必须遵守推荐的安全最佳实践,以防止数据在发生灾难时丢失并防止其落入恶意行为者之手。 本系列概念文章对 MongoDB 的内置安全功能进行了高级概述,同时还重点介绍了一些通用的数据库安全最佳实践。 保护存储在 MongoDB 中的数据的最基本方法是限制对运行数据库的服务器的网络访问。一种方法是配置虚拟专用网络(VPN)。VPN 将其连接视为本地专用网络,允许在其中的服务器之间进行安全通信。通过在 VPN 后面运行 MongoDB,您可以阻止对未连接到同一 VPN 的任何机器的访问。 但是,就其本身而言,VPN 可能不足以阻止未经授权的用户访问您的 MongoDB 安装。例如,可能有很多人需要访问您的 VPN,但只有少数人需要访问您的 Mongo 数据库。通过在数据库服务器上设置防火墙,您可以更精细地控制谁可以访问您的数据。 防火墙通过基于一组用户定义的规则过滤传入和传出流量来提供网络安全。防火墙工具通常允许您以高精度定义规则,使您可以灵活地授予来自特定 IP 地址的连接访问服务器上特定端口的权限。例如,您可以编写仅允许应用程序服务器访问 MongoDB 安装使用的数据库服务器上的端口的规则。 另一种限制数据库网络暴露的方法是配置IP 绑定。默认情况下,MongoDB在安装时仅绑定到localhost。这意味着,无需进一步配置,全新的 Mongo 安装将只能接受来自localhost或安装 MongoDB 实例的同一服务器的连接。 这个默认设置是安全的,因为这意味着只有那些已经可以访问安装它的服务器的人才能访问数据库。但是,如果您需要从另一台机器远程访问数据库,则此设置会导致问题。在这种情况下,您还可以将您的实例绑定到远程计算机可以访问数据库服务器的 IP 地址或主机名。 相关资源 什么是防火墙以及它是如何工作的? 什么是 VPN? 如何在 Ubuntu 20.04 上为 MongoDB 配置�..
作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 根据StackOverflow 2020 开发人员调查,React是最受欢迎的JavaScript框架之一,其原因有很多,例如使用Virtual DOM有效更改 Web 应用程序视图,使用可重用、可组合和有状态的组件来提高可扩展性,以及更多的。初学者 React 开发人员通常需要将他们的知识用于实际应用程序的经验。本教程将通过向您展示如何在React中使用React Hooks、使用useState()和进行 API 调用来为您提供这种体验。 本文将讨论使用Unsplash API使用 React 构建照片搜索应用程序的分步过程。Unsplash 是目前最常用和最流行的照片搜索引擎之一,在构建项目和应用程序时可以成为一个很好的数据提供者。 在本教程结束时,您将拥有一个使用 React Hooks 查询 Unsplash API 的工作应用程序。该项目还可以充当样板,因为您可以重用相同的编程逻辑,并将其用作构建涉及 API 调用的其他项目的基础。您的照片搜索应用程序将包括一个搜索栏和呈现的结果,如下所示: 如果您想查看完整代码,请查看DigitalOcean 社区 GitHub 存储库。 先决条件 为了遵循本指南: 您将需要一个免费的 Unsplash 帐户,您可以在Unsplash 官方网站上获得该帐户。 你需要一个运行Node.js的开发环境;本教程在 Node.js 版本 10.20.1 和 npm 版本 6.14.4 上进行了测试。要在 macOS 或 Ubuntu 18.04 上安装它,请按照如何在 macOS ..