Category : 教程系列

该系列的一部分: 如何编写 Ansible Playbooks Ansible 是一种现代配置管理工具,不需要在远程节点上使用代理软件,仅使用 SSH 和 Python 在托管服务器上进行通信和执行命令。本系列将带您了解可用于编写服务器自动化剧本的主要 Ansible 功能。最后,我们将看到一个实际示例,说明如何创建剧本以自动设置远程 Nginx Web 服务器并向其部署静态 HTML 网站。 如果您一直在学习本系列的所有部分,那么此时您应该熟悉安装系统包、应用模板以及在 Ansible playbook 中使用处理程序。在本系列的这一部分中,您将使用迄今为止所见的内容创建一个剧本,该剧本可自动设置远程 Nginx 服务器以在 Ubuntu 20.04 上托管静态 HTML 网站。 首先在您的 Ansible 控制节点上创建一个新目录,您将在其中设置 Ansible 文件和一个要部署到远程服务器的演示静态 HTML 网站。这可以位于您的主文件夹中您选择的任何位置。在这个例子中,我们将使用~/ansible-nginx-demo. mkdir ~/ansible-nginx-demo cd ~/ansible-nginx-demo 接下来,将现有的清单文件复制到新目录中。在此示例中,我们将使用您在本系列开头设置的相同广告资源: cp ~/ansible-practice/inventory . 这将复制inventory从ansible-practice主目录中命名的文件夹命名的文件,并将其保存到当前目录。 获取演示网站 在此演示中,我们将使用一个静态 HTML 网站,它是我们如何在 HTML 中编码系列的主题。首先通过运行以下命令下载演示网站文件: curl -L https://github.com/do-community/html_demo_site/archive/refs/heads/main.zip -o html_demo.zip ..

Read more

作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 Python 标准库包含unittest帮助您为 Python 代码编写和运行测试的模块。 使用该unittest模块编写的测试可以帮助您找到程序中的错误,并防止随着时间的推移更改代码时发生回归。坚持测试驱动开发的团队可能会发现unittest确保所有编写的代码都有一组相应的测试很有用。 在本教程中,您将使用 Python 的unittest模块为函数编写测试。 先决条件 要充分利用本教程,您需要: 理解 Python 中的函数。您可以查看How To Define Functions in Python 3教程,它是How To Code in Python 3系列的一部分。 定义TestCase子类 该unittest模块提供的最重要的类之一名为TestCase. TestCase提供用于测试我们的功能的通用脚手架。让我们考虑一个例子: test_add_fish_to_aquarium.py import unittest def add_fish_to_aquarium(fish_list): if len(fish_list) > 10: raise ValueError(“A maximum of 10 fish can be added to the aquarium”) return {“tank_a”: ..

Read more

介绍 LEMP 软件堆栈是一组开源软件,它们通常安装在一起以使服务器能够托管动态网站和 Web 应用程序。这个术语实际上是一个首字母缩写词,它代表L inux 操作系统,带有E Nginx Web 服务器(它取代了 LAMP 堆栈的 Apache 组件)。该网站的数据存储在一个中号基于ySQL的数据库,并且动态内容通过处理P HP。 在本指南中,我们将在 CentOS 7 服务器上安装 PHP 7.4 的 LEMP 堆栈,使用 MariaDB 作为数据库管理系统。MariaDB 可替代原始 MySQL 服务器,这实际上意味着您可以切换到 MariaDB,而无需在应用程序中进行任何配置或代码更改。 先决条件 在开始阅读本指南之前,您应该在服务器上设置一个单独的非 root 用户帐户。您可以通过完成CentOS 7 初始服务器设置中的步骤 1-4 来了解如何执行此操作。 第 1 步 – 安装 Nginx 为了向我们的网站访问者显示网页,我们将使用 Nginx,一个高性能的网络服务器。要获得最新的 Nginx 版本,我们将首先安装 EPEL 存储库,其中包含适用于 CentOS 7 操作系统的附加软件。 要添加 CentOS ..

Read more

作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 Python 线程是一种并行形式,它允许您的程序一次运行多个过程。Python 中的并行也可以使用多个进程来实现,但线程特别适合加速涉及大量 I/O(输入/输出)的应用程序。 示例I/O 绑定操作包括发出 Web 请求和从文件读取数据。与受 I/O 限制的操作相比,受CPU 限制的操作(例如使用 Python 标准库执行数学运算)不会从 Python 线程中受益太多。 Python 3 包含ThreadPoolExecutor用于在线程中执行代码的实用程序。 在本教程中,我们将使用ThreadPoolExecutor方便地发出网络请求。我们将定义一个非常适合在线程内调用的ThreadPoolExecutor函数,用于执行该函数,并处理这些执行的结果。 在本教程中,我们将发出网络请求以检查维基百科页面的存在。 注意: I/O 密集型操作比 CPU 密集型操作从线程中获益更多的事实是由 Python 中称为全局解释器锁的特性引起的。如果您愿意,可以在官方 Python 文档 中了解有关 Python 全局解释器锁的更多信息。 先决条件 为了充分利用本教程,建议您熟悉 Python 编程并requests安装本地 Python 编程环境。 您可以查看这些教程以获取必要的背景信息: 如何在 Python 3 中编码 如何在 Ubuntu 18.04 上安装 Python 3 并设置本地编程环境 ..

Read more

该系列的一部分: MongoDB 安全性:确保数据安全的最佳实践 MongoDB,也称为Mongo,是许多现代 Web 应用程序中使用的文档数据库。与任何数据库管理系统一样,负责管理 Mongo 数据库的人员必须遵守推荐的安全最佳实践,以防止数据在发生灾难时丢失并防止其落入恶意行为者之手。 本系列概念文章对 MongoDB 的内置安全功能进行了高级概述,同时还重点介绍了一些通用的数据库安全最佳实践。 无论您付出多少努力来加强 MongoDB 安装的安全性,随着时间的推移,新的漏洞不可避免地会出现。与从一开始就使用安全设置运行 Mongo 一样重要,执行频繁的检查和诊断以确定系统安全状态也同样重要。 例如,您应该定期检查 MongoDB 的新更新,以确保您使用的版本没有任何未修补的漏洞。Mongo 版本号采用XYZ的形式,其中X表示版本号,Y表示发布或开发系列号,Z表示修订或补丁号。MongoDB 大约每年都会发布一个新版本,在撰写本文时的最新版本是4.4,但他们也会根据需要发布新的修订版和补丁。 虽然 MongoDB 通常建议您使用可用的最新版本来优化安全性,但请注意新版本系列(即从4.4版到4.6版)可能会破坏向后兼容性。也就是说,MongoDB 建议您始终升级到发布系列的最新稳定版本(这意味着,如果您安装了4.4.4版,则应在可用时升级到4.4.5),因为这些通常是向后兼容的补丁修复错误。 人们还应该考虑他们打算如何与他们的 MongoDB 数据库进行交互,以及这种情况是否会随着时间的推移而改变。MongoDB 提供了几个命令和方法,允许您默认执行 JavaScript 函数的服务器端执行。例如,您可以使用$where运算符评估 JavaScript 表达式以查询文档。这为您提供了更大的灵活性,因为它允许您表达没有等效标准运算符的查询。但是,通过允许服务器端 Javascript 执行,您也会将数据库暴露给潜在的恶意表达式。因此,如果您不打算使用服务器端脚本,MongoDB 建议您禁用它。 同样,默认情况下,MongoDB 将验证所有用户输入,以确保客户端无法将格式错误的 BSON 插入到数据库中。并非每个用例都需要此输入验证,但 MongoDB 建议保持启用输入验证,以防止您的数据库存储任何无效的 BSON 文档。 相关资源 保护您的服务器的推荐�..

Read more

介绍 在本教程中,您将使用 Django 和 React 构建一个待办事项应用程序。 React 是用于开发 SPA(单页应用程序)的 JavaScript 框架。它有可靠的文档和充满活力的生态系统。 Django 是一个 Python Web 框架,它简化了 Web 开发中的常见做法。Django 是可靠的,并且还拥有一个充满活力的稳定库生态系统,支持常见的开发需求。 对于此应用程序,React 作为前端或客户端框架,通过对 Django 后端的请求处理用户界面并获取和设置数据,后端是使用 Django REST 框架 (DRF) 构建的 API。 在本教程结束时,您将拥有一个完整的应用程序: 注意:本教程的源代码可在 GitHub 上找到。 此应用程序将允许用户创建任务并将其标记为已完成或未完成。 先决条件 要学习本教程,您需要: 为 Python 3 安装和设置本地编程环境 安装 Node.js 并创建本地开发环境 警告:本教程中提供的代码用于教育目的,不适用于生产用途。 本教程已通过 Python pipv3.9.1 、v20.2.4、Django v3.1.6、djangorestframeworkv3.12.2、django-cors-headersv3.7.0、Node v15.8.0、npmv7.5.4、React v17.0.1 和axiosv0.21.0 验证。 第 1 ..

Read more

介绍 如果您处理多个 Node.js 项目,您可能会遇到过这样的情况。您已经安装了最新和最好的 Node.js 版本,并且您将要处理的项目需要旧版本。在这些情况下,节点版本管理器(nvm) 是一个很好的工具,它允许您安装多个版本的 Node.js 并根据需要在它们之间切换。 在本教程中,您将安装nvm并学习安装、删除和在不同版本的 Node.js 之间切换。 先决条件 要完成本教程,您将需要以下内容: 您的机器上安装了最新版本的 Node。要在 macOS 上安装 Node,请按照如何在 macOS上安装 Node.js 和创建本地开发环境教程中概述的步骤操作。 第 1 步 – 入门 要开始使用,您需要nvm在您的系统上安装 Node Version Manager 或。您可以通过运行以下命令手动安装它: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash 如果您愿意wget,可以运行以下命令: wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash 安装后,关闭您的终端应用程序以使更改生效。您还需要在 bash shell 启动文件中添加几行。此文件可能有名字.bashrc,.bash_profile或者.zshrc根据您的操作系统上。为此,请重新打开您的终端应用程序并运行以下命令: export NVM_DIR=”$HOME/.nvm” [ -s “$NVM_DIR/nvm.sh” ] && \. ..

Read more

Secure Shell(通常称为SSH)是一种加密网络协议,它允许用户通过不安全的网络从另一台计算机安全地访问一台计算机。 SSH 使用公钥加密来验证用户和机器;系统管理员会将必须访问远程计算机的任何用户的公钥添加到其文件系统中的特定位置。在类 Unix 系统上,授权的公钥通常存储在~/.ssh/authorized_keys文件中。任何提供与远程计算机上的公钥之一匹配的 SSH 私钥的用户都可以访问它。 有关 SSH 的更多教育资源,请访问我们关于如何设置 SSH 密钥和如何使用 SFTP 与远程服务器安全传输文件�..

Read more

该系列的一部分: 常见的 HAProxy 错误 本教程系列介绍了如何对您在使用HAProxy TCP 和 HTTP 代理服务器时可能遇到的一些最常见错误进行故障排除和修复。 本系列中的每个教程都包含对常见 HAProxy 配置、网络、文件系统或权限错误的描述。该系列首先概述了可用于对 HAProxy 进行故障排除的命令和日志文件。后续教程详细检查特定错误。 介绍 共有三个主要命令和一个通用日志位置,您可以使用它们开始对 HAProxy 错误进行故障排除。通常,当您对 HAProxy 进行故障排除时,您将按照此处指示的顺序使用这些命令,然后检查日志文件中的特定诊断数据。 您通常用于在大多数 Linux 发行版中对 HAProxy 进行故障排除的命令和日志是: systemctl– 用于通过systemd服务管理器控制 Linux 服务并与之交互。 journalctl– 用于查询和查看由systemd.生成的日志。 haproxy – 排查故障时,该命令用于检查HAProxy的配置。 /var/log/haproxy.log – 此文件包含来自 HAProxy 本身的日志条目,详细说明服务器正在处理的 TCP 和 HTTP 流量。 这些命令、如何使用它们以及您可以在其中找到有关错误的其他信息的 HAProxy 日志在以下部分中进行了更详细的描述。 systemctl HAProxy 命令 要使用systemd服务管理器解决常见的 HAProxy 错误,第一步是检查系统上 HAProxy 进程的状态。以下systemctl命令将查询systemd大多数 Linux ..

Read more

介绍 想知道如何在生成的 CSS 内容中插入特殊字符和符号?这篇文章将告诉你如何。 先决条件 HTML5 的一般知识。要全面了解 HTML5 标记语言,请浏览我们的系列“如何用 HTML 构建网站”。 在 CSS 中插入特殊字符 使用十六进制表示法而不是通常的 HTML 实体表示法在生成的 CSS 内容中插入特殊字符和符号。例如,©变成\\00a9: 这是另一个例子: .foo::before { content: “An ellipsis\2026”; } 备忘单和转换工具 这是一个很棒的备忘单,可以找到不同符号的 CSS 符号。 这是将HTML 实体转换为其 CSS 符号的工具。 结论 这就是在 CSS 中插入特殊字符和符号的方式。 要更全面地了解 HTML5 标记语言,请浏览我们的系列,如何用 HTML 构�..

Read more