Category : 教程系列

作者选择/dev/color接受捐赠,作为Write for DOnations计划的一部分。 介绍 处理图像在构建网站中起着举足轻重的作用,但处理起来也具有挑战性。未优化的图像会降低网站的速度,而且许多在桌面上看起来很合适的图像很难缩小到移动设备上。视觉处理图像也可能很乏味且难以维护。 所有这些孤立的问题都不是什么大问题。主要问题是当您必须跟踪所有这些规则和图像缩放技术时。谈到Gatsby.js 项目,这就是Gatsby Image API派上用场的地方。通过使用GraphQL查询,您可以使用 Gatsby Image API 来处理图像压缩、使图像具有响应性,甚至处理基本的图像样式。 在本教程中,您将使用 Gatsby Image API 和 GraphQL 查询来压缩、转换和样式化图像。 先决条件 您的计算机上安装了Node.js版本 10.16.0。要在 macOS 或 Ubuntu 18.04 上安装它,请按照如何在 macOS 上安装 Node.js 和创建本地开发环境或如何在 Ubuntu 18.04 上安装 Node.js 的使用 PPA 安装部分中的步骤进行操作。 已安装Gatsby.js和 Gatsby CLI 工具。您可以在如何设置您的第一个 Gatsby 网站教程中找到如何安装它。 熟悉使用 HTML 构建网站和使用 CSS 设置样式会有所帮助,您可以在如何使用 CSS 构建网站系列中了解更多信息。 对 JavaScript 的理解会很有用。您可以在我们的如何在 ..

Read more

介绍 Calibre 是一个免费的开源电子书管理器。 尽管 Calibre 可能以其桌面客户端而闻名,但它也可以充当强大的服务器,让您可以从世界任何地方访问您的电子书(或与朋友分享您的收藏)。将您的电子书保存在服务器上非常棒,因为您无需依赖于在您想阅读时随身携带相同的阅读设备。如果您去旅行,您无需担心随身携带您的电子书收藏! 该服务器包括一个简单而优雅的浏览器前端,允许您从图书馆搜索和下载书籍。它还内置了一个适合移动设备的网站,可以很容易地将书籍直接下载到电子阅读器——即使是那些只有最基本的网络功能的人。 例如,Calibre 的浏览器与 Kindle Touch 配合使用,即使该设备只有电子墨水显示屏和实验性浏览器,它也可以直接下载书籍。 在本教程中,我们将了解如何在 Ubuntu 14.04 服务器上安装、设置和使用 Calibre。我们还将了解如何使用该calibredb命令直接从服务器创建、自定义和维护您的电子书数据库。 在本教程中,我们将介绍: 安装口径 创建电子书库,或导入现有的电子书库 使 Calibre 服务器成为后台服务 自动将新书添加到图书馆 在本教程结束时,您将拥有一个小的初始图书馆,您可以轻松地向其中添加新书! 先决条件 请确保您具备以下先决条件: Ubuntu 14.04 Droplet 一个sudo 用户 本教程中的示例是针对运行全新安装的 Ubuntu 14.04 的 Droplet 显示的,但它们应该很容易适应其他操作系统。 第 1 步 – 安装 Calibre Calibre 可从 APT 软件存储库中获得,但正如其创建者所建议的那样,从其网站上提供的二进制文件安装要好得多。Calibre 更新非常频繁,repos 中的版本往往滞后。 幸运的是,Calibre 的创造者让这一切变得非常简单。只需在您的服务器上运行以下 Python 命令。在运行命令之前,请仔细检查官方 Calibre ..

Read more

介绍 在设计 SQL 数据库时,可能会出现希望对可以添加到表中某些列的数据进行限制的情况。SQL 通过使用约束使这成为可能。对列或表应用约束后,任何向列或表添加不符合约束的数据的尝试都将失败。 不同的 SQL 实现有自己独特的处理约束的方式。本指南概述了许多数据库管理系统用于管理约束的语法,在整个示例中都使用 MySQL。 先决条件 为了遵循本指南,您需要一台运行某种类型的使用 SQL 的关系数据库管理系统 (RDBMS) 的计算机。本指南中的说明和示例已使用以下环境进行验证: 运行 Ubuntu 20.04 的服务器,具有管理权限的非 root 用户和使用 UFW 配置的防火墙,如我们的 Ubuntu 20.04 初始服务器设置指南中所述。 在服务器上安装并保护 MySQL,如如何在 Ubuntu 20.04 上安装 MySQL 中所述。本指南已使用新创建的用户进行验证,如步骤 3 中所述。 注意:请注意,许多 RDBMS 使用自己独特的 SQL 实现。尽管本教程中概述的命令适用于大多数 RDBMS,但如果您在 MySQL 以外的系统上测试它们,则确切的语法或输出可能会有所不同。 对 SQL 约束是什么以及它们如何起作用有一个大致的了解也将很有帮助。有关此概念的概述,您可以参考我们关于了解 SQL 约束的文章。 您还需要一个可用于练习创建带有约束的表的数据库。如果您没有这样的测试数据库,请参阅以下连接到 MySQL 和设置示例数据库部分,以了解有关如何创建数据库的详细信息。 连接和设置示例数据库 如果您的 SQL 数据库系统在远程服务器上运行,请从本地计算机通过 ..

Read more

Node.js 是一个基于 Chrome 的 V8 JavaScript 引擎构建的 JavaScript 运行时。它允许程序员创建快速、可扩展的后端 JavaScript 应用程序。Node.js 的异步和事件驱动特性使其非常适合创建可以同时处理多个连接的应用程序,这是 Web 服务器和其他后端应用程序的常见任务。 通过在前端和后端利用 JavaScript,开发可以更加一致,并且可以在相同的开发环境中设计全栈 Web 应用程序。 有关 Node.js 的更多信息,请参阅以下资源: 如何在 Ubuntu 20.04 上安装 Node.js 如何在 Node.js 中编写和运行你的第一个程序 我们的node-js标签页包含指向 Node.js 教程、技术讲座、问答�..

Read more

介绍 创建新的 Ubuntu 18.04 服务器后,您应该执行一些配置步骤作为初始服务器设置的一部分,以提高安全性并便于以后管理。 本指南将引导您完成一些您应该尽早完成的过程,以便在继续安装和配置任何软件或服务之前为您的新服务器奠定坚实的基础。 步骤 1 — 以 Root 用户身份登录 新安装的服务器通常只设置一个root帐户,这是您第一次登录服务器时使用的帐户。 在根用户的是,具有十分广阔的权限的管理用户。由于root帐户具有更高的权限,因此不鼓励您定期使用它。这是因为root帐户固有的部分能力是能够进行非常具有破坏性的更改,即使是意外更改也是如此。出于这个原因,推荐的做法是设置一个普通系统用户并授予该用户sudo权限,以便它可以运行具有某些限制的管理命令。在下一步中,您将设置这样一个用户。 首先,您需要登录到您的服务器。确保您知道服务器的公共 IP 地址。要进行身份验证,您需要帐户的密码或root用户帐户的 SSH 私钥,以防您在服务器内设置了用于身份验证的 SSH 密钥。如果您还没有登录到您的服务器,您可能需要遵循我们关于如何使用 SSH 连接到您的 Droplet 的指南,其中详细介绍了此过程。 如果您尚未连接到服务器,请继续以root用户身份使用以下命令登录。请务必将命令的突出显示部分替换为您服务器的公共 IP 地址: ssh root@your_server_ip 如果出现有关主机真实性的警告,请接受。如果您使用密码验证,请提供您的root密码以登录。或者,如果您使用受密码保护的 SSH 密钥,您可能会在每次会话第一次使用密钥时提示输入密码。此外,如果这是您第一次使用密码登录服务器,系统可能还会提示您更改root密码。 在下一步中,您将设置一个具有降低权限的新系统用户帐户,并将此用户配置为通过sudo. 步骤 2 — 创建新用户 以root身份登录后,您可以创建一个新用户,从现在起将成为您的常规系统用户。 以下示例创建了一个名为sammy的新用户,但您应该将其替换为您选择的用户名: adduser sammy 您将被问到几个问题,首先是帐户密码。 输入一个强密码,并可以根据需要填写任何附加信息。这不是必需的,您可以点击ENTER任何您想跳过的字段。 在下一步中,您将sudo为该用户设置权限。这将允许用户以root用户身份通过sudo程序执行管理任务。 步骤 3 — 授予管理权限 您现在拥有一个具有常规权限的新用户帐户。但是,有时您需要执行管理任务,例如管理服务器、编辑配置文件或重新启动服务器。 为了避免退出您的普通用户并以root帐户重新登录,您可以为您的普通帐户设置所谓的“超级用户”或root权限。这将允许您的普通用户通过在每个命令前加上单词前缀来运行具有管理权限的命令sudo。 要将这些权限添加到您的新用户,您需要将新用户添加到sudo组。默认情况下,在 Ubuntu 18.04 上,允许属于sudo组的用户使用该sudo命令。 ..

Read more

作者选择Electronic Frontier Foundation Inc接受捐赠,作为Write for DOnations计划的一部分。 介绍 Linux 服务器通常通过连接到OpenSSH服务器使用 SSH 进行远程管理,OpenSSH服务器是 Ubuntu、Debian、CentOS、FreeBSD 和大多数其他基于 Linux/BSD 的系统中使用的默认 SSH 服务器软件。为保护 SSH 的服务器端方面投入了大量精力,因为 SSH 充当进入您的服务器的入口。 但是,考虑客户端(例如 OpenSSH 客户端)的安全性也很重要。 OpenSSH 客户端是 SSH 的“客户端”端,也称为ssh命令。您可以在SSH Essentials:使用 SSH 服务器、客户端和密钥 中了解有关 SSH 客户端-服务器模型的更多信息。 在服务器端强化 SSH 时,主要目标是让恶意行为者更难访问您的服务器。但是,客户端的强化非常不同,因为您正在努力防御和保护您的 SSH 连接和客户端免受各种不同的威胁,包括: 网络上的攻击者,称为“中间人”攻击。 受到攻击或恶意的服务器发送格式错误的数据包、恶意控制序列或大量数据以使您的客户端过载。 人为错误,例如错误输入服务器地址或配置值。 在本教程中,您将强化 OpenSSH 客户端,以帮助确保传出 SSH 连接尽可能安全。 先决条件 要完成本教程,您需要: 您用作 SSH 客户端的设备,例如: 您的个人电脑 SSH “跳转主机”或“堡垒主机” ..

Read more

介绍 权限分离是在 Linux 和类 Unix 操作系统中实现的基本安全范例之一。普通用户以有限的权限操作,以减少他们对自己环境的影响范围,而不是更广泛的操作系统。 一个名为root 的特殊用户具有超级用户权限。这是一个管理帐户,没有对普通用户的限制。用户可以通过多种不同方式以超级用户或root权限执行命令。 在本文中,我们将讨论如何正确且安全地获取root权限,并特别关注编辑/etc/sudoers文件。 我们将在 Ubuntu 20.04 服务器上完成这些步骤,但大多数现代 Linux 发行版(例如 Debian 和 CentOS)应该以类似的方式运行。 本指南假设您已经完成了此处讨论的初始服务器设置。以普通的非root用户身份登录您的服务器,然后继续下面的操作。 注意:本教程深入介绍了权限提升和sudoers文件。如果您只想sudo为用户添加权限,请查看我们的如何为Ubuntu和CentOS创建新的启用 Sudo 的用户快速入门教程。 如何获得根权限 获取root权限的基本方法有 3 种,它们的复杂程度各不相同。 以根用户身份登录 获得root权限的最简单直接的方法是直接以root用户身份登录您的服务器。 如果您正在登录本地计算机(或在虚拟服务器上使用带外控制台功能),root请在登录提示中输入您的用户名,并在询问时输入root密码。 如果您通过 SSH 登录,请在 SSH 连接字符串中的 IP 地址或域名之前指定root用户: ssh root@server_domain_or_ip 如果您尚未为root用户设置 SSH 密钥,请在出现提示时输入root密码。 使用su成为根 通常不建议直接以root身份登录,因为很容易开始将系统用于非管理任务,这很危险。 获得超级用户权限的下一个方法允许您在需要时随时成为root用户。 我们可以通过调用su代表“替代用户”的命令来做到这一点。要获得root权限,请键入: su 系统将提示您输入root用户的密码,之后,您将进入root shell 会话。 完成需要root权限的任务后,键入以下命令返回到正常的 shell: exit 用于sudo以 root 身份执行命令 ..

Read more

作者选择了自由软件基金会作为Write for DOnations计划的一部分接受捐赠。 介绍 在依赖社区开发的解决方案多年后,MongoDB 宣布他们正在开发 Go 的官方驱动程序。2019 年 3 月,随着 v1.0.0 的发布,这个新驱动程序达到了生产就绪状态,并从那时起不断更新。 与其他官方 MongoDB 驱动程序一样,Go 驱动程序是 Go 编程语言的惯用方法,并提供了一种使用 MongoDB 作为 Go 程序的数据库解决方案的简单方法。它与 MongoDB API 完全集成,并公开了 API 的所有查询、索引和聚合功能以及其他高级功能。与第三方库不同,它将得到 MongoDB 工程师的全面支持,因此您可以放心地继续开发和维护。 在本教程中,您将开始使用官方的 MongoDB Go Driver。您将安装驱动程序、连接到 MongoDB 数据库并执行多个 CRUD 操作。在此过程中,您将创建一个任务管理器程序,用于通过命令行管理任务。 先决条件 对于本教程,您将需要以下内容: Go 安装在您的机器上,并按照如何安装 Go 和设置本地编程环境配置了一个 Go 工作区。在本教程中,该项目将命名为tasker. 您需要在启用 Go Modules 的机器上安装 Go v1.11 或更高版本。 按照如何安装 MongoDB为您的操作系统安装 ..

Read more

介绍 该flex-wrap属性是一种使父元素在各种屏幕尺寸上更具响应性的快速方法。与一般的 flexbox 一样,它简化了页面布局,因此您不必手动设置断点或自己管理页面溢出。 Flexbox 和管理元素包装 flex-wrap是 CSS 中 flexbox(或“flexible box”)模块特有的属性。Flexbox 是一种 CSS 布局模型,用于管理子元素在父元素中的显示方式。这意味着 flexbox 可用于一般页面布局(如页眉、导航、页脚等)。但更重要的是,它可以应用于页面上具有子元素的任何元素。 div.parent { display: flex; } 使元素成为flex容器就像添加display: flex;到它的 CSS 声明一样简单。 一旦有一个flex容器,flex-wrap就可以在同一个父元素上声明,以确定如何处理默认情况下不适合一行的子元素。 div.parent { display: flex; flex-wrap: wrap; } 在应用 flex-wrap 之前,父元素必须是一个 flex 容器。flex-wrap 属性仅应用于 flex 容器(而不是子元素)。 flex-wrap 的默认设置 默认情况下,flex容器将尝试将其子元素放在一行中。这也被称为nowrap对flex-wrap财产。 对于这个例子,让我们首先从一个非 flex 容器开始,其中的子元素——块元素——将每个都在一个新行上: 鳄鱼 鳄鱼 鳄鱼 蛋 如果我们使父元素成为flex容器,则子元素将全部位于一行。 .flex-container { display: ..

Read more

许多 Linux 发行版使用systemd来管理系统设置和服务。 systemd 将任务组织成称为单元的组件,将单元组组织成目标,可用于创建对其他系统服务和资源的依赖关系。 systemd 可以在启动时自动启动单元和目标,或者当服务器已经运行时,当用户或另一个 systemd 目标请求时。 该systemctl命令用于与 systemd 控制的进程交互。它可以检查单元和目标的状态,以及启动、停止和重新配置它们。 要了解有关使用 systemd 管理服务以及定义和使用 systemd 单元文件的更多信息,请访问: 如何使用 Systemctl 管理 systemd 服务和单元 了解系统单位和单位文件 最后,要了解如何使用journalctl命令与 systemd 日志进行交互,请访问本教程,如何使用 Journalctl 查看和操作 Systemd 日志,其中解释了 systemd 如何从单元收集日志并以集中位置和统一格式显�..

Read more