Category : 教程系列

作者选择开放互联网/言论自由基金接受捐赠,作为Write for DOnations计划的一部分。 介绍 作为系统管理员,了解基础架构和服务的当前状态是最佳实践。理想情况下,您希望在用户之前注意到故障磁盘或应用程序停机时间。Checkmk等监控工具可以帮助管理员检测这些问题并维护健康的服务器。 通常,监控软件可以跟踪服务器的硬件、正常运行时间和服务状态,并且可以在出现问题时发出警报。在一个非常基本的场景中,如果任何服务出现故障,监控系统会提醒您。在更强大的情况下,通知会在出现任何可疑迹象后不久发出,例如内存使用量增加或 TCP 连接数量异常。 有许多监控解决方案提供不同程度的复杂性和功能集,包括免费的和商业的。在许多情况下,这些工具的安装、配置和管理是困难和耗时的。 然而,Checkmk是一种既健壮又易于安装的监控解决方案。它是一个独立的软件包,将Nagios(一种流行的开源警报服务)与用于收集、监控和绘制数据的附加组件相结合。它还带有 Checkmk 的 Web 界面——一个综合性的工具,可以解决 Nagios 的许多缺点。它为许多 Linux 发行版提供了一个用户友好的仪表板、一个功能齐全的通知系统和一个易于安装的监控代理存储库。如果没有 Checkmk 的 Web 界面,我们将不得不为不同的任务使用不同的视图,并且在不诉诸大量文件修改的情况下配置所有这些功能是不可能的。 在本指南中,我们将在 Ubuntu 18.04 服务器上设置 Checkmk 并监控两个独立的主机。我们将监控 Ubuntu 服务器本身以及单独的 CentOS 7 服务器,但我们可以使用相同的方法将任意数量的额外主机添加到我们的监控配置中。 先决条件 一台 Ubuntu 18.04 服务器,具有 sudo 权限的普通非 root 用户。您可以按照此初始服务器设置教程学习如何准备您的服务器。 一台拥有 sudo 权限的普通非 root 用户的 CentOS 7 服务器。要准备此服务器,您可以按照此初始服务器设置教程进行操作。 步骤 1 — 在 Ubuntu ..

Read more

Python 是一种灵活的编程语言,它优先考虑代码的清晰度和可读性。Python 是许多软件开发用例的不错选择,通常用于脚本编写、自动化、数据分析、机器学习和后端开发。流行的库和框架包括Django、Flask、 NumPy 和 scikit-learn。 Python 于 1991 年首次发布。其名称的灵感来自英国喜剧团体 Monty Python,因为开发团队的使命是创建一种使用起来很有趣的语言。Python 3 是该语言的最新版本,被认为是 Python 的未来。 如果您对学习 Python 感兴趣,对于初学者和有经验的开发人员来说,它都是一个不错的选择。在下方,您可以找到许多可帮助您入门的资源: 学习如何编写你的第一个“Hello, World!” 用 Python 编写程序。 免费下载我们的How To Code in Python一书,在数字阅读器上阅读,或在线关注我们的How To Code in Python系列。 在服务器上安装Anaconda Python Distribution以支持管理 Python 版本和包。 如需更多资源,请查看我们在Python 标签下的完整教育材�..

Read more

Docker 备忘单 介绍 Docker 可以轻松地将您的应用程序和服务包装在容器中,以便您可以在任何地方运行它们。然而,当您使用 Docker 时,也很容易积累过多未使用的图像、容器和数据量,从而使输出混乱并消耗磁盘空间。 Docker 为您提供了从命令行清理系统所需的所有工具。这份备忘单样式的指南提供了对通过删除未使用的 Docker 镜像、容器和卷来释放磁盘空间和保持系统组织有用的命令的快速参考。 如何使用本指南: 本指南采用备忘单格式,带有独立的命令行片段 跳转到与您尝试完成的任务相关的任何部分。 命令中使用的命令替换语法可在许多流行的 shell 中使用,例如 bash、zsh 和 Windows Powershell。command $(command) 清除所有未使用或悬空的镜像、容器、卷和网络 Docker 提供了一个命令来清理任何悬空的(与容器无关的)资源——图像、容器、卷和网络: docker system prune 要额外删除任何已停止的容器和所有未使用的图像(不仅仅是悬空图像),请将-a标志添加到命令中: docker system prune -a 删除 Docker 镜像 删除一张或多张特定图片 使用docker images带有-a标志的命令来定位要删除的图像的 ID。这将显示每个图像,包括中间图像层。找到要删除的图像后,可以将其 ID 或标签传递给docker rmi: 列表: docker images -a 去掉: docker rmi Image Image 删除悬空图像 Docker 镜像由多个层组成。悬空图像是与任何标记图像无关的图层。它们不再有任何用途并消耗磁盘空间。它们可以通过添加过滤器标志来定位,命令-f的值为。当您确定要删除它们时,可以使用以下命令:dangling=truedocker ..

Read more

作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 在ECMAScript 2015 中,JavaScript语言引入了默认函数参数。这使开发人员能够初始化函数,如果该参数不提供给函数调用默认值。以这种方式初始化函数参数将使您的函数更易于阅读且不易出错,并将为您的函数提供默认行为。这将帮助您避免因传入参数和解构不存在的对象而导致的错误。undefined 在本文中,您将回顾参数和实参之间的区别,了解如何在函数中使用默认参数,查看支持默认参数的替代方法,并了解哪些类型的值和表达式可以用作默认参数。您还将通过示例来演示默认参数如何在 JavaScript 中工作。 参数和参数 在解释默认函数参数之前,重要的是要知道参数可以默认为什么。因此,我们将首先回顾函数中自变量和形参之间的区别。如果您想了解更多关于这种区别的信息,请查看我们之前在JavaScript 系列中的文章,如何在 JavaScript 中定义函数。 在以下代码块中,您将创建一个函数,该函数返回给定数字的立方体,定义为x: // Define a function to cube a number function cube(x) { return x * x * x } x这个例子中的变量是一个参数——一个传递给函数的命名变量。参数必须始终包含在变量中,并且不得具有直接值。 现在看看下一个代码块,它调用cube您刚刚创建的函数: // Invoke cube function cube(10) 这将提供以下输出: Output1000 在这种情况下,10是一个参数——一个在调用时传递给函数的值。通常,该值也将包含在变量中,例如在下一个示例中: // Assign a number to a variable const number = ..

Read more

作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。 介绍 系统日志是管理 Linux 系统的极其重要的组成部分。它们提供了对系统如何工作以及它们如何被使用的宝贵见解,因为除了错误之外,它们还记录操作信息,例如安全事件。Linux 系统的标准配置是将它们的日志本地存储在它们发生的同一系统上。这适用于独立系统,但随着系统数量的增加,很快就会成为一个问题。管理所有这些日志的解决方案是创建一个集中式日志服务器,每个 Linux 主机将其日志实时发送到专用日志管理服务器。 与在每个主机上存储日志相比,集中式日志记录解决方案具有以下几个优点: 减少每个主机上存储日志文件所需的磁盘空间量。 日志可以保留更长时间,因为专用日志服务器可以配置更大的存储容量。 可以执行高级日志分析,这需要来自多个系统的日志以及比主机上可用的更多计算资源。 出于安全原因,系统管理员可以访问他们可能无法直接登录的所有系统的日志。 在本指南中,您将配置systemd工具套件的一个组件,以将日志消息从客户端系统中继到集中式日志收集服务器。您将配置服务器和客户端以使用 TLS 证书对通过不安全网络(如 Internet)传输的日志消息进行加密,并相互进行身份验证。 先决条件 在开始本指南之前,您需要具备以下条件: 两台 Ubuntu 20.04 服务器。 在两台服务器上都具有 sudo 权限的非 root 用户。请按照使用 Ubuntu 20.04指南进行初始服务器设置以获取有关如何执行此操作的说明。您还应该按照指南中的说明在两台服务器上配置 UFW 防火墙。 指向您的服务器的两个主机名。一个用于生成日志的客户端系统的主机名和另一个用于日志收集服务器的主机名。通过查阅域和 DNS文档,了解如何将主机名指向 DigitalOcean Droplets 。 本指南将使用以下两个示例主机名: client.your_domain:生成日志的客户端系统。 server.your_domain: 日志收集服务器。 以非 root sudo 用户身份通过​​ SSH 在不同终端中登录客户端和服务器以开始本教程。 注意:在整个教程中,命令块都标有应该运行命令的服务器名称(客户端或服务器)。 步骤 1 — 安装 systemd-journal-remote ..

Read more

作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 SSH 默认使用密码进行身份验证,大多数 SSH 强化说明建议改用 SSH 密钥。然而,SSH 密钥仍然只是一个因素,虽然是一个更安全的因素。通道是您计算机上的终端,通过加密隧道将数据发送到远程机器。但是就像黑客可以猜出密码一样,他们可以窃取 SSH 密钥,然后在任何一种情况下,攻击者都可以使用该单条数据访问您的远程系统。 在本教程中,我们将设置多因素身份验证来解决这个问题。多因素身份验证(MFA) 或双因素身份验证(2FA) 需要不止一个因素来进行身份验证或登录。这意味着不良行为者必须妥协多项内容,例如您的计算机和手机,才能进入。那里身份验证中使用的几种类型的因素: 你知道的东西,比如密码或安全问题 您拥有的东西,例如身份验证器应用程序或安全令牌 你是什么,比如你的指纹或声音 一个常见因素是 OATH-TOTP 应用程序,例如 Google 身份验证器。OATH-TOTP(Open Authentication Time-Based One-Time Password)是一种开放式协议,可生成一次性使用密码,通常是每 30 秒循环一次的六位数字。 除了 SSH 密钥之外,本文还将介绍如何使用 OATH-TOTP 应用程序启用 SSH 身份验证。通过 SSH 登录您的服务器将需要跨两个通道的两个因素,从而使其比单独的密码或 SSH 密钥更安全。此外,我们还将介绍 MFA 的一些其他用例以及一些有用的提示和技巧。 如果您正在寻求有关保护 SSH 连接的进一步指导,请查看有关强化 OpenSSH和强化 OpenSSH 客户端的这些教程。 先决条件 要学习本教程,您需要: 一台带有 sudo 非 ..

Read more

该系列的一部分: MongoDB 安全性:确保数据安全的最佳实践 MongoDB,也称为Mongo,是许多现代 Web 应用程序中使用的文档数据库。与任何数据库管理系统一样,负责管理 Mongo 数据库的人员必须遵守推荐的安全最佳实践,以防止数据在发生灾难时丢失并防止其落入恶意行为者之手。 本系列概念文章对 MongoDB 的内置安全功能进行了高级概述,同时还重点介绍了一些通用的数据库安全最佳实践。 维护 MongoDB 数据库并确保其安全并非易事,但通过遵循本系列中强调的建议,您可以减少数据库漏洞的数量。话虽如此,保护 MongoDB 数据库的主题远远超出了本系列中可以讨论的范围。攻击者每天都变得越来越老练,这意味着即使使用此处强调的所有建议和功能对其进行保护,数据库系统仍然可能受到损害。 随着 MongoDB 变得越来越流行,许多云公司都推出了自己的托管 MongoDB 数据库服务。甲管理的数据库,有时被称为数据库作为一种服务或DBaaS,是在其中最终用户支付的云服务提供商用于访问数据库中的云计算服务。 与自我管理的数据库不同,用户不必自己设置或维护管理数据库;相反,提供者有责任监督数据库的基础设施。同样,云提供商承担了与保持数据库安全相关的大部分责任。通常,提供商会将数据库部署在他们控制的防火墙后面,并且可能需要通过 TLS 进行任何远程连接。 托管数据库服务的一个共同特点是它们提供自动备份作为灾难恢复的一种形式。许多还通过自动复制确保高可用性和故障转移。但是,与任何云服务一样,通过使用托管数据库,您将放弃“自己动手”的方法所带来的大部分控制权,即您自己监督数据库的所有方面。 DigitalOcean 现在提供自己的托管 MongoDB 服务,该服务带有许多有用的安全功能。例如,DigitalOcean Managed MongoDB Databases 需要通过 TLS/SSL 建立连接,以确保您的数据在穿越网络时保持加密。托管 MongoDB 数据库中保存的数据也通过 Linux 统一密钥设置进行静态加密,因此您可以放心,您的数据将免受未经授权的用户的侵害。 您可以使用备用节点部署 DigitalOcean Managed MongoDB 数据库。如果发生故障,该服务会将数据处理切换到备用节点,从而帮助您保持数据的高可用性。在启动由 DigitalOcean 管理的 MongoDB 数据库后,您可以通过将入站连接限制为特定的 Droplet、Kubernetes 集群或标签来保护它。您甚至可以在虚拟私有云中启动 Mongo 数据库,确保您的数据只能由受信任网络中的资源访问。 单击此处了解有关 DigitalOcean 托管 ..

Read more

介绍 Python 编程语言是初学者和有经验的开发人员越来越受欢迎的选择。Python 灵活多变,在脚本编写、自动化、数据分析、机器学习和后端开发方面具有优势。首次发布于 1991 年,其名称的灵感来自英国喜剧团体 Monty Python,开发团队希望 Python 成为一种使用起来很有趣的语言。 本教程将使用 Python 3 编程环境设置您的 Ubuntu 20.04 服务器。在服务器上编程具有许多优势,并支持跨开发项目的协作。本教程的一般原则将适用于任何 Debian Linux 发行版。 先决条件 为了完成本教程,您应该拥有一个sudo在 Ubuntu 20.04 服务器上具有特权的非 root 用户。要了解如何实现此设置,请遵循我们的初始服务器设置指南。 如果您还不熟悉终端环境,您可能会发现文章“ Linux 终端简介”有助于更好地了解终端。 设置好服务器和用户后,您就可以开始了。 第 1 步 – 设置 Python 3 Ubuntu 20.04 和其他版本的 Debian Linux 预装了 Python 3。为了确保我们的版本是最新的更新,让我们更新,并与升级系统apt命令与Ubuntu的工作一个先进适用的P ackaging牛逼OOL: sudo apt update sudo apt -y upgrade 该-y标志将确认我们同意安装所有项目,但根据您的 ..

Read more

介绍 该sudo命令提供了一种向普通用户授予管理员权限的机制——通常只对root用户可用。本指南将向您展示如何sudo在 CentOS 8 上创建具有访问权限的新用户,而无需修改您的服务器/etc/sudoers文件。 注意:如果您要sudo为现有 CentOS 用户进行配置,请跳至步骤 3。 第 1 步 – 登录您的服务器 以root用户身份通过 SSH 连接到您的服务器: ssh root@your_server_ip_address 使用您服务器的 IP 地址或主机名代替your_server_ip_address上述地址。 步骤 2 — 向系统添加新用户 使用以下adduser命令向您的系统添加新用户: adduser sammy 请务必替换sammy为您要创建的用户名。 使用passwd命令更新新用户的密码: passwd sammy 请记住替换sammy为您刚刚创建的用户。系统将提示您两次输入新密码: OutputChanging password for user sammy. New password: Retype new password: passwd: all authentication tokens updated successfully. 第 3 步 – 将用户添加到轮组 ..

Read more

介绍 MySQL 5.7.8 版引入了一种 JSON 数据类型,允许您访问 JSON 文档中的数据。 SQL 数据库在设计上趋于僵化。就其性质而言,结构化查询语言强制执行数据类型和大小限制。 相比之下,NoSQL 数据库鼓励设计的灵活性。在这些无模式数据库中,没有强加的结构限制,只有要保存的数据。 MySQL 中的 JSON 数据类型赋予您这两种系统的优势。它允许您构建数据库的某些部分,而让其他部分保持灵活。 本文的前半部分将设计一个带有 JSON 字段的数据库。它将逐步使用 MySQL 可用的内置函数来创建、读取、更新和删除行。 本文的后半部分将利用 Eloquent ORM 和 Laravel 与数据库进行通信。您将构建一个支持显示产品、添加新产品、修改现有产品和删除产品的管理面板。 先决条件 如果你想跟随这篇文章,你需要: MySQL 5.7.8 或更高版本和 PHP 7.3.24 或更高版本。您可以参考我们关于安装 Linux、Apache、MySQL 和 PHP 的教程 对SQL 查询有一定的了解。 对编写 PHP有一定的了解。 对Laravel有一定的了解。 本教程通过 Composer使用Laravel 安装。您可以参考我们关于安装 Composer 的教程。 注意: Laravel 现在提供了一个名为Sail的工具来与 Docker 一起使用,该工具将使用 MySQL、PHP ..

Read more