该系列的一部分: 如何编写 Ansible Playbooks Ansible 是一种现代配置管理工具,不需要在远程节点上使用代理软件,仅使用 SSH 和 Python 在托管服务器上进行通信和执行命令。本系列将带您了解可用于编写服务器自动化剧本的主要 Ansible 功能。最后,我们将看到一个实际示例,说明如何创建剧本以自动设置远程 Nginx Web 服务器并向其部署静态 HTML 网站。 在自动化服务器设置时,有时您需要使用不同的值重复执行相同的任务。例如,您可能需要更改多个文件的权限,或创建多个用户。为避免在您的剧本文件中多次重复该任务,最好改用循环。 在编程中,循环允许您重复指令,通常直到满足特定条件。Ansible 提供了不同的循环方法,loop关键字是长期兼容性的最推荐选项。 以下示例在该/tmp位置创建三个不同的文件。它file在使用三个不同值实现循环的任务中使用模块。 playbook-06.yml在您的ansible-practice目录中创建一个名为的新文件: nano ~/ansible-practice/playbook-06.yml 然后将以下行添加到新的剧本文件中: ~/ansible-practice/playbook-06.yml — – hosts: all tasks: – name: creates users files file: path: /tmp/ansible-{{ item }} state: touch loop: – sammy – erika – brian 完成后保存并关闭文件。 然后,ansible-playbook使用与前面示例相同的连接参数运行。同样,我们使用了一个名为 的清单文件inventory和一个名为 的用户sammy,但您应该相应地更改这些值: ansible-playbook ..
Category : 教程系列
介绍 一个虚拟专用网(VPN)可以让你,如果你是在专用网络上穿越不受信任的网络。当您连接到不受信任的网络(例如酒店或咖啡店的 WiFi)时,它可以让您自由地通过智能手机或笔记本电脑安全可靠地访问互联网。 与HTTPS 连接结合使用时,此设置可让您确保无线登录和交易的安全。您可以绕过地域限制和审查,并保护您的位置和任何来自不受信任网络的未加密 HTTP 流量。 OpenVPN是一个功能齐全的开源传输层安全 (TLS) VPN 解决方案,可适应各种配置。在本教程中,您将在 Ubuntu 20.04 服务器上设置 OpenVPN,然后将其配置为可从客户端计算机访问。 注意:如果您打算在 DigitalOcean Droplet 上设置 OpenVPN 服务器,请注意,与许多托管服务提供商一样,我们会对超额带宽收费。因此,请注意您的服务器处理的流量。 有关更多信息,请参阅此页面。 先决条件 要学习本教程,您需要: 一台 Ubuntu 20.04 服务器,具有 sudo 非 root 用户并启用了防火墙。要进行设置,您可以按照我们使用 Ubuntu 20.04教程进行的初始服务器设置。我们将在本指南中将其称为OpenVPN 服务器。 一个单独的 Ubuntu 20.04 服务器设置为私有证书颁发机构 (CA),我们将在本指南中将其称为CA 服务器。在此服务器上执行初始服务器设置指南中的步骤后,您可以按照我们关于如何在 Ubuntu 20.04 上设置和配置证书颁发机构 (CA)的指南的步骤 1 到 3来完成该操作。 注意:虽然在技术上可以使用您的 OpenVPN 服务器或您的本地机器作为您的 CA,但不建议这样做,因为它会使您的 VPN 面临一些安全漏洞。根据官方 OpenVPN ..
作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。 介绍 ClickHouse是Yandex为OLAP和大数据用例创建的开源、面向列的分析数据库。ClickHouse 对实时查询处理的支持使其适用于需要亚秒级分析结果的应用程序。ClickHouse 的查询语言是SQL 的一种方言,它支持强大的声明式查询功能,同时为最终用户提供熟悉度和更小的学习曲线。 面向列的数据库将记录存储在按列而不是行分组的块中。通过不为查询中不存在的列加载数据,面向列的数据库在完成查询时读取数据的时间更少。因此,对于某些工作负载(例如 OLAP),这些数据库可以比传统的基于行的系统更快地计算和返回结果。 在线分析处理(OLAP) 系统允许组织大量数据并执行复杂查询。它们能够管理 PB 级数据并快速返回查询结果。通过这种方式,OLAP 可用于数据科学和业务分析等领域的工作。 在本教程中,您将在您的机器上安装 ClickHouse 数据库服务器和客户端。您将使用 DBMS 执行典型任务,并可选择启用来自另一台服务器的远程访问,以便您能够从另一台机器连接到数据库。然后,您将通过建模和查询示例网站访问数据来测试 ClickHouse。 先决条件 一台sudo启用了非 root 用户和防火墙设置的Ubuntu 20.04 服务器。服务器应至少有 2GB 的 RAM。您可以按照初始服务器设置教程创建用户并设置防火墙。 (可选)具有sudo启用的非 root 用户和防火墙设置的辅助 Ubuntu 20.04 服务器。 第 1 步 – 安装 ClickHouse 在本节中,您将使用apt. 首先,运行以下命令通过 SSH 连接到您的服务器: ssh sammy@your_server_ip Yandex 维护一个 APT 存储库,其中包含最新版本的 ClickHouse。添加存储库的 GPG 密钥,以便您能够安全地下载经过验证的 ..
介绍 Leaflet 支持弹出窗口。单击地图上的标记或指定区域时,将出现包含文本的弹出窗口。这提供了一种在地图上显示附加信息的方法。 注意:这是关于使用 Angular 和 Leaflet 的 4 部分系列的第 3 部分。 在本教程中,您将学习如何使用管理弹出逻辑的服务向地图添加弹出窗口。 先决条件 要完成本教程,您需要: 本教程直接建立在前面部分中的安装和步骤的基础上。 第 1 步 – 创建弹出服务 此时,您应该在 Angular 应用程序中有一个 Leaflet 的工作实现。 使用终端窗口导航到项目目录。然后,运行以下命令以生成新服务: npx @angular/cli generate service popup –skip-tests 这将创建一个新文件:popup.service.ts. 接下来,您将在您的app.module.ts. app.module.ts在代码编辑器中打开并进行以下更改: src/app/app.module.ts import { NgModule } from ‘@angular/core’; import { BrowserModule } from ‘@angular/platform-browser’; import { HttpClientModule } from ‘@angular/common/http’; ..
介绍 传单支持形状。通过提供包含边界数据的 GeoJSON 文件,您可以在地图上指示县、州和国家。 注意:这是关于使用 Angular 和 Leaflet 的 4 部分系列的第 4 部分。 在本教程中,您将学习如何渲染美利坚合众国大陆各州的形状。 先决条件 要完成本教程,您需要: 本教程直接建立在前面部分中的安装和步骤的基础上。 第 1 步 – 下载 GeoJSON 数据 本教程将为美国各州的轮廓绘制GeoJSON数据。 访问Eric Celeste 的美国 GeoJSON 和 KML 数据并下载 5m GeoJSON 文件 ( gz_2010_us_040_00_5m.json)。 将此文件保存在您的/assets/data目录中。 第 2 步 – 创建形状服务 此时,您应该在 Angular 应用程序中有一个 Leaflet 的工作实现。 使用终端窗口导航到项目目录。然后,运行以下命令以生成新服务: npx @angular/cli generate service shape –skip-tests ..
作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。 介绍 随着开发人员工具迁移到云端,云 IDE(集成开发环境)平台的创建和采用正在增长。云 IDE 允许开发团队之间实时协作,在统一的开发环境中工作,最大限度地减少不兼容性并提高生产力。可以通过 Web 浏览器访问,各种类型的现代设备都可以使用云 IDE。 code-server是在远程服务器上运行的Microsoft Visual Studio Code,可直接从浏览器访问。Visual Studio Code 是一个现代代码编辑器,具有集成的 Git 支持、代码调试器、智能自动完成以及可自定义和可扩展的功能。这意味着您可以使用运行不同操作系统的各种设备,并始终拥有一致的开发环境。 在本教程中,您将在 Debian 10 机器上设置代码服务器云 IDE 平台并将其公开在您的域中,并使用免费的Let’s Encrypt TLS 证书进行保护。最后,您将在 Debian 10 服务器上运行 Microsoft Visual Studio Code,可在您的域中使用并使用密码进行保护。 先决条件 一台运行 Debian 10 的服务器,具有至少 2GB RAM、root 访问权限和 sudo 非 root 帐户。您可以按照此初始服务器设置指南进行设置。 您的服务器上安装了 Nginx。有关如何执行此操作的指南,请完成如何在 Debian 10 上安装 Nginx 的步骤 ..
介绍 Visual Studio Code,也称为VS Code,是一个免费的源代码编辑器 – 或集成开发环境 (IDE) – 适用于所有主要操作系统。 VS Code 拥有适用于多种编程语言的大量扩展,可以进行定制以满足各种开发需求。在本指南中,您将学习如何设置 Visual Studio Code 以处理 PHP 项目。 先决条件 要遵循本指南,您需要为您的操作系统下载并安装适当版本的Visual Studio Code。 本指南中的说明已在 Ubuntu 20.04 台式计算机上进行了验证,但它们应该可以在 VS Code 支持的所有操作系统中无缝运行。但请注意,为了与 MacOS 系统兼容,可能需要稍微修改键盘快捷键。 步骤 1 — 安装 VS Code PHP 扩展以获得额外支持 安装后,VS Code 就已经能够识别 PHP 代码并帮助进行语法高亮、基本调试和代码缩进。这些功能适用于快速编辑或使用单个 PHP 脚本时。但是,如果没有更多关于代码的上下文以及每个文件如何在更大的项目中交互和集成,则在更大的项目中工作可能会变得困难。 有许多 VS Code 扩展可以帮助您在处理 PHP 项目时提高工作效率。在本指南中,我们将安装和设置PHP Intelephense,这是一个流行的 VS ..
作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。 介绍 Kubernetes Ingress为您提供了一种灵活的方式,将流量从集群外路由到内部 Kubernetes 服务。入口资源是 Kubernetes 中的对象,用于定义将 HTTP 和 HTTPS 流量路由到服务的规则。为了让这些工作,入口控制器必须存在;它的作用是通过接受流量(最有可能通过负载均衡器)并将其路由到适当的服务来实施规则。大多数 Ingress Controller 仅对所有 Ingress 使用一个全局负载均衡器,这比为您希望公开的每个服务创建一个负载均衡器更有效。 Helm是用于管理 Kubernetes 的包管理器。将 Helm Charts 与 Kubernetes 结合使用提供了可配置性和生命周期管理,以更新、回滚和删除 Kubernetes 应用程序。 在本指南中,您将使用 Helm设置由 Kubernetes 维护的Nginx 入口控制器。然后,您将创建一个入口资源以将流量从您的域路由到示例 Hello World 后端服务。设置 Ingress 后,您将在集群中安装Cert Manager,以便能够自动配置 Let’s Encrypt TLS 证书以保护您的 Ingress。 先决条件 一个 DigitalOcean Kubernetes 1.16+ 集群,您的连接配置被配置为kubectl默认配置。创建集群时kubectl显示的“连接到集群”步骤下显示了有关如何配置的说明。要了解如何在 DigitalOcean 上创建 Kubernetes 集群,请参阅Kubernetes ..
作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。 介绍 沙盒是一种计算机安全技术,专注于将程序或进程与在正常操作期间不需要与之交互的系统部分隔离。当一个新程序启动时,它具有运行它的用户的所有能力。这些能力通常比程序执行其功能所需的要多得多。当不良行为者操纵程序以访问其某些未使用的功能来执行程序通常不会执行的操作时,这可能会导致安全问题。 沙盒的目的是准确确定程序需要哪些能力和资源,然后阻止其他一切。 几乎所有主要的 Linux 发行版都使用systemd工具的系统管理套件来启动、停止和管理程序和进程。它有许多沙盒选项来限制它启动的进程访问主机系统的方式,使其更加安全。 本教程的目的不是尽可能创建最严格的沙箱环境,而是使用推荐且易于启用的设置来使您的系统更加安全。 在本教程中,您将通过实际演示,了解如何在 Ubuntu 20.04 上使用 systemd 的沙箱技术,以实现高效的工作流程来实施和测试这些技术。使用这些技术可以使在使用 systemd 的 Linux 系统上运行的任何进程更加安全。 先决条件 您将需要以下内容才能开始本指南: 一个 Ubuntu 20.04 系统。 具有 sudo 权限的非 root 用户。有关如何在 Ubuntu 20.04 上执行此操作的信息,请按照Ubuntu 20.04的初始服务器设置进行操作。 熟悉使用 systemd 管理进程。请参阅Systemd Essentials: Working with Services, Units 和 Journal指南以了解基础知识。 对 systemd 单元文件的基本了解会有所帮助。有关更多信息,请参阅了解 Systemd 单位和单位文件指南。 第 1 步 — 安装 ..
CSS text-shadow属性类似于box-shadow属性,但阴影应用于每个字母而不是元素的边界: text-shadow: 2px 2px 1px rgba(0,0,0,0.4); 值按以下顺序排列:offset-x offset-y blur-radius color. 您还可以定义多个阴影: text-shadow: 45px 25px 4px rgb(25,93,229), 25px 15px 1px rgb(25,93,229); 请注意,与box-shadow属性一样,您可以定义多个逗号分隔的阴影。box-shadow但是,与 with 不同的是,您不能定义展开值或使用inset关键字进行文本阴影。有多种方法可以创建看起来像插入阴影的文本阴影,但阴影本身实际上不会被插入。 结果 这是上述代码段中 2 个文本阴影的结果: 我只是世界上一些带有基本阴影的文字。 我只是世界上有两个阴影�..