作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。 介绍 Terraform 提供的高级功能随着项目规模和复杂性的增长而变得越来越有用。通过构建代码以最大程度地减少重复并引入工具辅助工作流以简化测试和部署,可以降低为多个环境维护复杂基础架构定义的成本。 Terraform 将状态与后端相关联,后端确定存储和检索状态的位置和方式。每个州只有一个后端,并与基础设施配置相关联。某些后端,例如local或s3,可能包含多个状态。在这种情况下,状态和基础设施与后端的配对描述了一个工作空间。工作区允许您部署同一基础架构配置的多个不同实例,而无需将它们存储在单独的后端中。 在本教程中,您将首先使用不同的工作区部署多个基础设施实例。然后,您将部署一个有状态资源,在本教程中,它将是 DigitalOcean Volume。最后,您将参考Terraform Registry 中的预制模块,您可以使用它们来补充您自己的模块。 先决条件 DigitalOcean 个人访问令牌,您可以通过 DigitalOcean 控制面板创建。您可以在如何生成个人访问令牌教程中找到相关说明。 Terraform 安装在您的本地计算机上,并使用 DO 提供程序设置了一个项目。完成步骤1和步骤2中的如何使用Terraform与DigitalOcean教程,并确保该项目命名文件夹terraform-advanced,而不是loadbalance。在步骤 2 中,不要包含pvt_key变量和 SSH 密钥资源。 注意:我们已经使用 Terraform 专门测试了本教程0.13。 使用工作区部署多个基础设施实例 当您想要部署或测试主基础架构的修改版本而不创建单独的项目并再次设置身份验证密钥时,多个工作区非常有用。使用单独状态开发和测试功能后,您可以将新代码合并到主工作区中,并可能删除附加状态。当您init创建 Terraform 项目时,无论后端如何,Terraform 都会创建一个名为default. 它始终存在,您永远无法删除它。 但是,多个工作区不是创建多个环境(例如登台和生产)的合适解决方案。因此,仅跟踪状态的工作区不存储代码或其修改。 由于工作区不跟踪实际代码,因此您应该通过将它们与其基础结构变体进行匹配来在版本控制 (VCS) 级别管理多个工作区之间的代码分离。如何实现这一点取决于 VCS 工具本身;例如,在Git 分支中将是一个合适的抽象。为了更轻松地管理多个环境的代码,您可以将它们分解为可重用的模块,从而避免为每个环境重复类似的代码。 在工作区中部署资源 您现在将创建一个部署 Droplet 的项目,您将从多个工作区应用该项目。 您将把 Droplet 定义存储在一个名为droplets.tf. 假设您在terraform-advanced目录中,通过运行创建并打开它进行编辑: nano droplets.tf 添加以下几行: 液滴.tf resource ..
Category : 教程系列
本教程的早期版本由Justin Ellingwood编写。 介绍 MongoDB,也称为Mongo,是许多现代 Web 应用程序中使用的面向文档的数据库。它被归类为NoSQL 数据库,因为它不依赖于传统的基于表的关系数据库结构。相反,它使用具有动态模式的类 JSON 文档。这意味着,与关系数据库不同,MongoDB 在向数据库添加数据之前不需要预定义的模式。 使用数据库时,拥有多个数据副本通常很有用。这在其中一个数据库服务器发生故障时提供了冗余,并且可以提高数据库的可用性和可扩展性,以及减少读取延迟。跨多个独立数据库同步数据的做法称为复制。在 MongoDB 中,一组通过复制维护相同数据集的服务器称为副本集。 本教程简要概述了 MongoDB 中的复制工作原理,并概述了如何配置和启动具有三个成员的副本集。在此示例配置中,副本集的每个成员将是在单独的 Ubuntu 20.04 服务器上运行的不同 MongoDB 实例。 注意:请注意,本指南中概述的过程旨在演示如何快速设置和运行副本。完成本教程后,您将拥有一个正常运行的副本集,但它不会启用任何安全功能。不建议将此设置用于生产环境。 MongoDB 的社区版本带有两种身份验证方法,可以帮助确保您的数据库安全,密钥文件身份验证和x.509 身份验证。对于采用复制的生产部署,MongoDB 文档建议使用 x.509 身份验证,并将密钥文件描述为“最适合测试或开发环境”的“最低限度的安全形式”。但是,获取和配置 x.509 证书的过程伴随着许多必须根据具体情况做出的警告和决定,这超出了 DigitalOcean 教程的范围。 如果您计划使用您的副本集进行测试或开发,我们强烈建议您遵循我们的教程如何在 Ubuntu 20.04 上为 MongoDB 副本集配置密钥文件身份验证。 先决条件 要完成本指南,您需要: 三台服务器,每台运行 Ubuntu 20.04。所有这三个服务器都应该有一个非 root 管理用户和一个配置有 UFW 的防火墙。要进行设置,请按照我们针对 Ubuntu 20.04 的初始服务器设置指南进行操作。 MongoDB 安装在您的每台 Ubuntu 服务器上。为此,请遵循我们关于如何在 Ubuntu ..
Introduction If you’ve ever built a web app, there’s a good chance you’ve built a tabbed document interface at one point or another. Tabs allow you to break up complex interfaces into manageable subsections that a user can quickly switch between. Tabs are a common UI component and are important to understand how to implement. ..
介绍 您可以使用<script>标签将 Javascript 插入 HTML 内联或作为外部文件。本教程演示了这两种方法。 先决条件 HTML5 的一般知识。要全面了解 HTML5 标记语言,请浏览我们的系列“如何用 HTML 构建网站”。 Javascript 的一般知识。要全面了解 Javascript,请浏览我们的系列“如何在 Javascript 中编码”。 使用<script>标签将 Javascript 插入 HTML 以下是如何在 HTML 文档中插入外部 JavaScript 文件或一些内联 JavaScript。 要插入外部脚本文件: <script src=”doStuff.js”></script> 要插入内联脚本: <script> // your code here </script> 请记住,您插入 JavaScript 的位置会影响加载顺序。像 jQuery 本身这样的基本内容通常放在<head>部分中,而可以最后加载的内容(如跟踪脚本)通常可以在结束</body>标记之前。 type=”text/javascript” type=”text/javascript”是一个可选的声明,从 HTML5 开始就不需要了。您仍会在遗留代码中看到它,但您不必在自己的代码中使用它。 结论 <script> 是 HTML 中最常见和最重要的标签之一。 要更全面地了解 HTML5 标记语言,请浏览我们的系列,如何用 ..
作者选择FreeBSD 基金会作为Write for DOnations计划的一部分接受捐赠。 如何在 Go Usinggo test和testingPackage 中编写单元测试 介绍 单元测试是测试程序或包中特定代码段的功能。单元测试的工作是检查应用程序的正确性,它们是Go 编程语言的关键部分。 在本教程中,您将创建一个小程序,然后使用 Go 的testing包和go test命令对您的代码运行一系列测试。完成本教程后,您将拥有一个工作单元测试套件,其中包括基于表格的单元测试、覆盖测试、基准测试和文档化示例。 先决条件 要完成本教程,您需要具备以下条件: 熟悉 Go 编程语言。请访问我们的教程系列/电子书How To Code in Go,了解该语言的广泛介绍。 Go 1.11或更高版本安装在您的本地机器上。您可以按照这些说明在Linux、macOS和Windows上安装 Go 。在 macOS 上,您还可以使用 Homebrew 包管理器安装 Go。 注意:本教程使用 Go Modules,它是 Go 1.11 版本中引入的包管理系统。Go Modules 旨在取代 $GOPATH 并从 Go 1.13 版开始成为默认选项。要更全面地了解 Go Modules 和 $GOPATH 之间的差异,请考虑阅读 Go 核心团队的这篇官方博客文章。 本教程使用 ..
介绍 morgan是一个 Node.js 和 Express 中间件,用于记录 HTTP 请求和错误,并简化流程。在Node.js和受快递,中间件是可以访问的功能request和response生命周期方法,并next()继续在您的Express服务器的逻辑方法。 在本文中,您将探索如何在 Express 项目中实现摩根。 先决条件 要阅读本文,您需要: 建议对 Node.js 有一个大致的了解,但不是必需的。要了解有关 Node.js 的更多信息,请查看我们的如何在 Node.js 中编码系列。 Node.js 安装在本地,您可以按照如何安装 Node.js 和创建本地开发环境来完成。 步骤 1 – 设置项目 由于 Express.js 是一个 Node.js 框架,因此在继续之前,请确保您拥有来自Node.js的最新版本的 Node.js。 要将摩根包含在您的 Express 项目中,您需要将其安装为依赖项。 创建一个以express-morgan您的项目命名的新目录: mkdir express-morgan 切换到新目录: cd express-morgan 使用默认值初始化一个新的 Node 项目。这将包含package.json用于访问依赖项的文件: npm init -y 安装 morgan 作为依赖: npm install morgan ..
作者选择了公共利益软件 (SPI)来接受捐赠,作为Write for DOnations计划的一部分。 介绍 通常,基于 Linux 的服务器不会预装图形用户界面 (GUI)。每当您想在实例上运行 GUI 应用程序时,典型的解决方案是采用虚拟网络计算 (VNC)。不幸的是,VNC 是出了名的缓慢,默认情况下不安全,并且需要大量手动配置才能启动和运行。 相比之下,X2Go提供了一个可工作的“云桌面”,具有始终在线、可远程访问和易于扩展的计算系统的所有优势,以及非常快速的网络。与许多 VNC 解决方案相比,它也更灵敏、更安全。在本教程中,您将使用 X2Go 创建一个可以远程访问的 Debian 10 XFCE桌面环境。这个“云桌面”将包含与您在个人计算机上安装 Debian 10 和 XFCE 环境时获得的完全相同的实用程序。 本教程中描述的设置在以下情况下很有用: 您需要访问基于 Linux 的操作系统,并带有桌面环境,但无法将其安装在您的个人计算机上。 您在多个位置使用多台设备,并希望拥有一个具有相同工具、相同外观、相同文件和相同性能的一致工作环境。 您的 Internet 服务提供商为您提供的带宽非常少,但您需要访问数十或数百 GB 的数据。 长时间运行的作业会使您的本地计算机数小时或数天不可用。想象一下,你必须编译一个非常大的项目,在你的笔记本电脑上需要 8 个小时。在您的项目编译期间,您将无法观看电影或做任何非常耗费资源的事情。但是,如果您在服务器上运行此类作业,现在您的计算机可以自由执行其他任务。 您正在与一个团队合作,他们拥有一台可以访问以便在项目上进行协作的公共计算机,这对他们很有好处。 先决条件 在开始本教程之前,您需要: 具有 2GB 或更多 RAM 的 Debian 10 x64 实例。2GB 是最小的,如果您计划运行内存占用较大的应用程序,建议使用 4GB 或更多的服务器。如果您愿意,可以使用DigitalOcean Droplet。 ..
介绍 Let’s Encrypt 是一个证书颁发机构 (CA),它提供了一种简单的方法来获取和安装免费的TLS/SSL 证书,从而在 Web 服务器上启用加密的 HTTPS。它通过提供软件客户端 Certbot 来简化流程,该客户端尝试自动执行大部分(如果不是全部)所需步骤。目前,获取和安装证书的整个过程在 Apache 和 Nginx 上都是完全自动化的。 在本教程中,您将使用 Certbot 在 Ubuntu 20.04 上为 Nginx 获取免费的 SSL 证书,并将您的证书设置为自动续订。 本教程将使用单独的 Nginx 服务器配置文件而不是默认文件。我们建议为每个域创建新的 Nginx 服务器块文件,因为它有助于避免常见错误并将默认文件保留为后备配置。 先决条件 要学习本教程,您需要: 按照Ubuntu 20.04教程的初始服务器设置设置一个 Ubuntu 20.04 服务器,包括启用 sudo 的非root用户和防火墙。 一个注册的域名。本教程将example.com贯穿始终。你可以购买一个域名Namecheap,免费获得一个与Freenom,或使用你选择的域名注册商。 为您的服务器设置的以下两个 DNS 记录。如果您使用的是 DigitalOcean,请参阅我们的DNS 文档以了解有关如何添加它们的详细信息。 example.com指向您服务器的公共 IP 地址的 A 记录。 指向您服务器的公共 IP 地址的 A 记录。www.example.com ..
介绍 在本文中,您将学习如何在 Express 中提供静态文件。作为 Node.js 框架,Express 可简化服务器中的数据,并包括在客户端呈现静态文件,例如图像、HTML、CSS 和 JavaScript。 如果您不熟悉 Express,请查看我们的Express 简介以了解基础知识。 先决条件 要完成本教程,您将需要以下内容: 建议但不要求了解 Node.js。如果您想了解有关 Node.js 的更多信息,请查看如何在 Node.js 中编码系列。 由于 Express 是一个 Node.js 框架,因此在执行后续步骤之前,请确保您已从 Node.js 安装了Node.js。 步骤 1 — 设置 Express 首先,在终端中运行以下命令: 为您的项目创建一个名为 的新目录express-static-file-tutorial: mkdir express-static-file-tutorial 切换到新目录: cd express-static-file-tutorial 使用默认值初始化一个新的 Node 项目。这将设置一个package.json文件来访问您的依赖项: npm init -y 创建您的入口文件,index.js. 这是您将存储 Express 服务器的位置: touch index.js 安装 Express 作为依赖项: ..
作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 在某些时候,您可能会发现自己所处的网络不安全或防火墙过于严格,您需要确保没有人在监视您的流量。一种解决方案是使用 VPN,但许多 VPN 需要在您的计算机上安装特殊的客户端软件,您可能无权安装这些软件。但是,如果您只需要确保您的网页浏览安全,那么有一个快速、免费且有用的替代方案:SOCKS 5 代理隧道。 SOCKS 代理是一个 SSH 加密隧道,在其中配置的应用程序向下转发其流量,然后在服务器端,代理将流量转发到一般 Internet。与 VPN 不同,SOCKS 代理必须在客户端机器上逐个应用程序进行配置,但只要应用程序能够使用 SOCKS 代理,您就可以在没有任何专业客户端软件的情况下设置应用程序。在服务器端,您只需要配置 SSH。 在本教程中,您将使用运行 Ubuntu 20.04 的服务器(尽管您可以通过 SSH 访问任何 Linux 发行版),并使用 Firefox Web 浏览器作为客户端应用程序。在本教程结束时,您将能够通过加密的 SSH 隧道安全地浏览网站。 先决条件 运行 Ubuntu 20.04(其他发行版也可以)的 Linux 服务器,具有sudo用户和 SSH 访问权限。要进行设置,您可以按照我们的 Ubuntu 20.04 初始服务器设置教程进行操作。去这里在 DigitalOcean Droplet 上建立你的隧道。 使用 SOCKS 代理配置的应用程序,例如Firefox Web 浏览器。 对于 ..