内容交付网络 (CDN) 是一组地理分布的服务器,经过优化以向最终用户交付静态内容。这种静态内容几乎可以是任何类型的数据,但 CDN 最常用于传送网页及其相关文件、流视频和音频以及大型软件包。 CDN 由位于不同位置的多个存在点 (PoP) 组成,每个存在点由多个边缘服务器组成,这些服务器 缓存来自源或主机服务器的资产。CDN 将用户请求路由到最近的边缘服务器,然后边缘服务器为用户提供适当的内容。但是,如果边缘服务器没有缓存资产或缓存资产已过期,CDN 将从附近的另一个 CDN 边缘服务器或您的源服务器获取并缓存最新版本。 这允许地理上分散的用户最大限度地减少接收静态内容所需的跳数,直接从附近边缘的缓存中获取内容。结果是显着减少了延迟和数据包丢失,缩短了页面加载时间,并大大减少了源基础架构的负载。 有关 CDN 的更多资源,请访问: 使用 CDN 加速静态内容交付 如何使用 DigitalOcean Spaces CDN 加速 WordPress 资产交付 我们的缓存相关教程、问题和其他教育资源的完整列表可以在我们的CDN 标记页面�..
Category : 教程系列
介绍 在本指南中,您将通过 DigitalOcean 的管理面板创建一个 Ubuntu 20.04 服务器并将其配置为使用您的 SSH 密钥。设置好服务器后,您可以使用它来部署应用程序和网站。 本教程是云课程简介 的一部分,它指导用户完成将应用程序安全部署到云的所有步骤。如果您正在搜索有关 DigitalOcean Droplet 的一般文档,请访问我们的产品文档如何从 DigitalOcean 控制面板创建 Droplet。 先决条件 在开始本指南之前,您需要具备以下条件: 对命令行有一定的了解。如果您想了解或复习命令行,可以访问我们的Linux 命令行入门。 SSH 密钥以启用与您的服务器的安全连接。要通过命令行设置 SSH 密钥,您可以按照我们的指南如何在 Ubuntu 20.04 上设置 SSH 密钥。 用于设置 DigitalOcean Droplet 的信用卡或 PayPal 帐户。请注意,最小的 Droplet 产品可用于本教程,其每月订阅费用可在我们的定价页面上找到。用户可以随时取消他们的 Droplet 服务。 注意:符合条件的学生可以通过GitHub Student Developer Pack注册获得 50 美元的 Digital Ocean 免费积分。 步骤 1 — 创建 DigitalOcean 帐户 ..
我们介绍了使用CSS 进行剪辑时的clip-path属性的使用,因此我们现在讨论遮罩是很自然的。与剪裁相反,在剪裁中,图像或元素的一部分要么完全不可见,要么完全可见,通过遮罩,我们可以隐藏或显示具有不同不透明度级别的图像部分。 CSS 中的遮罩是使用mask-image属性完成的,并且必须提供图像作为遮罩。图像蒙版中 100% 黑色的任何内容都完全可见,任何 100% 透明的内容都将被完全隐藏,中间的任何内容都会部分遮住图像。CSS 中的线性和径向渐变是生成的图像,因此它们可以用作图像蒙版。使用遮罩元素的SVG也可以用作图像遮罩。让我们用具体的例子来看看图像蒙版的 3 种可能性: 使用渐变遮罩 让我们首先使用一个从透明到黑色的简单线性渐变。第一张图像是我们的默认起始图像,第二张图像应用了我们的线性渐变作为掩码图像值: 这是此处使用的 CSS 规则: .mask1 { -webkit-mask-image: linear-gradient(to bottom, transparent 25%, black 75%); mask-image: linear-gradient(to bottom, transparent 25%, black 75%); } 下面是两个有趣的效果示例,可以通过使用渐变进行遮罩来实现这些效果: 以及这两个渐变蒙版的 CSS 规则: .mask2 { -webkit-mask-image: radial-gradient(circle at 50% 60%, black 50%, rgba(0, 0, 0, 0.6) 50%); mask-image: radial-gradient(circle at 50% ..
介绍 Terraform输出用于从项目状态中提取有关基础设施资源的信息。使用 Terraform 使用的 Hashicorp 配置语言 (HCL) 的其他功能,可以查询资源信息并将其转换为更复杂的数据结构,例如列表和地图。输出对于向外部软件提供信息很有用,这些软件可以对创建的基础设施资源进行操作。 在本教程中,您将通过创建部署 Droplet 的简单基础架构来了解 Terraform 输出语法及其参数。您还将通过将输出转换为 JSON 以编程方式解析输出。 先决条件 DigitalOcean 个人访问令牌,您可以通过 DigitalOcean 控制面板创建。可以在此链接中找到执行此操作的说明:如何生成个人访问令牌。 Terraform 安装在您的本地计算机上,并使用 DigitalOcean 提供商设置了一个项目。完成步骤1和步骤2中的如何使用Terraform与DigitalOcean教程,并确保该项目命名文件夹terraform-outputs,而不是loadbalance。在步骤 2 中,不要包含pvt_key变量和 SSH 密钥资源。 熟悉 HCL 数据类型和循环。有关更多信息,请参阅如何使用 Terraform 变量、依赖项和条件提高灵活性教程。 注意:本教程已经专门使用 Terraform 进行了测试0.13。 定义输出 在本节中,您将声明一个 Droplet,将其部署到云中,并通过定义一个将显示 Droplet 的 IP 地址的输出来了解输出。 假设您在terraform-outputs目录中,创建并打开droplets.tf文件进行编辑: nano droplets.tf 添加以下 Droplet 资源和输出定义: terraform-outputs/droplets.tf resource “digitalocean_droplet” “web” { image ..
介绍 防止应用程序内存不足错误的一种方法是向服务器添加一些交换空间。在本指南中,我们将介绍如何将交换文件添加到 Ubuntu 20.04 服务器。 警告:虽然通常建议对使用传统旋转硬盘驱动器的系统进行交换,但将交换放置在 SSD 上可能会随着时间的推移导致硬件退化问题。因此,我们不建议在 DigitalOcean 或任何其他使用 SSD 存储的提供商上启用交换。 什么是掉期? 交换是硬盘驱动器存储的一部分,已为操作系统留出,用于临时存储其无法再保存在 RAM 中的数据。这使您可以增加服务器可以保留在其工作内存中的信息量,但有一些注意事项。硬盘驱动器上的交换空间将主要在 RAM 中不再有足够空间来保存正在使用的应用程序数据时使用。 写入磁盘的信息将比保存在 RAM 中的信息慢得多,但操作系统更愿意继续在内存中运行应用程序数据,并为旧数据使用交换。总体而言,当系统 RAM 耗尽时,将交换空间作为后备可能是一个很好的安全网,可以防止在具有非 SSD 存储可用的系统上出现内存不足异常。 步骤 1 – 检查系统的交换信息 在开始之前,我们可以检查系统是否已经有一些可用的交换空间。可以有多个交换文件或交换分区,但通常一个就足够了。 我们可以通过键入以下内容来查看系统是否有任何配置的交换: sudo swapon –show 如果你没有得到任何输出,这意味着你的系统当前没有可用的交换空间。 您可以使用该free实用程序验证没有活动交换: free -h Output total used free shared buff/cache available Mem: 981Mi 122Mi 647Mi 0.0Ki 211Mi 714Mi Swap: 0B 0B ..
介绍 现代 JavaScript 库(如 React.js 和 Vue.js)的出现使前端 Web 开发变得更好。这些库附带的功能包括 SPA(单页应用程序),它是在网页中动态加载内容,而无需完全重新加载到浏览器。 大多数单页应用程序背后的概念是客户端呈现。在客户端渲染中,大部分内容使用 JavaScript 在浏览器中渲染;在页面加载时,在 JavaScript 完全下载并呈现网站的其余部分之前,内容最初不会加载。 客户端渲染是一个相对较新的概念,它的使用需要权衡。一个显着的负面影响是,由于在使用 JavaScript 更新页面之前不会完全呈现内容,因此网站的 SEO(搜索引擎优化)将受到影响,因为搜索引擎几乎没有任何数据可供抓取。 另一方面,服务器端呈现是在浏览器上呈现 HTML 页面的传统方式。在较旧的服务器端呈现应用程序中,Web 应用程序是使用服务器端语言(例如 PHP)构建的。当浏览器请求网页时,远程服务器会添加(动态)内容并提供填充的 HTML 页面。 正如客户端渲染的缺点一样,服务器端渲染会使浏览器过于频繁地发送服务器请求,并为类似的数据执行重复的整页重新加载。有一些 JavaScript 框架可以最初使用 SSR(服务器端渲染)解决方案加载网页,然后使用框架来处理进一步的动态路由并仅获取必要的数据。生成的应用程序称为通用应用程序。 总之,通用应用程序用于描述可以在客户端和服务器端执行的 JavaScript 代码。在本文中,我们将使用 Nuxt.js 构建一个通用食谱应用程序。 Nuxt.js 是用于开发通用 Vue.js 应用程序的更高级别的框架。它的创建受到 React 的Next.js 的启发,它有助于抽象设置服务器端呈现的 Vue.js 应用程序时出现的困难(服务器配置和客户端代码分发)。Nuxt.js 还附带有助于客户端和服务器端之间开发的功能,例如异步数据、中间件、布局等。 注意:我们可以将我们构建的应用程序称为服务端渲染(SSR),因为在我们创建单页应用程序时,Vue.js 默认已经实现了客户端渲染。该应用程序实际上是一个通用应用程序。 在本文中,我们将看到如何使用 Django 和 Nuxt.js 创建通用应用程序。Django 将处理后端操作并使用 DRF(Django Rest ..
介绍 FreeBSD是一种安全、高性能的操作系统,适用于各种服务器角色。在本指南中,我们将介绍有关如何开始使用 FreeBSD 服务器的一些基本信息。 本指南旨在为 FreeBSD 服务器提供一般设置,但请注意不同版本的 FreeBSD 可能具有不同的功能。根据您的服务器运行的 FreeBSD 版本,此处提供的说明可能无法按描述工作。 使用 SSH 登录 开始配置 FreeBSD 服务器所需的第一步是登录。 在 DigitalOcean 上,您必须在创建 FreeBSD 服务器时提供公共 SSH 密钥。此密钥已添加到服务器实例,允许您使用关联的私钥从本地计算机安全登录。要了解有关如何在 DigitalOcean 上的 FreeBSD 中使用 SSH 密钥的更多信息,请遵循本指南。 要登录到您的服务器,您需要知道服务器的公共 IP 地址。对于 DigitalOcean Droplets,您可以在控制面板中找到此信息。通过 DigitalOcean 创建的 FreeBSD 服务器上可用的主要用户帐户称为freebsd。此用户帐户配置有sudo权限,允许您完成管理任务。 要登录到您的 FreeBSD 服务器,请使用该ssh命令。您需要指定freebsd用户帐户以及服务器的公共 IP 地址: ssh freebsd@your_server_ip 您应该会自动进行身份验证并登录。您将进入命令行界面。 将默认 Shell 更改为 tcsh(可选) 如果您登录到运行 FreeBSD 11 的 ..
软件组件是包含一组相互关联的功能的 Web 服务、软件包或模块。组件通常用于前端框架,如 React 和 Svelte。 在基于组件的软件工程中,组件用于分离应用程序中的不同功能,支持这种工程形式的关注点分离和可重用性方法。 要了解有关组件的更多信息,请按照我们的教程在 React 项目中实现组件,如何在 React 中实现模�..
We can convert numbers to strings using the str() method. We’ll pass either a number or a variable into the parentheses of the method and then that numeric value will be converted into a string value. To convert the integer 12 to a string value, you can pass 12 into the str() method: str(12) Output’12’ ..
作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。 介绍 即使云服务越来越流行,运行原生应用程序的需求仍然存在。 通过使用noVNC和TigerVNC,您可以在Docker容器内运行本机应用程序并使用 Web 浏览器远程访问它们。此外,您可以在具有比本地可用资源更多的系统资源的服务器上运行您的应用程序,这可以在运行大型应用程序时提供更高的灵活性。 在本教程中,您将使用 Docker容器化电子邮件客户端Mozilla Thunderbird。之后,您将保护它并使用Caddy Web 服务器提供远程访问。 完成后,您只需使用网络浏览器即可从任何设备访问 Thunderbird。或者,您还可以使用WebDAV从本地访问文件。您还将拥有一个可以在任何地方运行的完全独立的 Docker 映像。 先决条件 在开始本指南之前,您需要具备以下条件: 一台至少有 2GB RAM 和 4GB 磁盘空间的 Debian 10 服务器。 具有sudo特权的非 root 用户。 在您的服务器上设置 Docker。您可以按照如何在 Debian 10 上安装和使用 Docker 进行操作。 第 1 步 – 创建supervisord配置 现在您的服务器正在运行并安装了 Docker,您可以开始配置应用程序的容器了。由于您的容器由多个组件组成,您需要使用进程管理器来启动和监控它们。在这里,您将使用supervisord. supervisord是一个用 Python 编写的进程管理器,通常用于编排复杂的容器。 首先,创建并输入一个thunderbird为您的容器命名的目录: mkdir ~/thunderbird cd ~/thunderbird 现在创建并打开一个名为supervisord.confusingnano或您喜欢的编辑器的文件: nano ..