本教程的先前版本由Brian Boucheron编写 介绍 MariaDB是一个开源关系数据库管理系统,通常用作 MySQL 的替代品,作为流行的LAMP(Linux、Apache、MySQL、PHP/Python/Perl)堆栈的数据库部分。它旨在成为 MySQL 的替代品。 本快速入门教程介绍了如何在 Ubuntu 20.04 服务器上安装 MariaDB 并使用安全的初始配置对其进行设置。它还将介绍如何为密码访问设置额外的管理帐户。 先决条件 要学习本教程,您需要一台运行 Ubuntu 20.04 的服务器。此服务器应具有非 root 管理用户和使用 UFW 配置的防火墙。按照我们针对 Ubuntu 20.04 的初始服务器设置指南进行设置。 第 1 步 – 安装 MariaDB 在安装 MariaDB 之前,使用以下命令更新服务器上的包索引apt: sudo apt update 然后安装包: sudo apt install mariadb-server 从默认存储库安装时,MariaDB 将自动开始运行。要对此进行测试,请检查其状态。 sudo systemctl status mariadb 您将收到类似于以下内容的输出: Output● mariadb.service – MariaDB 10.3.22 ..
Category : 教程系列
介绍 为网站配置服务器时,您可能需要实施一些常见的条件操作。例如,也许某些文件应该被用户的浏览器缓存的时间比其他文件长,或者网站的某些部分应该只允许通过安全连接(例如需要用户密码的任何内容),而网站的其他部分则不吨。 另一个简单、常见的例子是确保当一个新网页代替旧网页发布时,所有旧地址都将重定向到正确的位置。这很有用,因为这意味着旧链接和书签不会停止工作,并且还保留了 Google 的缓存。 Nginx 的 map 模块允许您在 Nginx 的配置文件中创建变量,其值是有条件的——也就是说,它们依赖于其他变量的值。在本指南中,我们将了解如何使用 Nginx 的地图模块实现两个示例:如何设置从旧网站 URL 到新网站的重定向列表以及如何创建国家/地区许可名单以控制您网站的流量。 先决条件 要学习本教程,您需要: 使用此初始服务器设置教程设置的一台 Ubuntu 16.04 服务器,包括 sudo 非 root 用户。 按照如何在 Ubuntu 16.04 上安装 Nginx 教程,在您的服务器上安装 Nginx。 步骤 1 — 创建和测试示例网页 首先,我们将创建一个代表新发布网站的测试文件。我们将使用此文件来测试我们的配置。 让我们index.html在默认的 Nginx 网站目录中创建一个简单的页面。这个文件只有纯文本描述里面的内容:Home。 sudo sh -c ‘echo “Home” > /var/www/html/index.html’ 有了这个测试文件,接下来我们将检查它是否正确地使用curl. 我们不需要index.html为此命令指定,因为如果没有提供确切的文件名,则默认情况下会提供该文件。 curl http://localhost/ 作为回应,您应该看到一个单词Home,如下所示: Nginx 响应 Home ..
介绍 计算机科学领域有许多数理逻辑基础。如果您熟悉逻辑,就会知道它涉及真值表、布尔代数和比较以确定相等或不同。 JavaScript 编程语言使用运算符来评估有助于在编程中控制流的语句。 在本教程中,我们将介绍逻辑运算符。这些通常与条件语句中使用,以及if,else和else if关键字,以及三元运算符。如果您有兴趣首先了解有关条件语句的更多信息,请参阅如何在 JavaScript 中编写条件语句。 比较运算符 在 JavaScript 中,您可以使用许多比较运算符来评估给定的值是不同还是相等,以及某个值是否大于或小于另一个值。通常,这些运算符与变量中的存储值一起使用。 比较运算符都返回一个布尔(逻辑)值的true或false。 下表总结了 JavaScript 中可用的比较运算符。 操作员 这是什么意思 == 等于 != 不等于 === 严格等于没有类型转换 ! == 严格不等于没有类型转换 > 比…更棒 >= 大于或等于 < 少于 <= 小于或等于 让我们详细介绍每个运算符。 平等 相等运算符测量运算符两侧的值是否相等。 让我们考虑以下几点: let x = 3; x == 3; 因为3等价于3,接收到的输出将是 的布尔值true。 Outputtrue 如果我们改为测试是否x等于另一个整数,我们将收到表明该语句被验证为假的输出。 let x = 3; x ..
作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 TypeScript是JavaScript语言的扩展,它使用 JavaScript 的运行时和编译时类型检查器。这种组合允许开发人员使用完整的 JavaScript 生态系统和语言功能,同时还可以在其上添加可选的静态类型检查、枚举、类和接口。 尽管TypeScript 中预制的基本类型将涵盖许多用例,但基于这些基本类型创建您自己的自定义类型将允许您确保类型检查器验证特定于您的项目的数据结构。这将减少项目中出现错误的机会,同时还允许更好地记录整个代码中使用的数据结构。 本教程将向您展示如何在 TypeScript 中使用自定义类型,如何将这些类型与联合和交集组合在一起,以及如何使用实用程序类型为自定义类型增加灵活性。它将引导您完成不同的代码示例,您可以在自己的 TypeScript 环境或TypeScript Playground(一个允许您直接在浏览器中编写 TypeScript 的在线环境)中遵循这些示例。 先决条件 要学习本教程,您需要: 您可以在其中执行 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 编译器 ..
介绍 WebSocket 是允许在服务器和客户端之间进行全双工通信的 Internet 协议。该协议超越了典型的 HTTP 请求和响应范式。使用 WebSockets,服务器可以在客户端不发起请求的情况下向客户端发送数据,从而允许一些非常有趣的应用程序。 在本教程中,您将构建一个实时文档协作应用程序(类似于 Google Docs)。我们将使用Socket.IO Node.js 服务器框架和Angular 7来实现这一点。 您可以在 GitHub 上找到此示例项目的完整源代码。 先决条件 要完成本教程,您需要: Node.js 安装在本地,您可以按照如何安装 Node.js 和创建本地开发环境来完成。 支持 WebSocket 的现代 Web 浏览器。 本教程最初是在由 Node.js v8.11.4、npm v6.4.1 和 Angular v7.0.4 组成的环境中编写的。 本教程已通过 Node v14.6.0、npm v6.14.7、Angular v10.0.5 和 Socket.IO v2.3.0 验证。 步骤 1 — 设置项目目录并创建套接字服务器 首先,打开您的终端并创建一个新的项目目录,其中将包含我们的服务器和客户端代码: mkdir socket-example 接下来,切换到项目目录: cd socket-example ..
作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 Let’s Encrypt是一个证书颁发机构 (CA),为传输层安全 (TLS) 加密提供免费证书。它通过提供软件客户端Certbot简化了证书的创建、验证、签名、安装和更新过程。 在本教程中,您将在运行Nginx作为 Web 服务器的 CentOS 8 服务器上设置来自Let’s Encrypt的 TLS/SSL 证书。此外,您将使用cron作业自动执行证书续订过程。 先决条件 为了完成本指南,您需要: 按照CentOS 8 初始服务器设置指南设置一台 CentOS 8 服务器,包括具有sudo特权的非 root 用户和防火墙。 Nginx 安装在 CentOS 8 服务器上,并配置了服务器块。您可以按照我们的教程如何在 CentOS 8 上安装 Nginx来了解如何进行设置。 完全注册的域名。本教程将your_domain始终用作示例。你可以购买一个域名Namecheap,免费获得一个在Freenom,或使用你选择的域名注册商。 为您的服务器设置的以下两个 DNS 记录。您可以按照DigitalOcean DNS的介绍了解有关如何添加它们的详细信息。 your_domain指向您服务器的公共 IP 地址的 A 记录。 指向您服务器的公共 IP 地址的 A 记录。www.your_domain 步骤 1 ..
介绍 JSON Web Tokens (JWTs) 支持授权和信息交换。 一个常见的用例是允许客户端在登录后保留他们的会话信息。通过在本地存储会话信息并在发出请求时将其传递给服务器进行身份验证,服务器可以相信客户端是注册用户。 在本文中,您将了解 JWT 在使用 Node.js 和 vanilla JavaScript 的服务器-客户端关系中的应用。 先决条件 要跟随本文,您需要在您的机器上安装以下内容: Node.js 安装在本地,您可以按照如何安装 Node.js 和创建本地开发环境来完成。 第 1 步 – 生成令牌 jsonwebtoken 是 JSON Web 令牌的实现。 您可以通过在终端中运行以下命令将其添加到您的 JavaScript 项目中: npm install jsonwebtoken 并将其导入到您的文件中,如下所示: const jwt = require(‘jsonwebtoken’); 要签署令牌,您需要有 3 条信息: 令牌秘密 要在令牌中散列的数据 令牌过期时间 该令牌密钥是用于加密和解密数据长随机数序列。 要生成这个秘密,一种选择是使用 Node.js 的内置crypto库,如下所示: > require(‘crypto’).randomBytes(64).toString(‘hex’) // ..
作者选择了技术多样性基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 层叠样式表 (CSS)是一种为两个学科设计的语言:程序员的学科和设计师的学科。使用网络上的文本是这种语言广泛可访问性的最明显例子之一。样式文本使用来自图形设计世界的概念,但调整命名约定以更广泛地实现。 在本教程中,您将学习网页排版,文字样式的艺术。与使用印刷机工作类似,您将设置您的内容,应用视觉风格来帮助传达内容,并调整内容以提高可读性和重点。在 Web 上设置样式文本的目的是通过颜色、大小、形状和空间创建视觉层次结构。这样,标题从子标题中脱颖而出,子标题从段落中脱颖而出。这些概念有助于使文本对读者更具可读性和可扫描性。 您将通过编写 HTML 结构开始本教程,该结构将由Cupcake Ipsum的占位符内容组成。(你会用不同的标题级别的工作h1– h6)和内容类型(p,strong,和em)申请多个文字相关的CSS属性,包括font-family,font-size,和color。您还将从第三方字体托管服务Google Fonts加载自定义字体。本教程的每一步都将引入一个新概念或一组新的属性来应用于内容。最后,您将拥有一个自定义样式的网页。 先决条件 保存在本地计算机上的 HTML 文件index.html,您可以从文本编辑器和所选的 Web 浏览器访问该文件。要开始使用,请查看我们的如何设置 HTML 项目教程,并按照如何使用和理解 HTML 元素获取有关如何在浏览器中查看 HTML 的说明。如果您不熟悉 HTML,请尝试使用 HTML系列构建网站的方法。 设置示例 HTML 在第一步中,您将设置将在本教程的其余部分设置样式的 HTML。本教程中 HTML 的目的是提供各种元素和场景供您练习样式。 index.html使用文本编辑器打开文件,例如nano、Vim或Visual Studio Code。添加以下样板 HTML 以提供文件所需的基线代码: 索引.html <!doctype html> <html> <head> <link href=”styles.css” rel=”stylesheet” /> </head> <body> </body> </html> 该<link />元素已加载到styles.css文件中,因此请确保也准备好该文件。 ..
该系列的一部分: 如何编写 Ansible Playbooks Ansible 是一种现代配置管理工具,不需要在远程节点上使用代理软件,仅使用 SSH 和 Python 在托管服务器上进行通信和执行命令。本系列将带您了解可用于编写服务器自动化剧本的主要 Ansible 功能。最后,我们将看到一个实际示例,说明如何创建剧本以自动设置远程 Nginx Web 服务器并向其部署静态 HTML 网站。 在 Ansible 中,您可以定义将在执行任务之前评估的条件。当不满足条件时,则跳过该任务。这是通过when关键字完成的,它接受通常基于变量或事实的表达式。 以下示例定义了两个变量:create_user_file和user。当create_user_file被评估为 时true,将在由user变量定义的用户的主目录中创建一个新文件: playbook-04.yml在您的ansible-practice目录中创建一个名为的新文件: nano ~/ansible-practice/playbook-04.yml 然后将以下行添加到新的剧本文件中: ~/ansible-practice/playbook-04.yml — – hosts: all vars: – create_user_file: yes – user: sammy tasks: – name: create file for user file: path: /home/{{ user }}/myfile state: touch when: create_user_file 完成编辑内容后保存并关闭文件。 ..
该系列的一部分: MongoDB 安全性:确保数据安全的最佳实践 MongoDB,也称为Mongo,是许多现代 Web 应用程序中使用的文档数据库。与任何数据库管理系统一样,负责管理 Mongo 数据库的人员必须遵守推荐的安全最佳实践,以防止数据在发生灾难时丢失并防止其落入恶意行为者之手。 本系列概念文章对 MongoDB 的内置安全功能进行了高级概述,同时还重点介绍了一些通用的数据库安全最佳实践。 无论您或您的云提供商采取何种预防措施来防止它们,计算机始终面临硬件故障的风险。管理任何计算机系统(不仅仅是 MongoDB 安装)的一个重要部分是定期备份您的重要信息。通过获取和存储数据备份,您可以在数据库服务器崩溃并且原始数据丢失时将应用程序恢复到正常工作状态。 正如您应该定期备份 MongoDB 数据一样,将这些备份存储在与托管数据库的服务器不同的位置也同样重要。如果您将备份存储在与数据库相同的数据中心,那么如果数据中心发生故障,则数据库和备份都将不可用,并且您将无法使用备份来恢复您的应用程序在线的。 复制是一种类似于制作备份的做法:制作备份涉及拍摄数据库中所有数据的时间点快照,而复制涉及跨多个独立数据库不断同步数据。拥有数据的多个副本通常很有用,因为这可以在其中一个数据库服务器出现故障时提供冗余,还可以提高数据库的可用性和可伸缩性,以及减少读取延迟。在 MongoDB 中,一组通过复制维护相同数据集的服务器称为副本集。 官方文档建议将生产环境中使用的任何 Mongo 数据库部署为副本集,因为 MongoDB 副本集采用称为自动故障转移的功能。这意味着如果主要成员出现故障并且在预定的时间内无法与次要成员通信,次要成员将自动选举一个新的主要成员,从而确保您的数据对您的应用程序或依赖于它。 相关资源 异地备份的重要性 如何在 Ubuntu 20.04 上备份、恢复和迁移 MongoDB 数据库 如何在 Ubuntu 20.04 上配置 MongoDB..